'10g 휴지통'에 해당되는 글 1건

  1. 2006.10.09 10g 휴지통 기능

2006. 10. 9. 21:26 오라클

10g 휴지통 기능




10g 부터 휴지통 기능이 생겼다. 뭐 원도우 바탕화면 휴지통이랑 같다고 생각하면 된다. 해당 객체를 삭제시 바로 안 없어지고 휴지통에 들어가 계신다. 필요할 때 뒤져서 쓰면 되는 것이다.
나름대로 필요한 기능인거 같기도 하고, 쓰잘때기 없는 기능 같기도 하고..
근데 아직도 10g에 익숙하지 않은 사람들이 많아 불편해 하는 기능인거 같다. (조회해 보면 table 이름이 막 지저분하게 나오니깐 안 좋아하는거 같다. ㅋ)

그럼 일단 휴지통 기능을 enable/disable 하는 방법은..

* 10g Release1 의 경우
- 아래와 같은 쿼리로 "_recyclebin" parameter 가 어찌 셋팅되어 있는지 조회한다.

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;

값이 true 이면 false 로 만들어 버리자.

SQL> ALTER SYSTEM SET "_recyclebin"=FALSE SCOPE = BOTH;

* 10g Release2 의 경우
- R2는 default 값이 ON 이므로 OFF 로 만들어 버린다.

SQL> ALTER SESSION SET recyclebin = OFF;
SQL> ALTER SYSTEM SET recyclebin = OFF;

==================================================================================
휴지통: drop된 DB객체들을 아래의 상황이전까지 보유한다.
- purge명령으로 영구히 삭제
- undrop명령으로 drop된 객체를 복구
- 테이블스페이스내 (휴지통의) 공간이 부족할때
- 테이블스페이스가 extend될때

* 휴지통에 들어있는 객체들 보기
user_recyclebin
dba_recyclebin

* 휴지통 비우기
SQL> purge recyclebin;             사용자의 휴지통 비우기
SQL> purge dba_recyclebin;      휴지통내의 모든 놈들 비우기
SQL> purge tablespace users;   users테이블스페이스의 휴지통 비우기
*purge table "휴지통내의 이름"    휴지통의 하나의 객체만 제거시


* 휴지통의 객체 복구
SQL> flashback table 휴지통내의 이름 to before drop;

* 휴지통에 넣지 않고 drop
SQL> drop table 테이블명 purge;


* 만일 휴지통에 들어있는 객체에 대해 drop을 수행하면 아래와 같은 에러를 뱉는다.
SQL> drop table "BIN$biebYQhZRLmp9LlnMAD1VQ==$0";
drop table "BIN$biebYQhZRLmp9LlnMAD1VQ==$0"
          *
1행에 오류:
ORA-38301: 휴지통에 있는 객체에 대해 DDL/DML을 수행할 수 없음

[실전연습]
SQL> create table aa(aa integer);
SQL> drop table aa;
SQL> select * from tab;
TNAME                                    TABTYPE         CLUSTERID
---------------------------------------- -------------- ----------
BIN$biebYQhZRLmp9LlnMAD1VQ==$0           TABLE

SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
AA               BIN$biebYQhZRLmp9LlnMAD1VQ==$0 TABLE        2004-11-23:18:13:00

SQL> purge recyclebin;
SQL> show recyclebin
SQL> select * from tab;

선택된 레코드가 없습니다.


휴지통에 존재하는 객체를 제거
SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
AA               BIN$dm+wnjtVQye0d09bCvzHbw==$0 TABLE        2004-11-23:18:34:16

SQL> purge table "BIN$dm+wnjtVQye0d09bCvzHbw==$0";
테이블이 지워졌습니다.


휴지통내의 객체 복구
SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
AA               BIN$VPaE9OG4Qwa+KC0MesYKqw==$0 TABLE        2004-11-23:18:49:00

SQL> flashback table "BIN$VPaE9OG4Qwa+KC0MesYKqw==$0" to before drop;
플래시백이 완료되었습니다.

SQL> select * from tab;
TNAME                                    TABTYPE         CLUSTERID
---------------------------------------- -------------- ----------
AA                                       TABLE

Posted by pat98
이전버튼 1 이전버튼

05-09 18:52
Flag Counter
Yesterday
Today
Total

글 보관함

최근에 올라온 글

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 달린 댓글