hyeonga_code
Database_53_SQL 테이블 삭제, 휴지통_DROP TABLE, RECYCLE BIN 본문
![](https://blog.kakaocdn.net/dn/0rd6k/btsqD5ni8Is/BN1LN7TXFwF9SzJ9LwZrK0/img.jpg)
-- DROP TABLE
/*
DROP TABLE table [PURGE];
*/
-- 테이블의 모든 데이터와 구조를 삭제하는 명령입니다.
-- 테이블과 연관된 인덱스도 모두 삭제됩니다.
-- 테이블과 연관된 뷰와 동의어는 사용불가 상태로 유지됩니다.
-- 해당 테이블을 소유하고 있거나 높은 레벨의 권한이 있는 경우 테이블 제거가 가능합니다.
-- 자동으로 커밋되므로 ROLLBACK은 불가합니다.
-- PURGE 옵션을 사용하지 않은 경우 FLASHBACK이 가능합니다.
-- PURGE : 휴지통에 저장되지 않습니다.
-- RECYCLE BIN_휴지통
-- 삭제된 테이블에 대한 휴지통이 제공됩니다.
-- FLASHBACK 명령문으로 삭제된 테이블을 휴지통으로부터 복원이 가능합니다.
-- 실수로 잘못 삭제한 테이블을 쉽고 빠르게 복원할 수 있습니다.
-- 휴지통에 보관되는 테이터의 용량은 사용하지 않는 공간으로 취급됩니다.
-- 제약 없이 파일이 지워지지 않습니다.
-- BIN$~로 시작하는 이름으로 RENAME 하여 보관하는 형식입니다.
-- 실제로 비어있는 공간부터 사용하며 더 이상 공간이 없는 경우 가장 오래된 휴지통의 데이터 공간부터 덮어 씌우며 사용하게 됩니다.
-- 고려사항
-- DROP TABLE 명령문 작성 시 PURGE 옵션을 사용하는 경우 테이블은 휴지통에 저장되지 않습니다.
-- 사용자는 휴지통 객체가 존재한다면 언제라도 해당 테이블을 복원할 수 있습니다.
-- 테이블이 존재하는지 확인합니다.
SELECT * FROM dept80;
![](https://blog.kakaocdn.net/dn/HH6jI/btspOCUVETJ/WgQ7xx8Mj48EXkoEZ3HGRK/img.png)
-- 테이블을 삭제합니다.
DROP TABLE dept80;
/*
Table DEPT80이(가) 삭제되었습니다.
-- 테이블 목록에 존재하지 않습니다.
-- 휴지통 안에 있는 것을 확인할 수 있습니다.
*/
-- 휴지통에 들어있는 데이터를 확인합니다.
SHOW RECYCLEBIN;
![](https://blog.kakaocdn.net/dn/b7miRk/btspFLk5lDt/ff6Jo7sLfSYxLN94hkvohk/img.png)
-- 휴지통에 버려진 테이블을 복구합니다.
FLASHBACK TABLE dept80 TO BEFORE DROP;
/*
Flashback을(를) 성공했습니다.
*/
-- 테이블이 존재하는지 확인합니다.
SELECT * FROM dept80;
![](https://blog.kakaocdn.net/dn/KurCE/btspK2NIZY4/saxrSlopINZs3subgpyfXk/img.png)
-- 휴지통에 있는 데이터를 출력합니다.
SHOW RECYCLEBIN;
-- 조회되는 데이터가 없습니다.
-- 대용량 데이터로 해보기
-- 대용량 테이블 생성
DROP TABLE bigemp purge
/
CREATE TABLE bigemp AS SELECT * FROM empl_demo
/
ALTER TABLE bigemp MODIFY (employee_id NUMBER)
/
DECLARE
n NUMBER;
BEGIN
FOR n IN 1..12
LOOP
INSERT INTO bigemp SELECT * FROM bigemp;
END LOOP;
COMMIT;
END;
/
SELECT MIN(employee_id), MAX(employee_id), COUNT(*) FROM bigemp
/
/*
명령의 1 행에서 시작하는 중 오류 발생 -
DROP TABLE bigemp purge
오류 보고 -
ORA-00942: table or view does not exist
00942. 00000 - "table or view does not exist"
*Cause:
*Action:
Table BIGEMP이(가) 생성되었습니다.
Table BIGEMP이(가) 변경되었습니다.
PL/SQL 프로시저가 성공적으로 완료되었습니다.
MIN(EMPLOYEE_ID) MAX(EMPLOYEE_ID) COUNT(*)
---------------- ---------------- ----------
100 206 438272
*/
-- 테이블 삭제
DROP TABLE bigemp;
/*
Table BIGEMP이(가) 삭제되었습니다.
*/
-- 휴지통 확인
SHOW RECYCLEBIN;
/*
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------------------------------------------------------------------------------------------------------------------
BIGEMP BIN$DoQVMjIUQiKoN1XyA2yCjg==$0 TABLE 2023-08-03:11:13:36
*/
-- 테이블 복구
FLASHBACK TABLE bigemp TO BEFORE DROP;
/*
Flashback을(를) 성공했습니다.
*/
-- 테이블을 삭제하고 복구하는 과정에 시간이 지체되지 않습니다.
-- 휴지통은 RENAME과 같은 기능입니다.
-- 휴지통에서 데이터 삭제
PURGE RECYCLEBIN;
/*
RECYCLEBIN이(가) 비워졌습니다.
*/
-- 휴지통 확인
SHOW RECYCLEBIN;
-- 테이블 복구
FLASHBACK TABLE bigemp TO BEFORE DROP;
/*
<오류>----------------------------------------------------------------------
오류 보고 -
ORA-38305: object not in RECYCLE BIN
38305. 00000 - "object not in RECYCLE BIN"
*Cause: Trying to Flashback Drop an object which is not in RecycleBin.
*Action: Only the objects in RecycleBin can be Flashback Dropped.
------------------------------------------------------------------------------
*/
'Oracle Database' 카테고리의 다른 글
Database_55_SQL 데이터베이스 객체 (0) | 2023.08.11 |
---|---|
Database_54_SQL 제약 조건_Constraint( Not null, Unique, Primary Key, Foreign Key, Check) (0) | 2023.08.10 |
Database_52_SQL 테이블 수정_ALTER TABLE (0) | 2023.08.08 |
Database_51_SQL 오라클 데이터 유형, 테이블 생성_숫자, 날짜, 문자, 이진 (0) | 2023.08.07 |
Database_50_SQL 테이블 생성과 관리_테이블 유형, 구조, 딕셔너리 뷰, 데이터베이스 객체 (0) | 2023.08.07 |