[오라클] 트랜잭션 ( commit / rollback )

TRANSACTION

- DB의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위를 의미

 

트랜잭션 성질

1. 원자성
▶ 트랜잭션이 데이터베이스에 모두 반영되던가 아니면 전혀 반영되지 않아야 한다.

2. 일관성
트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다.

3. 독립성
둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 다른 트랜잭션의 연산에 끼어들 수 없다.

4. 지속성
트랜잭션이 성공적으로 완료됐을 경우, 결과는 영구적으로 반영되어야 한다.

 

트랜잭션 상태도

 

 

commit

1. 데이터베이스에서 활동(작업)

2. 성공적으로 수행하면 부분적완료

3. commit시 완료

rollback

1. 활동(작업)

2. 실패시 rollback

3. 부분적완료후에도 rollback 하면 철회

 

 

TCL 명령어 ( Transaction Control Language )

 

1. COMMIT 명령

 

앞서 공부했던 DML 명령어를 이용해 값을 추가, 변경하는것은 논리적인(?) 임시저장소에 저장이 되게 된다.
그래서 아무리 추가,변경,삭제를 해도 물리적으로 저장을 하지 않고 껏다키거나 새로운 세션을 키면 작업한 내용이
나오지 않는다.

그때 COMMIT을 사용하면 작업한 내용에 대해 아무런 오류가 없다고 판단이 될 시 실제 물리적인 장소에 저장이 되게 된다.

확인 하기 위해서 두개의 세션을 준비해보았다.


위 사진에서 insert명령어로 값추가, select로 확인해 봤더니 제대로 들어간것을 확인했다.

 


근데 developer를 새로 실행시켜서 select 명령어를 똑같이 실행시켰지만 아무 값도 보이지 않는것을 볼 수 있다.

 


다시 작업한 세션에서 commit; 명령어를 실행하고 두번째 세션에서 봐보자.

 

아까와는 달리 다른 세션에서도 확인되는 것을 볼 수 있다.

 

2. ROLLBACK 명령


rollback명령어는 commit을 실행하기전에 작업했던 내용을 되돌리게 된다. 

rollback; 을 입력해주면 된다. 주의 할 점은 commit을 입력한 후에는 rollback으로 되돌릴 수 없다.

 

COMMIT이후 데이터 복구

commit이후 데이터 복구하는 방법은  COMMIT을 입력한 후부터 완전 삭제 될때까지의 시간을 설정해줄 수 있는 속성들이 있다. 그 시간은 '초' 단위로 저장이 되어 있고 그 설정값을 변경하거나 할 수있다.  그럼 명령어를 사용해서 삭제,변경된 데이터들의 값을 찾아서 조회 할 수있고 복구하는 방법은 복사를 하거나, 직접 등록해주면 된다. 사용하는 방법은 나중에 정리해보도록 하겠다.

 

 

3. CHECKPOINT

ROLLBACK명령시 복귀지점을 설정한다.

 

댓글

Designed by JB FACTORY