## DROP TABLE .. PURGE
10G 부터 제공되는 쓰레기통 기능으로 DROP 된 SEGMENT 가
이상한이름으로 생성되는것을 방지 하려면 뒤에 PURGE 를 써준다.
DROP TABLE CHECK_NVL PURGE ;
## 휴지통 완전 비우기
USER 의 경우
PURGE USER_RECYCLEBIN ;
DBA 의 경우
PURGE DBA_RECYCLEBIN ;
## ALTER TABLE .. MOVE
$$$$$$$$####################################$$$$$$$$$$$$$$$$$$$$$$$
상기는 TABLESPACE 이고, $ 가 데이타 있음, # 이 데이타 비였음 ( DROP 등에 의해서)
일 경우 DATA FILE RESIZE 를 하여도 실제 데이타 화일의 끝에를 사용 중이라
불가능하다, 이 경우 해당 TABLESPACE 에 존재하는 TABLE, INDEX 등을 ( BLOCK_ID 가 가장 높은 순서로)
ALTER TABLE CHECK_INDEX_ST MOVE TABLESPACE USER_DATA ;
MOVE TABLESPACE 현재테이블스페이스를 실행 하면
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#############################
이런식으로 변경할 수 있고 ,결과적으로 RESIZE 가 가능해진다.
2008.12.10 ADD-ON
휴지통이 재사용되는 경우
OBJECTS IN THE RECYCLE BIN WILL BE AUTOMATICALLY PURGED BY THE SPACE RECLAMATION PROCESS IF
O A USER CREATES A NEW TABLE OR ADDS DATA THAT CAUSES THEIR QUOTA TO BE EXCEEDED.
O THE TABLESPACE NEEDS TO EXTEND ITS FILE SIZE TO ACCOMMODATE CREATE/INSERT OPERATIONS.
THERE IS NO ISSUES WITH DROPPING THE TABLE, BEHAVIOUR WISE. IT IS THE SAME AS IN 8I / 9I.
THE SPACE IS NOT RELEASED IMMEDIATELY AND IS ACCOUNTED FOR WITHIN THE SAME TABLESPACE / SCHEMA AFTER THE DROP.
WHEN WE DROP A TABLESPACE OR A USER THERE IS NO RECYCLING OF THE OBJECTS.
O RECYCLEBIN DOES NOT WORK FOR SYS OBJECTS
==> SYS OBJECT 에 대해서는 휴지통이 작동 하지 않는다. 주의 !!!
SYS> SELECT * FROM USER_RECYCLEBIN;
선택된 레코드가 없습니다.
SYS>DROP TABLE CHECK_SYS_BIN ;
테이블이 삭제되었습니다.
SYS>SELECT * FROM USER_RECYCLEBIN ;
선택된 레코드가 없습니다.
==> SYS 의 OBJECT는 DROP 해도 휴지통에 쌓이지 않는다 .
SYS> CONN SCOTT/TIGER
연결되었습니다.
SCOTT> CREATE TABLE TEST_TABLE ( A1 VARCHAR2(10) ,A2 VARCHAR2(10) ) ;
테이블이 생성되엇습니다.
SCOTT> SELECT * FROM TEST_TABLE;
선택된 레코드가 없습니다.
SCOTT>DROP TABLE TEST_TABLE;
테이블이 삭제되었습니다.
SQL> SELECT * FROM USER_RECYCLEBIN ;
==>
OBJECT_NAME ORIGINAL_NAME OPERATION
------------------------------ -------------------------------- ---------
TYPE DROPSCN DROPTIME
------------------------- ---------- -------------------
BIN$LWZMR8JLSMQILPK3V2ZUIA==$0 TEST_TABLE DROP
TABLE 9.1063E+12 2008-12-10:09:21:49
==> 일반 유저의 테이블은 DROP 하면 자동으로 휴지통에 쌓이게 된다.
SQL>PURGE TABLE TEST_TABLE ;
테이블이 지워졌습니다.(PURGED)
SQL> SELECT * FROM USER_RECYCLEBIN ;
SQL>SHOW RECYCLEBIN
==> 휴지통 보기
SYS>PURGE RECYCLEBIN ;
휴지통이 지워졌습니다.
==> 휴지통 비우기
SQL>PURGE DBA_RECYCLEBIN ;
DBA RECYCLEBIN PURGED.
SYS>PURGE TABLESPACE USERS ;
테이블스페이스가 지워졌습니다.(PURGED)
==> 특정 테이블스페이스의 휴지통 비우기
SQL>PURGE TABLESPACE USERS USER SCOTT ;
테이블스페이스가 지워졋습니다.
==> 특정 테이블스페이스의 특정 유저의 휴지통 비우기
!! 휴지통 기능 끄기 !!
웬만하면 놔두자 ㅇ.ㅇ
ON 10GR1, IN CASE WE WANT TO DISABLE THE BEHAVIOR OF RECYCLING, THERE IS AN UNDERSCORE PARAMETER
"_RECYCLEBIN" WHICH DEFAULTS TO TRUE. WE CAN DISABLE RECYCLEBIN BY SETTING IT TO FALSE.
SYS>COL KSPPINM FORMAT A30
SYS>COL KSPPSTVL FORMAT A30
SYS>COL KSPPSTDF FORMAT A30
SYS>SET LINESIZE 150
SYS> SELECT A.KSPPINM, B.KSPPSTVL, B.KSPPSTDF
FROM X$KSPPI A, X$KSPPCV B
WHERE A.INDX = B.INDX
AND A.KSPPINM LIKE '%RECYCLE%'
ORDER BY A.KSPPINM ;
KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
_DB_PERCENT_HOT_RECYCLE 0 TRUE
_RECYCLEBIN TRUE TRUE
BUFFER_POOL_RECYCLE TRUE
DB_RECYCLE_CACHE_SIZE 0 TRUE
SQL>ALTER SYSTEM SET "_RECYCLEBIN"=FALSE SCOPE = BOTH;
SYSTEM ALTERED.
SQL> SELECT A.KSPPINM, B.KSPPSTVL, B.KSPPSTDF
FROM X$KSPPI A, X$KSPPCV B
WHERE A.INDX = B.INDX
AND A.KSPPINM LIKE '%RECYCLE%'
ORDER BY A.KSPPINM ;
SPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
_DB_PERCENT_HOT_RECYCLE 0 TRUE
_RECYCLEBIN FALSE TRUE
BUFFER_POOL_RECYCLE TRUE
DB_RECYCLE_CACHE_SIZE 0 TRUE
SQL>CONN SCOTT/TIGER
연결되었습니다.
SQL>CREATE TABLE TEST_TABLE ( A1 VAHRCHAR2(10) ,A2 VARCHAR2(10) ) ;
테이블이 생성되었습니다.
SCOTT>SELECT * FROM USER_RECYCLEBIN;
선택된 레코드가 없습니다.
SQL>DROP TABLE TEST_TABLE ;
테이블이 삭제되었습니다.
SQL>SELECT * FROM USER_RECYCLEBIN ;
선택된 레코드가 없습니다.
ON 10GR2 RECYCLEBIN IS A INITIALIZATION PARAMETER AND BYDEFAULT ITS ON.
WE CAN DISABLE RECYCLEBIN BY USING THE FOLLOWING COMMANDS:
SQL> ALTER SESSION SET RECYCLEBIN = OFF;
SQL> ALTER SYSTEM SET RECYCLEBIN = OFF;
==> !! 주의 10G(R2) 에서만 작동 된다. !!
SQL> ALTER SYSTEM SET RECYCLEBIN = ON ;
## 쓰레기통에서 복구 하기
# DROP
SQL> DROP TABLE EMP;
테이블이 삭제되었습니다.
# 원래 이름으로 원복
SQL>FLASHBACK TABLE EMP TO BEFORE DROP;
플래시백이 완료되었습니다.
# DROP
SQL>DROP TABLE EMP ;
테이블이 삭제되었습니다.
# 다른 이름으로 복구
SQL>FLASHBACK TABLE EMP TO BEFORE DROP RENAME TO EMPLOYEES;
플래시백이 완료되었습니다.
이리저리 짜집어서 정리를 하다보니 @_@ 하네..
'Oracle' 카테고리의 다른 글
오라클 숫자 or 문자 확인. 필터링 함수(translate) (0) | 2012.10.11 |
---|---|
explain plan. plan table 생성 및 실행계획 확인법 (0) | 2011.04.27 |
자주 참조하는 DB dictionary (0) | 2010.07.02 |
HWM (0) | 2009.10.18 |
현재 날짜 가져오기! (1) | 2009.10.18 |