02.Oracle/DataBase2009. 4. 18. 12:00
반응형
참조: http://www.orafaq.com/articles/archives/000038.htm

오라클 10g부터 '휴지통(recyclebin)'이라는 것이 존재한다.
이전 버전에서 drop명령이 해당 객체를 바로 삭제한 것에 반해, 이제는 삭제된 객체들는 휴지통에 들어가게 된다.
따라서, 휴지통에 들어있는 객체들은 어느때나 다시 복구될 수 있다.
이를 Flashback Drop이라 하는데, 이제 더이상 point-in-time recovery는 필요없게 될 것이다.

휴지통: drop된 DB객체들을 아래의 상황이전까지 보유한다.
- purse명령으로 영구히 삭제
- undrop명령으로 drop된 객체를 복구
- 테이블스페이스내 (휴지통의) 공간이 부족할때
- 테이블스페이스가 extend될때

휴지통에 들어있는 객체들 보기
user_recyclebin
dba_recyclebin

휴지통 비우기
purge recyclebin;                       사용자의 휴지통 비우기
purge dba_recyclebin;                   휴지통내의 모든 놈들 비우기
purge tablespace users;                 users테이블스페이스의 휴지통 비우기
*purge table "휴지통내의 이름"        휴지통의 하나의 객체만 제거시


휴지통의 객체 복구
flashback table 휴지통내의 이름 to before drop;

휴지통에 넣지 않고 drop
drop table 테이블명 purge;


만일 휴지통에 들어있는 객체에 대해 drop을 수행하면 아래와 같은 에러를 뱉는다.
SQL> drop table "BIN$biebYQhZRLmp9LlnMAD1VQ==$0";
drop table "BIN$biebYQhZRLmp9LlnMAD1VQ==$0"
           *
1행에 오류:
ORA-38301: 휴지통에 있는 객체에 대해 DDL/DML을 수행할 수 없음



[실전연습]
SQL> create table aa(aa integer);
SQL> drop table aa;
SQL> select * from tab;
TNAME                                    TABTYPE         CLUSTERID
---------------------------------------- -------------- ----------
BIN$biebYQhZRLmp9LlnMAD1VQ==$0           TABLE

SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
AA               BIN$biebYQhZRLmp9LlnMAD1VQ==$0 TABLE        2004-11-23:18:13:00

SQL> purge recyclebin;
SQL> show recyclebin
SQL> select * from tab;

선택된 레코드가 없습니다.


휴지통에 존재하는 객체를 제거
SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
AA               BIN$dm+wnjtVQye0d09bCvzHbw==$0 TABLE        2004-11-23:18:34:16

SQL> purge table "BIN$dm+wnjtVQye0d09bCvzHbw==$0";
테이블이 지워졌습니다.


휴지통내의 객체 복구
SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
AA               BIN$VPaE9OG4Qwa+KC0MesYKqw==$0 TABLE        2004-11-23:18:49:00

SQL> flashback table "BIN$VPaE9OG4Qwa+KC0MesYKqw==$0" to before drop;
플래시백이 완료되었습니다.

SQL> select * from tab;
TNAME                                    TABTYPE         CLUSTERID
---------------------------------------- -------------- ----------
AA                                       TABLE

This article comes from dbakorea.pe.kr 강명규 (Leave this line as is)
Posted by 1010