2013-09-28 3 views
1

내가 업데이트하고, 삭제하고, 삽입하고 싶습니다. 커밋해야합니다. 대부분의 경우 도움이 되었기 때문에 실수로 잘못된 정보를 업데이트하거나 삭제할 수 있으며이를 취소 할 수 있습니다.DDL의 커밋과 비슷한 것이 있습니까?

열을 삭제할 때 커밋을 할 필요가 없습니다. 롤백 (플래시백이 아님)이있어 변경 사항을 빠르게 취소 할 수 있습니까? 긴 분석 후에도 컬럼을 떨어 뜨리면 테이블 (pk, fk)이 손상 될 수 있습니다.

오라클은 DML에 커밋을 제공했지만 DDL에 커밋을 제공하지 않은 이유는 무엇입니까?

+0

왜 플래시백하지 않습니까? 그것은 그것이하는 일 중 하나입니다. – Mat

+0

테이블에서 일부 ddl이 수행 된 경우 @Mat 플래시백이 작동하지 않습니다. –

+1

@beherenow : 플래시백 데이터베이스. – Mat

답변

6

오라클은 왜 DML에 커밋을 제공했지만 DDL에는 제공하지 않았습니까?

DDL 문을 실행하면 기본적으로 Oracle 데이터 사전에 대한 트랜잭션이 시작되며 오버 헤드를 제거하기 위해이 트랜잭션은 가능한 한 짧아야하며 가능한 한 빨리 적용해야합니다. 이 때문에 DDL 문은 DDL 문 앞에 이중 커밋을 수행 한 다음 문 바로 뒤에 (또는 무언가 잘못되었을 경우 롤백) 문을 수행합니다. 이 동작으로 인해 Oracle DDL은 트랜잭션 DDL이 아니며 명시 적으로 커밋하거나 롤백 할 수 없습니다. 그것은 그저 그렇습니다.

은 테이블을 떨어 뜨리면, 다음 10g부터 최대 오라클, 당신은 drop table 문을 실행 한 후 실 거예요 드롭하기 때문에, 오히려 그것을두고, 하나 개의 문장에 다시 얻을 수 flashback table 기술을 사용할 수있는, 그런 말로 미루어 보아, 휴지통 :

flashback table <<table_name>> to before drop 

불행하게도 당신이 플래시백 테이블을 사용할 수 없습니다 떨어 열이 늘 휴지통에 배치 할 수 있기 때문에 단순히 테이블의 삭제 된 열을 복원합니다. 전체 데이터베이스 또는 단일 테이블 공간의 특정 시점 복구를 수행하거나 논리 백업 (* .dmp 파일)이있는 경우 imp 또는 impdp 유틸리티를 사용하여 테이블을 복원하십시오.

관련 문제