ORACLE Nologging 지식


1) Nologging 은 데이터베이스 실행 모드 와 관련 이 있 습 니 다. 8i 와 9i 의 기본 설 치 는 모두 비 압축 파일 모드 이 고 자동 압축 파일 은 기본적으로 사용 하지 않 습 니 다.
SQL> archive log list;
Database log mode             No Archive Mode
Automatic archival             Unabled
Archive destination            C:/oracle/ora92/RDBMS
Oldest online log sequence     85
Current log sequence           87
 
2) 데이터베이스 닫 기
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
 
3)
SQL> startup mount
ORACLE instance started.
 
Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
 
Database mounted.
 
4) 압축 파일 모드 로 변경
SQL> alter database archivelog;
Database altered.
 
5) 데이터베이스 열기
SQL> alter database open;
Database altered.
 
6)
SQL> archive log list;
Database log mode             Archive Mode
Automatic archival             Unabled
Archive destination            C:/oracle/ora92/RDBMS
Oldest online log sequence     85
Next online log sequence     87
Current log sequence           87
 
7) Automatic archival à Unabled 로 인해
SQL> archive log start;
SQL> archive log list;
Database log mode             Archive Mode
Automatic archival             Enabled
Archive destination            C:/oracle/ora92/RDBMS
Oldest online log sequence     85
Next online log sequence     87
Current log sequence           87
 
8) 이때 데이터 베 이 스 를 닫 고 백업 하 는 것 을 추천 합 니 다.
SQL> shutdown immediate
 
9)
SQL> startup
 
10) 9i 환경 에서 FORCE LOGGING 을 설정 하면 nologging 작업 이 무효 이 고 속도 가 빨 라 지지 않 으 므 로 다음 문 구 를 통 해 NO FORCE LOGGING 으로 설정 할 수 있다.
SQL>Alter database no force logging;
FORCE LOGGING 이 열 렸 는 지 여 부 는 다음 문장 으로 볼 수 있 습 니 다.
SQL> select force_logging from v$database;
 
FORCE_
------
NO
11) CTAS nologging 을 사용 하여 redo size 를 비교 하 는 예
SQL> CREATE OR REPLACE VIEW redo_size
  2  AS
  3     SELECT VALUE
  4       FROM v$mystat, v$statname
  5      WHERE v$mystat.statistic# = v$statname.statistic#
  6        AND v$statname.NAME = 'redo size';
 
View created.
 
SQL> connect sys/sys@oratest as sysdba;
 
SQL> create table t nologging as select * from dba_objects;
 
Table created.
 
-- T 가 낳 은 레 도
SQL> select * from redo_size;
 
     VALUE
----------
     48504
 
SQL> create table tt as select * from dba_objects;
 
Table created.
 
SQL> select * from redo_size;
 
     VALUE
----------
   3457796
 
-- TT 가 만들어 내 는 Redo
SQL> select 3457796 - 48504 from dual;
 
3457796-48504
-------------
      3409292
 
SQL> select table_name,logging from dba_tables where table_name in ('T','TT');
 
TABLE_NAME                                               LOGGIN
------------------------------------------------------------ ------
T                                                            NO
TT                                                           YES
  
참조 원본:http://www.itpub.net/showthread.php?s=&threadid=609347&perpage=10&pagenumber=2
 
12) index 에서 nologging 속성 을 사용 하 는 예
-- Table T 만 들 기
colm@COLM> create table t as select * from all_objects;
colm@COLM> connect colm/colm@colm
연결 되 었 습 니 다.
-- 현재 redo size 살 펴 보기
colm@COLM> @c:/script/mystat "redo size";
colm@COLM> set echo off
NAME     VALUE
--------------------------
redo size     560
-- 색인 만 들 기
colm@COLM> create index t_idx on t(object_name);
 
-- 이때 redo size 를 살 펴 보면
colm@COLM> @c:/script/mystat "redo size";
colm@COLM> set echo off
NAME       VALUE
--------------------------------
redo size      1252680
 
