Database

[Oracle] 10G purge 휴지통 비우기/복원 기능

steloflute 2012. 9. 18. 14:23

http://blog.daum.net/99445015/25

 

[oracle@localhost /usr/lib/oracle/xe]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Jun 26 09:54:24 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn MONITOR/ahffk1029;
Connected.

SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
CPU_USER TABLE
GRAPH TABLE
HOSTINFO TABLE
PLAN_TABLE TABLE
SERVERINFO TABLE
SESSION_USER TABLE
TTT TABLE
BIN$bSXyAHGW3yzgQAB/AQAoOQ==$0 TABLE
CONNECTINFO TABLE
ALERTINFO TABLE

10 rows selected.

SQL> drop table 'BIN$bSXyAHGW3yzgQAB/AQAoOQ==$0'
2 ;
drop table 'BIN$bSXyAHGW3yzgQAB/AQAoOQ==$0'
*
ERROR at line 1:
ORA-00903: invalid table name

SQL> drop table 'BIN$bSXyAHGW3yzgQAB/AQAoOQ==$0' cascade constraints
2 ;
drop table 'BIN$bSXyAHGW3yzgQAB/AQAoOQ==$0' cascade constraints
*
ERROR at line 1:
ORA-00903: invalid table name

SQL> drop table 'BIN*'
; 2
drop table 'BIN*'
*
ERROR at line 1:
ORA-00903: invalid table name

SQL> purge recyclebin;
Recyclebin purged.

SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
CPU_USER TABLE
GRAPH TABLE
HOSTINFO TABLE
PLAN_TABLE TABLE
SERVERINFO TABLE
SESSION_USER TABLE
TTT TABLE
CONNECTINFO TABLE
ALERTINFO TABLE

9 rows selected.

SQL>

위의 실습을 보듯 Oracle 10G에는 휴지통 기능이 있다.

휴지통의 데이터 테이블은 'BIN$bSXyAHGW3yzgQAB/AQAoOQ==$0' 이다.

SQL> purge recyclebin => 이부분은 휴지통 비우기 명령어 이다.

휴지통(Recycle Bin)
오라클이 10g에서 새롭게 추가한 '휴지통' 이라는 기능.
테이블을 DROP 하더라도 언제던지 복원할 수 있게 하고자 하는 것이고요,
윈도우의 휴지통과 같다고 보시면 됩니다.

휴지통에 들은 테이블을 조회.
SQL> show recyclebin;

휴지통의 모든 내용이 비워집니다.
SQL> purge recyclebin;

삭제된 테이블을 되살리고 싶다면
SQL> flashback table 테이블명 to before drop;

만약, 특정 테이블을 휴지통에 남기지 않고 모두 삭제하려면..
SQL> drop table 테이블명 purge;

purge문 없이 그냥 drop 한 후에는
SQL> purge table 테이블명;


 


 

-- user 단위 휴지통 비우기
purge recyclebin;

 

-- 테이블별

purge table (schema)."BIN$..";

 

-- sys 계정으로 DB 전체 휴지통 비우기

purge dba_recyclebin;