본문 바로가기

DBMS/ORACLE

RECYCLEBIN(휴지통) 관리

반응형

관련 뷰

- USER_RECYCLE_BIN : 사용자 자신이 DROP한 오브젝트를 보기위한 뷰, recyclebin이라는 SYNONYM(동의어) 을 가진다

- DBA_RECYCLEBIN : 관리자가 DROP된 모든 오브젝트를 볼수 있다.

Recyclebin 오브젝트의 네이밍 규칙

 - Recylebin의 오브젝트이름은 동일 이름 충돌을 방지하기 위해 고유이름을 사용

BIN$unique_id$version   예) BIN$mbcG+39oA+7gVAgAJ+VJPA==$0

 

1. RECYCLEBIN 조회/활성화/비활성화

Syntax)

- 조회
select * from recyclebin ; 

- 활성화/비활성화(세션 레벨)
SQL> alter session set recyclebin=on ;
SQL> alter session set recyclebin=off ;

- 활성화(시스템 레벨)
SQL> show parameter recyclebin ;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
recyclebin                           string      OFF
SQL> alter system set recyclebin=on scope=spfile ;

시스템이 변경되었습니다.

SQL> shutdown immediate
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> startup
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area 3423965184 bytes
Fixed Size                  2215824 bytes
Variable Size            1862271088 bytes
Database Buffers         1543503872 bytes
Redo Buffers               15974400 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SQL> show parameter recyclebin ;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
recyclebin                           string      ON
SQL>

 예)

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
T1                             TABLE
T2                             TABLE

SQL> alter session set recyclebin=on ; => recyclebin 활성화

세션이 변경되었습니다. 

SQL> select * from recyclebin ; => recyclebin 조회

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

SQL> drop table t1 ;

테이블이 삭제되었습니다. 

SQL> select * from recyclebin ;      => 삭제된 T1 테이블을 recyclebin에서 확인 가능

OBJECT_NAME                    ORIGINAL_NAME                    OPERATION
------------------------------ -------------------------------- ---------
TYPE                      TS_NAME                        CREATETIME
------------------------- ------------------------------ -------------------
DROPTIME               DROPSCN PARTITION_NAME                   CAN CAN
------------------- ---------- -------------------------------- --- ---
   RELATED BASE_OBJECT PURGE_OBJECT      SPACE
---------- ----------- ------------ ----------
BIN$mbcG+39oA+7gVAgAJ+VJPA==$0 T1                               DROP
TABLE                     USERS                          2019-12-15:13:08:23
2019-12-15:13:09:19    1081338                                  YES YES
     74109       74109        74109          0


SQL> alter session set recyclebin=off ; => recyclebin 비활성화

세션이 변경되었습니다.

SQL> drop table t2 ;

테이블이 삭제되었습니다.

SQL> select * from recyclebin ; => 삭제된 T2 테이블이 recyclebin에 보관없이 바로 삭제됨

OBJECT_NAME                    ORIGINAL_NAME                    OPERATION
------------------------------ -------------------------------- ---------
TYPE                      TS_NAME                        CREATETIME
------------------------- ------------------------------ -------------------
DROPTIME               DROPSCN PARTITION_NAME                   CAN CAN
------------------- ---------- -------------------------------- --- ---
   RELATED BASE_OBJECT PURGE_OBJECT      SPACE
---------- ----------- ------------ ----------
BIN$mbcG+39oA+7gVAgAJ+VJPA==$0 T1                               DROP
TABLE                     USERS                          2019-12-15:13:08:23
2019-12-15:13:09:19    1081338                                  YES YES
     74109       74109        74109          0


SQL>


 

2. RECYCLEBIN OBJECT 조회/복구/삭제

 2.1 Recyclebin object 조회

SQL> select * from t1 ;

ID         NAME                        AGE
---------- -------------------- ----------
a          kim                          30
b          ryu                          29
c          bae                          20

SQL> drop table t1 ;

테이블이 삭제되었습니다..

SQL> select * from recyclebin ;

OBJECT_NAME                    ORIGINAL_NAME                    OPERATION
------------------------------ -------------------------------- ---------
TYPE                      TS_NAME                        CREATETIME
------------------------- ------------------------------ -------------------
DROPTIME               DROPSCN PARTITION_NAME                   CAN CAN
------------------- ---------- -------------------------------- --- ---
   RELATED BASE_OBJECT PURGE_OBJECT      SPACE
---------- ----------- ------------ ----------
BIN$mbxDY1GbBpDgVAgAJ+VJPA==$0 T1                               DROP
TABLE                     USERS                          2019-12-15:19:06:12
2019-12-15:19:07:32    1095319                                  YES YES
     74123       74123        74123          8


SQL>select * from "BIN$mbxDY1GbBpDgVAgAJ+VJPA==$0" ;  => Recyclebin 내의 오브젝트에 쿼리

ID         NAME                        AGE
---------- -------------------- ----------
a          kim                          30
b          ryu                          29
c          bae                          20

SQL>

2.2  Recyclebin 오브젝트 복구

복구 1) ORIGINAL NAME 으로 복구

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
BIN$mbxDY1GbBpDgVAgAJ+VJPA==$0 TABLE

SQL> FLASHBACK TABLE t1 TO BEFORE DROP RENAME TO t2 ;  => t1 테이블을 t2로 이름으로 복구

