DROP TABLE로 테이블을 삭제하면 복구가 불가능하지만 10g 에서는 Flashback Table이라고 해서 drop 시켜도 백업되어서 남아있게 된다.
drop table Users ;
을 할 경우 지워진 테이블의 데이터가 임시로 저장된다.
지워진 Users 테이블을 다시 복구하려면
을 입력한다. 만일 백업 테이블의 원래 테이블 이름이 생각나지 않을 경우
으로 백업 테이블의 원래 테이블 이름을 확인할 수 있다.
플레쉬 테이블(백업 테이블)을 삭제할 때는
으로 삭제할 수 있다.(이름이 복잡해서
drop 할 때 백업을 남겨두지 않으려면
로 입력한다.
예제)) 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>
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 |