***************************************************
날짜 : 2008년 4월 15일 화요일
제목 : Flashback Serise ② Flashback drop
기능 : 이미 drop 명령에 의하여 제거된 테이블 복구 기능
***************************************************
※ 이 과정은 hr 사용자로 테스트를 합니다
hr 계정이 잠기신 분들은 lock을 해제해 주세요
또한 오라클에서 제공하는 sample이 있어야 합니다(설치시 체크)
SQL> ALTER USER hr ACCOUNT UNLOCK;
※ 참고서적 : Oracle 10g 서브 노트
※ 테스트 환경 : Oracle 11g
개요
Oracle 10g에서 새롭게 소개된 "휴지통(recyclebin)"
Windows의 휴지통과 같다고 보면 쉽겠다
Table drop을 하게 되면 "휴지통"으로 이동된다
휴지통이 purge 되기 전까지는 언제든지 Flashback drop으로 테이블을 복구 가능하다
=====================================================
※ 휴지통 purge 시키는 방법
1. 휴지통(recyclebin) 조회
SQL>select * from user_recyclebin;
SQL> select * from dba_recyclebin;
2. 휴지통(recyclebin) 비우기
SQL> purge recyclebin; // 사용자의 휴지통 비우기
SQL> purge dba_recyclebin; // 휴지통 내 모두 비우기
SQL> purge tablespace users; //users 테이블 스페이스의 휴지통 비우기
SQL> purge table "휴지통내의 이름" // 휴지통 내의 하나의 Table만 제거시
※ 휴지통(recyclebin)에 넣지 않고 drop 시키기
SQL> drop table 테이블명 purge;
Windows의 휴지통과 같다고 보면 쉽겠다
Table drop을 하게 되면 "휴지통"으로 이동된다
휴지통이 purge 되기 전까지는 언제든지 Flashback drop으로 테이블을 복구 가능하다
=====================================================
※ 휴지통 purge 시키는 방법
1. 휴지통(recyclebin) 조회
SQL>select * from user_recyclebin;
SQL> select * from dba_recyclebin;
2. 휴지통(recyclebin) 비우기
SQL> purge recyclebin; // 사용자의 휴지통 비우기
SQL> purge dba_recyclebin; // 휴지통 내 모두 비우기
SQL> purge tablespace users; //users 테이블 스페이스의 휴지통 비우기
SQL> purge table "휴지통내의 이름" // 휴지통 내의 하나의 Table만 제거시
※ 휴지통(recyclebin)에 넣지 않고 drop 시키기
SQL> drop table 테이블명 purge;
1. Table 삭제
SQL> drop table employees;
※ ORA-02449 : 외래 키에 의해 참조되는 고유/기본 키가 테이블에 있습니다.
ORA-02449 : unique/primary keys in table referenced by foreign keys.
의 error가 발생할 경우
SQL> drop table employees cascade constraints;
※ ORA-02449 : 외래 키에 의해 참조되는 고유/기본 키가 테이블에 있습니다.
ORA-02449 : unique/primary keys in table referenced by foreign keys.
의 error가 발생할 경우
SQL> drop table employees cascade constraints;
2. hr 사용자의 Table List
SQL> select table_name from user_tables;
Oracle 10g에서는 위의 조회문을 사용하면 휴지통의 Table도 같이 조회가 되었는데
Oracle 11g에서는 수정된 듯 하다
Oracle 10g에서는 위의 조회문을 사용하면 휴지통의 Table도 같이 조회가 되었는데
Oracle 11g에서는 수정된 듯 하다
3. 현재 휴지통에 저장되어 있는 테이블의 정보 확인
SQL> select object_name, original_name, type from user_recyclebin;
ex)
OBJECT_NAME ORIGINAL_NAME TYPE
---------------------------------------------------------- -------------------------- ----------
BIN$FfXvVBm/TamPdfTV8utKWg==$0 EMPLOYEES TABLE
와 함께
EMPLOYEES에 포함되었던 TRIGGER도 함께 표시된다
EMPLOYEES Table만 복구하면 함께 복구되니 신경쓰지 않아도 된다
ex)
OBJECT_NAME ORIGINAL_NAME TYPE
---------------------------------------------------------- -------------------------- ----------
BIN$FfXvVBm/TamPdfTV8utKWg==$0 EMPLOYEES TABLE
와 함께
EMPLOYEES에 포함되었던 TRIGGER도 함께 표시된다
EMPLOYEES Table만 복구하면 함께 복구되니 신경쓰지 않아도 된다
4. 복구
SQL> flashback table EMPLOYEES to before drop;
5. 복구 확인
휴지통 확인
SQL> select object_name, original_name, type from user_recyclebin;
테이블 확인
SQL> select table_name from user_tables;
SQL> select object_name, original_name, type from user_recyclebin;
테이블 확인
SQL> select table_name from user_tables;
※ 주의 사항
위에서 말했듯이 휴지통에 저장되어 있던 테이블들이 원상태로 복구하게 되면
그 테이블에 대한 인덱스들(비트맵 조인 인덱스 제외), 트리거, 그리고 제한조건들도
함께 복구된다
그 테이블에 대한 인덱스들(비트맵 조인 인덱스 제외), 트리거, 그리고 제한조건들도
함께 복구된다
이올린에 북마크하기