플래쉬백이 완료되었습니다. 

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
T2                             TABLE

SQL> select * from t2 ;

ID         NAME                        AGE
---------- -------------------- ----------
a          kim                          30
b          ryu                          29
c          bae                          20

SQL>

 복구 2) OBJECT_NAME으로 복구

SQL> select * from recyclebin ;

OBJECT_NAME                     ORIGINAL_NAME   OPERATION
------------------------------- --------------- ---------
TYPE                      TS_NAME                        CREATETIME
------------------------- ------------------------------ -------------------
DROPTIME               DROPSCN PARTITION_NAME                   CAN CAN
------------------- ---------- -------------------------------- --- ---
   RELATED BASE_OBJECT PURGE_OBJECT      SPACE
---------- ----------- ------------ ----------
BIN$mbxDY1GlBpDgVAgAJ+VJPA==$0  T1              DROP
TABLE                     USERS                          2019-12-15:19:31:35
2019-12-15:19:37:54    1096542                                  YES YES
     74126       74126        74126          8


SQL> FLASHBACK TABLE "BIN$mbxDY1GlBpDgVAgAJ+VJPA==$0" TO BEFORE DROP RENAME TO t2 ;
플래쉬백이 완료되었습니다. .

SQL> select * from t2 ;

ID         NAME                        AGE
---------- -------------------- ----------
a          aa                            1
b          bb                            2

SQL>

 복구3) Reyclebin에 ORIGINAL_NME에 동일한 이름을 가진 OBJECT가 2개 이상 있을 경우 가장 최근 DROP 시간의 오브젝트를 복구

SQL> create table t1 (name varchar2(10),age number(3)) ;

테이블이 생성되었습니다. 

SQL> insert into t1 values ('a',1);

1 개의 행이 만들어졌습니다. 

SQL> drop table t1 ;

테이블이 삭제되었습니다. 

SQL> create table t1 (id varchar2(10) not null,name varchar2(20),age number(3));

테이블이 생성되었습니다..

SQL> insert into t1 values ('a','aa',1) ;

1 개의 행이 만들어졌습니다. 

SQL> insert into t1 values ('b','bb',2) ;

1 개의 행이 만들어졌습니다. 

SQL> drop table t1 ;

1 개의 행이 만들어졌습니다. 

SQL> select * from recyclebin ;

OBJECT_NAME                    ORIGINAL_NAME                    OPERATION
------------------------------ -------------------------------- ---------
TYPE                      TS_NAME                        CREATETIME
------------------------- ------------------------------ -------------------
DROPTIME               DROPSCN PARTITION_NAME                   CAN CAN
------------------- ---------- -------------------------------- --- ---
   RELATED BASE_OBJECT PURGE_OBJECT      SPACE
---------- ----------- ------------ ----------
BIN$mbxDY1GjBpDgVAgAJ+VJPA==$0 T1                               DROP
TABLE                     USERS                          2019-12-15:19:31:35
2019-12-15:19:32:11    1096373                                  YES YES
     74126       74126        74126          8


OBJECT_NAME                    ORIGINAL_NAME                    OPERATION
------------------------------ -------------------------------- ---------
TYPE                      TS_NAME                        CREATETIME
------------------------- ------------------------------ -------------------
DROPTIME               DROPSCN PARTITION_NAME                   CAN CAN
------------------- ---------- -------------------------------- --- ---
   RELATED BASE_OBJECT PURGE_OBJECT      SPACE
---------- ----------- ------------ ----------
BIN$mbxDY1GhBpDgVAgAJ+VJPA==$0 T1                               DROP
TABLE                     USERS                          2019-12-15:19:30:23
2019-12-15:19:30:42    1096301                                  YES YES
     74125       74125        74125          8


SQL> FLASHBACK TABLE t1 TO BEFORE DROP ;

플래쉬백이 완료되었습니다..

SQL> select * from t1 ;      => DROPTIME 이 가장 최근인 오브젝트 복구

ID         NAME                        AGE
---------- -------------------- ----------
a          aa                            1
b          bb                            2

SQL>

2.3 Recyclebin 내의 오브젝트 삭제

SQL> select object_name,original_name,ts_name,droptime from recyclebin ;

OBJECT_NAME                     ORIGINAL_NAME   TS_NAME  DROPTIME
------------------------------- --------------- -------- -------------------
BIN$mbxDY1GrBpDgVAgAJ+VJPA==$0  T1              USERS    2019-12-15:20:39:19
BIN$mbxDY1GtBpDgVAgAJ+VJPA==$0  T1              USERS    2019-12-15:20:43:27

SQL> PURGE TABLE "BIN$mbxDY1GtBpDgVAgAJ+VJPA==$0" ;  => OBJECT_NAME 으로 삭제
테이블이 지워졌습니다. 
SQL> PURGE TABLE t1 ;    => ORIGINAL_NAME으로 삭제
테이블이 지워졌습니다.

SQL> PURGE TABLESPACE users ;   => user 테이블스페이스에 속하는 모든 object  삭제
테이블이 지워졌습니다.

SQL> PURGE TABLESPACE users  t1 ;  => user 테이블스페이스에  t1 테이블  삭제
테이블이 지워졌습니다.

 

반응형