DROP TABLE로 테이블을 삭제하면 복구가 불가능하지만 10g 에서는 Flashback Table이라고 해서 drop 시켜도 백업되어서 남아있게 된다.

drop table Users ;

을 할 경우 지워진 테이블의 데이터가 임시로 저장된다.


지워진 Users 테이블을 다시 복구하려면

FLASHBACK TABLE <table_name> TO BEFORE DROP;


을 입력한다. 만일 백업 테이블의 원래 테이블 이름이 생각나지 않을 경우

show recyclebin;

으로 백업 테이블의 원래 테이블 이름을 확인할 수 있다.

플레쉬 테이블(백업 테이블)을 삭제할 때는

PURGE TABLE "<flashback_table_name>" ;

으로 삭제할 수 있다.(이름이 복잡해서

drop 할 때 백업을 남겨두지 않으려면

DROP TABLE Users  PURGE;

로 입력한다.

예제)) Users 테이블을 만든 후 drop을 하고 다시 복구한 후 영구 삭제하는 과정.

SQL> create table Users(
  2  userId char(12) constraint users_userId_pk PRIMARY KEY,
  3  userName varchar(64) not null
  4  );

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

SQL> select * from tab;

TNAME                        TABTYPE    CLUSTERID
-------------------------- ------------   ----------
DEPT                           TABLE
EMP                             TABLE
BONUS                         TABLE
SALGRADE                    TABLE
OPINIONS                    TABLE
USERS                          TABLE

6 개의 행이 선택되었습니다.

SQL> insert into Users values ('user00000001', 'jack johnson');

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

SQL> select * from users;

USERID               USERNAME
--------------------  ---------------------
user00000001    jack johnson

SQL> drop table users;

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

SQL> select * from tab;

TNAME                                                                     TABTYPE  CLUSTERID
--------------------------------------------------------------  -----------  ----------
DEPT                                                                        TABLE
EMP                                                                         TABLE
BONUS                                                                     TABLE
SALGRADE                                                                TABLE
OPINIONS                                                                TABLE
BIN$oatOIa4PQlOOOH5+AYZoDw==$0 TABLE  Usres 가 백업된 상태

6 개의 행이 선택되었습니다.

SQL> show recyclebin;
ORIGINAL NAME  RECYCLEBIN NAME                     OBJECT TYPE  DROP TIME
----------------       ------------------------                     --------         -------------------
USERS      BIN$oatOIa4PQlOOOH5+AYZoDw==$0 TABLE          2008-07-07:23:13:54

SQL> FLASHBACK TABLE users TO BEFORE DROP;

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

SQL> SELECT * FROM users;

USERID               USERNAME
------------           ---------------------------------------
user00000001   jack johnson

SQL> DROP TABLE users PURGE; (플래시 테이블을 남기지 않는다)

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

SQL> select * from tab;

TNAME                   TABTYPE     CLUSTERID
-------------------      -----------    ----------
DEPT                     TABLE
EMP                      TABLE
BONUS                 TABLE
SALGRADE            TABLE
OPINIONS            TABLE

SQL>

'Dev > DB' 카테고리의 다른 글

[MariaDB][MySQL] /*!40100 DEFAULT CHARACTER SET utf8 */  (1) 2014.06.14
오라클에서 특정 계정 풀기  (0) 2008.07.21
DBA로 iSQL*Plus 실행하기...  (0) 2008.06.28
Posted by yeori
,