반응형
참조: 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)
오라클 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)