Oracle/Admin2011. 2. 16. 14:33




Q :
테이블의 속성과 테이블스페이스 속성이 있을 때 어느 속성이 우선 순위가 높을까요?

A :
우선순위
테이블 속성 > 테이블스페이스 속성


TEST :

테스트 절차

0. 리두 발생을 측정하기 위해 archive log 모드로 합니다.
1. logging 옵션을 가지는 tablespace를 생성합니다.
2. nologging 옵션을 가지는 table과 nologging 옵션을 가지는 테이블을 각각 생성합니다.
   그 외의 옵션들은 모두 같습니다.
3. 두 테이블에 모두 같은 옵션으로 데이터를 insert합니다.
   (insert 시에는 /*+ APPEND */ 힌트를 주어 리두 발생의 차이를 확인합니다.
4. archive log의 크기를 확인합니다.



0. 리두 발생을 측정하기 위해 archive log 모드로 합니다.


1. logging 옵션을 가지는 tablespace를 생성합니다.

SQL> create tablespace test_prior
  2  datafile '/oracle/test_prior.dbf' size 10m;
테이블스페이스가 생성되었습니다.

SQL> select tablespace_name, logging     
  2  from dba_tablespaces
  3  where tablespace_name = 'TEST_PRIOR';
TABLESPACE_NAME         LOGGING
------------------------------ ---------
TEST_PRIOR         LOGGING



2. nologging 옵션을 가지는 table과 nologging 옵션을 가지는 테이블을 각각 생성합니다.
   그 외의 옵션들은 모두 같습니다.

SQL> create table t1 (col1 number, col2 varchar2(10))
  2  tablespace test_prior
  3  nologging;
테이블이 생성되었습니다.

SQL> create table t2 (col1 number, col2 varchar2(10))
  2  tablespace test_prior
  3  logging;

테이블이 생성되었습니다.

SQL> select table_name, logging
from dba_tables
where table_name in ('T1','T2')
order by table_name;  2    3    4 
TABLE_NAME         LOG
------------------------------ ---
T1          NO
T2          YES



3. 두 테이블에 모두 같은 옵션으로 데이터를 insert합니다.
   (insert 시에는 /*+ APPEND */ 힌트를 주어 리두 발생의 차이를 확인합니다.

첫번째 테이블(T1)에 데이터를 insert합니다.

SQL> begin
 for i in 1 .. 100 loop
  insert /*+ append */ into t1 values (i,'test');
 end loop;
end;
/  2    3    4    5    6 
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> alter system switch logfile;
시스템이 변경되었습니다.

첫번째 아카이브 파일 크기 확인

[oracle@test dbs]$ ls -lrt arch*
-rw-r-----  1 oracle dba 26112  2월 16 14:25 arch1_83_739721495.dbf

두번째 테이블(T2)에 데이터를 insert 합니다.

SQL> begin
 for i in 1 .. 100 loop
  insert /*+ append */ into t2 values (i,'test');
 end loop;
end;
/  2    3    4    5    6 
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> alter system switch logfile;
시스템이 변경되었습니다.

아카이브 로그 파일의 크기를 확인

[oracle@test dbs]$ ls -lrt arch*
-rw-r-----  1 oracle dba 26112  2월 16 14:25 arch1_83_739721495.dbf                  => nologging 속성을 가지는 테이블
-rw-r-----  1 oracle dba 88064  2월 16 14:26 arch1_84_739721495.dbf                   => logging 속성을 가지는 테이블


 => 결과와 같이 nologging을 갖는 테이블의 리두로그가 적게 쌓이는 것을 확인할 수 있다.
     nologging : logging   = 26112 : 88064
     테이블스페이스의 속성과 테이블의 속성 중 같은 속성이 있다면 당연히
     테이블의 속성을 먼저 따른다.


참조 : http://ukja.tistory.com/333
Posted by 자수성가한 부자