저두 조금 다르게 알고 있었는데..
이참에 정리 해보았습니다.
Nologging 으로 설정 하셔두 대상 SQL 문장이 아니라면 Logging 으로 작동 됩니다.
Nologging VS Unrecoverable
1. 개요
1.1 Nologging - 8i , 다양 하게 사용 가능, 추천
1.2 Unrecoverable - 7 , CREATE TABLE, CREATE INDEX, ALTER INDEX REBUILD 시에 만 사용 가능, 비추
1.3 Nologging 으로 설정 하셔두 대상 SQL 문장이 아니라면 Logging 으로 작동 됩니다.
1.4 Unrecoverable 로 테이블을 생성 하셔두 table 설정을 Logging 으로 설정 됩니다. ( 8i, 10G)
OPS$ORACLE>create table check_un unrecoverable as select * from scott.emp ;
Table created.
OPS$ORACLE>select table_name, logging from user_Tables where table_name =’CHECK_UN’;
TABLE_NAME LOG
------------------------------ ---
CHECK_UN YES
OPS$ORACLE>alter table check_un recoverable ;
alter table check_un recoverable
*
ERROR at line 1:
ORA-14105: RECOVERABLE/UNRECOVERABLE may not be specified in this context
OPS$ORACLE> create table check_nologging nologging as select * from scott.emp ;
Table created.
OPS$ORACLE> select table_name, logging from user_Tables where table_name =’CHECK_NOLOGGING’;
TABLE_NAME LOG
------------------------------ ---
CHECK_NOLOGGING NO
2. 효과
복구를 위한 Redo log 를 생성 하지 않는다.
실제 Redo Log 를 생성 하지 않는 작업은 아래의 작업에 대해서만 해당 한다.
즉, 일반적인 DML 시에는 테이블/인덱스가 Nologging 상태일리자도,
Redo Log 를 생성 한다. [ 3. 대상 SQL 문장 참조 ]
-- 샘플테이블 생성
OPS$ORACLE>drop table check_nologging purge ;
Table dropped.
OPS$ORACLE>create table check_nologging tablespace users nologging as select * from scott.emp@remote ;
Table created.
==> CTAS 진행 중에는 NOLOGGING OPTION 이 적용되고,
따라서 일반적인 DBMS 복구로는 복구가 불가능하다.
==> CTAS 완료 후 데이타는 LOGGING OPTION 이 적용된다.
-- 샘플테이블 NOLOGGING 옵션 체크
OPS$ORACLE>select table_name, logging from user_tables where table_name =’CHECK_NOLOGGING’;
TABLE_NAME LOG
------------------------------ ---
CHECK_NOLOGGING NO
-- 샘플테이블 데이타 확인
OPS$ORACLE>select count(*) from check_nologging ;
COUNT(*)
----------
14
OPS$ORACLE>commit ;
Commit complete.
OPS$ORACLE>delete check_nologging ;
14 rows deleted.
OPS$ORACLE>rollback ;
Rollback complete.
OPS$ORACLE>select count(*) from check_nologging ;
COUNT(*)
----------
14
==> Rollback 된다. Nologging 이라면 복구가 안되겠죠 ^^
3. 대상 SQL 문장
- direct load (SQL*Loader)
- direct-load INSERT
- CREATE TABLE ... AS SELECT
- CREATE INDEX
- ALTER TABLE ... MOVE PARTITION
- ALTER TABLE ... SPLIT PARTITION
- ALTER INDEX ... SPLIT PARTITION
- ALTER INDEX ... REBUILD
- ALTER INDEX ... REBUILD PARTITION
- INSERT, UPDATE, AND DELETE ON Lobs in NOCACHE NOLOGGING mode stored out of line