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;
2 datafile '/oracle/test_prior.dbf' size 10m;
테이블스페이스가 생성되었습니다.
SQL> select tablespace_name, logging
2 from dba_tablespaces
3 where tablespace_name = 'TEST_PRIOR';
SQL> select tablespace_name, logging
2 from dba_tablespaces
3 where tablespace_name = 'TEST_PRIOR';
TABLESPACE_NAME LOGGING
------------------------------ ---------
TEST_PRIOR LOGGING
------------------------------ ---------
TEST_PRIOR LOGGING
2. nologging 옵션을 가지는 table과 nologging 옵션을 가지는 테이블을 각각 생성합니다.
그 외의 옵션들은 모두 같습니다.
SQL> create table t1 (col1 number, col2 varchar2(10))
2 tablespace test_prior
3 nologging;
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
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
------------------------------ ---
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
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
-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
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 속성을 가지는 테이블
-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
'Oracle > Admin' 카테고리의 다른 글
AUTO_SPACE_ADIVISOR_JOB (0) | 2011.03.02 |
---|---|
통계 정보 수집 (analyze vs. dbms_stats) (1) | 2011.02.23 |
index rebuild 관련 글 (0) | 2011.01.08 |
[펌] 아카이브 로그 파일 자동 삭제 스크립트 (0) | 2011.01.05 |
유저의 디폴트 테이블 스페이스 (0) | 2010.12.21 |