이전 dictionary managed tablespace 방식에서는 엄청난 extent가 발생했을 때
이에 대한 정리작업 (drop, delete 등)을 수행할 경우
UET$와 FET$ dictionary table 갱신에 많은 시간이 소모 되었었죠..

다음의 내용은 OTN에 있는 내용을 가져 왔습니다.

제품 : ORACLE SERVER

작성날짜 :

DICTIONARY MANAGED TABLESPACE를 사용 대비, LOCALLY MANAGED TABLESPACE를 사용하는 것의 장점
===========================================================================================

PURPOSE


이 문서는, Locally Managed Tablespace에 대한 설명과 함께,
Dictionary Managed Tablespace 대비, 장점을 기술하는 데 목적이 있다.

Explanation


1. LOCALLY MANAGED TABLESPACE

Locally Managed Tablespace는, 자체 extent에 대한 관리를 각각의 데이터 파일에 비트맵 형식으로 저장하여 관리하는 테이블스페이스로, 데이터 파일을 구성하는 블럭이 비어 있는지, 사용 중인지에 대한 정보를 관리한다. 비트맵의 각각의 비트는, 하나의 블럭 또는 블럭의 그룹에 해당하는 정보를 나타낸다.

익스텐트가 할당되거나, 비워지거나, 재사용될 때, 오라클에서는 블럭의 새로운 상태를 나타내기 위해 비트맵의 값을 변경한다. 이와 같은 변경사항은 기본 방식인 Dictionary Managed Tablespace와는 달리, rollback 정보를 생성하지 않는데, 이것은 데이터 딕셔너리의 테이블을 갱신하지 않기 때문이다 (테이블스페이스 별 quota 정보는 제외).

1) 공간 정보 관리를 위한 내부 작업을 줄임.
2) 데이터 딕셔너리 테이블에 대한 경합 감소됨.
3) 익스텐트 관리와 관련된 관련 rollback 생성이 되지 않음.
4) Coalescing 이 불필요함.

2. 테이블스페이스의 공간 관리

1) 사용되지 않는 익스텐트 정보가 비트맵에 의해 관리됨.
(따라서, 테이블스페이스의 일부분이 비트맵 정보를 저장하는 데 사용됨)
2) 각 비트는, 블럭이나, 블럭의 그룹의 정보를 나타냄.
3) 비트 정보는, 사용 중인지, 그렇지 않은지를 나타냄.
4) DBA_EXTENTS 나 DBA_FREE_SPACE 등의 뷰는 동일하게 사용됨.

3. 구문 규칙

EXTENT MANAGEMENT 절의 LOCAL 옵션을 사용하면, 테이블스페이스가
Locally Managed 방식으로 생성된다.

