Monday, 16 November 2015

Locally vs Dictionary Managed Tablespaces

When Oracle allocates space to a segment (like a table or index), a group of contiguous free blocks, called an extent, is added to the segment. Metadata regarding extent allocation and unallocated extents are either stored in the data dictionary, or in the tablespace itself.

Tablespaces that record extent allocation in the dictionary, are called dictionary managed tablespaces, and

Tablespaces that record extent allocation in the tablespace header, are called locally managed tablespaces.


SQL> select tablespace_name, extent_management, allocation_type from dba_tablespaces;

TABLESPACE_NAME       EXTENT_MAN        ALLOCATION
------------------------------     ----------------------       --------------------
SYSTEM                           DICTIONARY           USER
SYSAUX                          LOCAL                      SYSTEM
UNDOTBS1                      LOCAL                      SYSTEM
TEMP                               LOCAL                      UNIFORM
ABMD                              LOCAL                      USER
ESSO                                LOCAL                     USER
SIT                                   LOCAL                     USER
USERS                             LOCAL                     UNIFORM
USER_DATA                    LOCAL                     UNIFORM



The main benefits of locally managed tablespaces include:

  • Marginally faster performance:  Because there is less data dictionary contention, throughput can be faster.
  • Faster tablespace space management activities:  Since space management activities are done in the tablespace blocks, we see less space management contention (ST locks).  Uniform extent management is enforced and tablespace fragmentation can be reduced.
      
  • Locally Managed tablespace is default from 11g onwards
  •  Space wastage removed. In DMTs, there is no implied mechanism to enforce uniform extent      sizes. The extent sizes may vary depending on the storage clause provided at the object level or the tablespace level, resulting in space wastage and fragmentation.Oracle enforces the uniform extents allocation in the LMTs (when created with UNIFORM SIZE clause). Space wastage is removed, as this would result in all the same sized extents in the tablespace. 
  •  









No comments:

Post a Comment