2017-04-04 2 views
-1

오라클 DB를 세이브 포인트로 롤백 할 때 원래 세이브 포인트 다음에 표시된 세이브 포인트는 지워지지만 해당 세이브 포인트도 롤백했기 때문에 모든 커밋 된 트랜잭션이라고 이해합니다. 그것은 데이터베이스의 완전한 플래시백입니까? 나는 그것이라고 가정하고있다, 단지 명백하게하고 싶다. 많은 감사합니다.오라클 세이브 포인트

답변

1

트랜잭션을 커밋하면 그 이전의 모든 세이브 포인트가 무효화되므로 "해당 세이브 포인트 이후의 모든 커밋 된 트랜잭션 또한 롤백됩니다"는 실제로 의미가 없습니다. 절대 커밋을 롤백 할 수 없습니다.

From the docs : 다시 세이브 포인트 이후의 거래의 단지 부분을

  • 롤스 : 절을 SAVEPOINT에로 롤백 사용

    는 다음과 같은 작업을 수행합니다. 트랜잭션을 종료하지 않습니다.

  • 해당 세이브 포인트 이후에 작성된 모든 세이브 포인트를 지 웁니다. 명명 된 세이브 포인트는 유지되므로 동일한 세이브 포인트로 여러 번 롤백 할 수 있습니다. 이전 저장 점도 유지됩니다.

귀하의 질문에 "모든 거래"를 사용하는 것이 혼란 스럽습니다. 트랜잭션과 세이브 포인트는 단일 세션에만 적용됩니다. 다른 세션의 트랜잭션은 세션에서 수행하는 롤백의 영향을받지 않습니다.

세션을 세이브 포인트로 롤백하면 "원래 세이브 포인트 다음에 표시된 세이브 포인트"이 동일한 세션에 지워지므로 동일한 트랜잭션 내에 있습니다.. 다른 세션의 트랜잭션이나 세이브 포인트에 영향을주지 않으며 현재 트랜잭션은 여전히 ​​활성 상태입니다.

아니요, 데이터베이스의 완전한 플래시백이 아닙니다. Tools exist to do that이지만 세이브 포인트는 완전히 다른 것입니다.

Read more about transactions and savepoints.

+0

모든 것을 완벽하게 설명합니다. 고마워. – Franco