2013년 7월 5일 금요일

oracle 11gr2 deferred_segment_creation parameter

/*
11g R2부터 적용되는 deferred_segment_creation 파라미터에 대한 테스트
* deferred_segment_creation파라미터는 세그먼트를 생성시 익스텐트의 할당을 최초 데이터가
  추가될 때까지 지연시킬지를 결정하는 파라미터로서 기본값은 true이다.
* session level에서도 조정이 가능하며 ddl 문장 레벨에서도 사용할 수 있다.
* 요기참조 -> http://jiri.wordpress.com/2010/02/25/what%E2%80%99s-new-in-oracle-11g-r2-%E2%80%93-deferred-segment-creation/
*/
--oracle 11g R2에서 deferred_segment_creation 파라미터 확인
SQL> show parameter deferred_segment_creation

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation            boolean     TRUE

--테이블 생성
SQL>
create table t
(
a number
);

Table created.

--할당된 extent조회
SQL>
select segment_name, sum(bytes/1024/1024) mbytes
from   user_extents
where  segment_name = 'T'
group by segment_name;

no rows selected

--데이터 한 건 추가
SQL>
insert into t values(1);

1 row created.

--할당된 extent조회
SQL>
select segment_name, sum(bytes/1024/1024) mbytes
from   user_extents
where  segment_name = 'T'
group by segment_name;

SEGMENT_NAME       MBYTES
--------------------------
T                   1

--테이블 삭제
SQL>
drop table t purge;

Table dropped.

--테이블 생성
SQL>
create table t
(
a number
);

Table created.

--할당된 extent조회
SQL>
select segment_name, sum(bytes/1024/1024) mbytes
from   user_extents
where  segment_name = 'T'
group by segment_name;

no rows selected

--테이블스페이스 move 수행
SQL>
alter table t move tablespace mstora_tbl_ts02;

Table altered.

--할당된 extent조회
SQL>
select segment_name, sum(bytes/1024/1024) mbytes
from   user_extents
where  segment_name = 'T'
group by segment_name;

SEGMENT_NAME       MBYTES
--------------------------
T                   10

--테이블 삭제
SQL>
drop table t purge;

Table dropped.

--세션레벨에서 deferred_segment_creation 파라미터 flase로 변경
SQL>
alter session set deferred_segment_creation = false;

Session altered.

--테이블 생성
SQL>
create table t
(
a number
);

--할당된 segment조회
SQL>
select segment_name, sum(bytes/1024/1024) mbytes
from   user_extents
where  segment_name = 'T'
group by segment_name;

SEGMENT_NAME       MBYTES
--------------------------
T                   1

--테이블 삭제
SQL>
drop table t purge;

Table dropped.

--segment creation deferred 옵션을 주고 테이블 생성
SQL>
create table t
(
a number
)
SEGMENT CREATION DEFERRED;

Table created.

--할당된 extent조회
SQL>
select segment_name, sum(bytes/1024/1024) mbytes
from   user_extents
where  segment_name = 'T'
group by segment_name;

no rows selected

--테이블 삭제
SQL>
drop table t purge;

Table dropped.

--segment creation immediate 옵션을 주고 테이블 생성
SQL>
create table t
(
a number
)
SEGMENT CREATION IMMEDIATE;

Table created.

--할당된 extent조회
SQL>
select segment_name, sum(bytes/1024/1024) mbytes
from   user_extents
where  segment_name = 'T'
group by segment_name;

SEGMENT_NAME       MBYTES
--------------------------
T                   1

--테이블 삭제
SQL>
drop table t purge;

Table dropped.

댓글 없음:

댓글 쓰기