Extent_management_clause:
[EXTENT MANAGEMENT
{DICTIONARY | LOCAL
{AUTOALLOCATE | UNIFORM [SIZE integer M] }}

옵션 설명:

DICTIONARY : 테이블스페이스에 대해 Dictionary Table를 사용하여 공간 정보를 관리. (default)


LOCAL : 테이블스페이스가에 대해 비트맵을 사용하여 Locally Managed 방식으로 공간 정보 관리


AUTOALLOCATE : 테이블스페이스에 대한 익스텐트 관리를 시스템에서 관장 (사용자는 익스텐트의 크기를 수동으로 지정할 수 없음)


UNIFORM : 테이블스페이스가 동일한 크기의 익스텐트로 구성되도록 지정함. 크기는 기본적으로 바이트 단위로 지정 ( 익스텐트 크기를 KB 또는 MB 단위로 지정하기 위해서는 K 또는 M 을 사용하여 지정) 이 옵션을 사용하게 되면, DEFAULT Storage 절, MINIMUM EXTENT 또는 TEMPORARY 옵션을 사용할 수 없다.

Oracle 9.2 이전 버젼에서는, EXTENT MANAGEMENT 절을 SYSTEM 테이블스페이스를 제외한 permanent tablespace나, temporary tablespace 생성 시 지정할 수 있었다. Oracle 9.2부터는 SYSTEM 테이블스페이스를 포함한 모든 테이블스페이스를 Locally managed 방식으로 생성할 수 있다.

CREATE DATABASE에서 EXTENT MANAGEMENT LOCAL 절을 사용하게 되면, 오라클에서는 SYSTEM 테이블스페이스를 Locally Managed Tablespace로 생성하며, 익스텐트의 크기는 오라클에서 결정하게 된다. 이 기능을 사용하기 위해서는, COMPATIBLE 옵션이 9.2 또는 그 이상으로 지정되어 있어야 한다.

Locally Managed SYSTEM tablespace는 기본적으로 AUTOALLOCATE 방식을 사용하게 되며, Locally Managed 방식으로 SYSTEM 테이블스페이스를 생성할 때, UNIFORM extent 크기를 지정할 수 없다.

다음 storage parameter(NEXT, PCTINCREASE, MINEXTENTS, MAXEXTENTS)와 DEFAULT STORAGE는 Locally Managed Tablespace에서는 사용할 수 없다.

테이블스페이스 생성 후에는 공간관리 방법을 변경할 수 없다.

Oracle 8.1.6부터, Dictionary Managed Tablespace를 Locally Managed Tablespace로 마이그레이션을 할 수 있으나, 8.1.5에서는 그와 같은 작업을 수행할 수 없다.

기존에 사용해 왔던 테이블스페이스를 Locally Managed 방식으로 전환 시키기 위해서는 DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL 프로시져를 사용하면 된다.
그리고, DBMS_SPACE_ADMIN 패키지는 Locally Managed Tablespace를 관리하는 데 필요한 각종 프로시저를 제공한다.

다음 문장에서, 데이터베이스 블럭 크기가 2K인 것을 가정하였다.

CREATE TABLESPACE tbs_1
DATAFILE 'file_tbs1.dbf' SIZE 10M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 128K

위 문장을 수행시키면, Locally Managed Tablespace를 생성하며, 모든 extent의 크기를 128K로 할 때, 비트맵의 각 비트는 64개 블럭에 대한 정보를 나타낸다. 기본적으로, 데이터베이스 블럭의 크기의 기본값을 2K로 가정하였을 때, 각 비트는 하나의 extent(128K)에 대한 정보를 나타내므로,
각 비트맵은 64개의 오라클 블럭을 필요로 하게 된다.

( 64 블럭 = 128K UNIFORM SIZE / 2K ORACLE BLOCK SIZE )

4. Dictionary Managed Tablespace를 사용하는 것 대비, Locally Managed Tablespace를 사용하였을 경우의 장점

1) Locally Managed Tablespace는 가용한 공간에 대한 정보를 데이터 딕셔너리에 저장하지 않으므로, 데이터 딕셔너리에 대한 경합을 줄이게 된다.

2) Extent에 대한 local management를 통해, 인접한 가용 공간의 정보를 자동으로 관리하게 되므로, 가용 extent에 대한 coalesce 작업을 수행하지 않아도 된다.

3) 공간 관리를 위한 데이터베이스 내부 처리 작업을 피할 수 있다. 반면 이와 같은 내부 처리 작업은 Dictionary Managed Tablespace에서는 필요한데, extent를 사용하거나, 반납을 하는 등의 작업이 발생할 때마다 rollback segment나 데이터 딕셔너리 테이블의 공간을 사용하거나 반납하는 등의 작업이 필요하게 된다.

4) Locally Managed Tablespace에서의 extent의 크기는, 시스템에 의해 자동적으로 관리된다. 반면, 모든 extent는 Locally Managed Tablespace 에서는 동일한 크기를 사용하게 할 수도 있다.

5) Extent에 대한 정보를 나타내는 비트맵의 변경 사항은 rollback 정보를 생성하지 않는다. 이것은, 데이터 딕셔너리의 정보를 변경하지 않기 때문이다. ( 테이블스페이스에 대한 quota 정보와 같은 일부 사항은 예외 )

6) Fragmentation을 줄일 수 있다.

Example


Reference Documents


<Note:93771.1> Locally Managed Tablespace in Oracle 8i
<Note:103020.1> Migration from Dictionary Managed to Locally Managed
Tablespaces
<Note:105120.1> Advantages of Using Locally Managed vs Dictionary Managed Tables
paces




+ Recent posts