-- 해당 index 재건 축
colm@COLM> alter index t_idx rebuild;
색인 이 변경 되 었 습 니 다.
 
-- 기 존 에 발생 한 redo size 와 비교 해 보면 V 는 현재 redo 를, Diff 는 재건 축 에 의 한 redo 를 나타 내 며, creat index 와 alter index 가 발생 하 는 redol 의 양 이 거의 같다 는 것 을 알 수 있다.
colm@COLM> @c:/script/mystat2
colm@COLM> set echo off
 
NAME-      V            DIFF
---------- ------------------------------------------
redo size    2511720        1,259,040
 
--alter index nologging
colm@COLM> alter index t_idx nologging;
 
색인 이 변경 되 었 습 니 다.
colm@COLM> @c:/script/mystat2;
colm@COLM> set echo off
 
NAME         V             DIFF
---------- ------------------
redo size       2515968        2,124
 
-- 다시 색인 을 재 구성 해 45K 의 레 도 사이즈 가 기 존 1.2M 에 비해 많이 줄 었 다
colm@COLM> alter index t_idx rebuild;
 
색인 이 변경 되 었 습 니 다.
 
colm@COLM> @c:/script/mystat2;
colm@COLM> set echo off
 
NAME              V                DIFF
---------- ------------------
redo size            2559308           45,464
 
첨부: 위 에 사 용 된 스 크 립 트 2 개
--mystat.sql
set echo off
set verify off
column value new_val V
define S="&1"
 
set autotrace off
select a.name, b.value
from v$statname a, v$mystat b
where a.statistic# = b.statistic#
and lower(a.name) like '%' || lower('&S')||'%'
/
set echo on
 
--mystat2.sql
set echo off
set verify off
column diff format a18
select a.name, b.value V, to_char(b.value-&V,'999,999,999,999') diff
from v$statname a, v$mystat b
where a.statistic# = b.statistic#
and lower(a.name) like '%' || lower('&S')||'%'
/
set echo on
 
13) Direct insert append 에 redo 양 이 발생 하 는 문제 에 대해 eygle 은 테스트 를 한 적 이 있다.
a).             :
create table test as select * from dba_objects where 1=0;
insert into test select * from dba_objects; 
insert /*+ append */ into test select * from dba_objects; 
 Noarchivelog   ,      Direct insert append     redo 
   
create table test nologging as select * from dba_objects where 1=0; 
insert into test select * from dba_objects; 
insert /*+ append */ into test select * from dba_objects; 
 Noarchivelog   ,  nologging  Direct insert append      redo 
   

b). :

create table test as select * from dba_objects where 1=0; 
insert into test select * from dba_objects; 
insert /*+ append */ into test select * from dba_objects; 

, insert append insert redo
insert append .
append

create table test nologging as select * from dba_objects where 1=0; 
insert into test select * from dba_objects; 
insert /*+ append */ into test select * from dba_objects; 
 archivelog   ,  nologging  Direct insert append     redo 

Noarchivelog Direct insert append

http://www.itpub.net/showthread.php?s=&postid=1618916

 

 

14nologgingdirect insertUNDObiti_rainy

nologging direct insertundoinsert rowid
direct insert
。 , redo
logging direct insert undo undo

http://www.itpub.net/showthread.php?threadid=217094

 

 

:

Nologging

1.   CTAS

2.   Index

3.   Insert /*+ append */ into tes t select
4.   remove, split 와 같은 대체 표 조작
 
더 많은 정보http://search.itpub.net/search.php?s=5ee7a3ad7109a32ae7033f52d68be149&action=showresults&searchid=399212&sortby=lastpost&sortorder=descending
 
또한, 자신 이 테스트 할 때 buffer cache 를 비 워 야 한다 고 생각 할 수 있 으 므 로 참고 하 시기 바 랍 니 다.
http://www.eygle.com/archives/2005/12/oracle_howto_flush_buffer_cache.html
 

좋은 웹페이지 즐겨찾기