zoukankan      html  css  js  c++  java
  • Oracle本地管理对照数据字典管理表空间

    Locally vs. Dictionary Managed Tablespaces

    整理自http://www.orafaq.com/node/3.


    When Oracleallocates space to a segment (like a table or index), a group of contiguousfree blocks, called an extent, is added to the segment. Metadata regardingextent allocation and unallocated extents are either stored in the datadictionary, or in the tablespace itself. Tablespaces that record extentallocation in the dictionary, are called dictionary managed tablespaces, andtablespaces that record extent allocation in the tablespace header, are calledlocally managed tablespaces.


    表空间分配段空间,即区:一组连续的块。表空间关于区分配的信息被存于数据字典(DMT)或表空间自身(LMT位图区

    查看数据库中表空间管理方式:


    SQL> select tablespace_name,extent_management, allocation_type from dba_tablespaces;

     

    TABLESPACE_NAME                EXTENT_MAN ALLOCATIO

    ------------------------------ -------------------

    SYSTEM                         DICTIONARY USER

    SYS_UNDOTS                     LOCAL      SYSTEM

    TEMP                           LOCAL      UNIFORM


    DictionaryManaged Tablespaces (DMT):

    Oracle use thedata dictionary (tables in the SYS schema) to track allocated and free extentsfor tablespaces that is in "dictionary managed" mode. Free space isrecorded in the SYS.FET$ table, and used space in the SYS.UET$ table. Wheneverspace is required in one of these tablespaces, the ST (space transaction)enqueue latch must be obtained to do inserts and deletes agianst these tables.As only one process can acquire the ST enque at a given time, this often leadto contention(竞争).

    使用数据字典管理区分配。空暇空间被记录在SYS.FET$表中,已使用空间记录在SYS.UET$表。


    Execute thefollowing statement to create a dictionary managed
    tablespace: 
    创建数据字典管理表空间:


    SQL> CREATE TABLESPACE ts1 DATAFILE'/oradata/ts1_01.dbf' SIZE 50M

         EXTENT MANAGEMENT DICTIONARY

          DEFAULT STORAGE ( INITIAL 50K NEXT 50KMINEXTENTS 2 MAXEXTENTS 50 PCTINCREASE 0);


    Locally ManagedTablespaces (LMT):

    Using LMT, eachtablespace manages it's own free and used space within a bitmap structurestored in one of the tablespace's data files. Each bit corresponds to adatabase block or group of blocks. Execute one of the following statements tocreate a locally managed
    tablespace:

    注意:Oracle920中,默认系统表空间是local管理,因此不能在数据库中建立数据字典管理的表空间。
    假设想要建立数据字典管理的表空间,必须在建立数据库时,将系统表空间改为数据字典管理才干够。


    SQL> CREATE TABLESPACE ts2 DATAFILE'/oradata/ts2_01.dbf' SIZE 50M

       EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

     

    SQL> CREATE TABLESPACE ts3 DATAFILE'/oradata/ts3_01.dbf' SIZE 50M

         EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;


    Note the differencebetween AUTOALLOCATE and UNIFORM SIZE:  注意AUTOALLOCATEUNIFORM SIZE选项差别!

    AUTOALLOCATEspecifies that extent sizes are system managed. Oracle will choose"optimal" next extent sizes starting with 64KB. As the segment growslarger extent sizes will increase to 1MB, 8MB, and eventually to 64MB. This isthe recommended option for a low or unmanaged environment.

    UNIFORMspecifies that the tablespace is managed with uniform extents of SIZE bytes(use K or M to specify the extent size in kilobytes or megabytes). The defaultsize is 1M. The uniform extent size of a locally managed tablespace cannot beoverridden when a schema object, such as a table or an index, is created.

    Also not, if youspecify, LOCAL, you cannot specify DEFAULT STORAGE, MINIMUM EXTENT orTEMPORARY.


    假设是本地管理表空间则不能够指定DEFAULT STORAGEMINIMUM EXTENTTEMPORARY选项。

    Advantages ofLocally Managed Tablespaces: 本地管理优势:

    • Eliminates the need for recursive SQL operations against the data dictionary (UET$ and FET$ tables)  消除对于数据字典表的递归SQL操作。
    • Reduce contention on data dictionary tables (single ST enqueue)   降低对数据字典表的争用。
    • Locally managed tablespaces eliminate the need to periodically coalesce free space (automatically tracks adjacent free space)   不须要定期合并空暇空间。
    • Changes to the extent bitmaps do not generate rollback information   对于位图区的改变不会产生回滚信息。


    Locally ManagedSYSTEM Tablespace:

    From Oracle9irelease 9.2 one can change the SYSTEM tablespace to locally managed. Further, ifyou create a database with DBCA (Database Configuration Assistant), it willhave a locally managed SYSTEM tablespace by default. The following restrictionsapply:

    • No dictionary-managed tablespace in the database can be READ WRITE.
    • You cannot create new dictionary managed tablespaces
    • You cannot convert any dictionary managed tablespaces to local

    Thus, it is bestonly to convert the SYSTEM tablespace to LMT after
    all other tablespaces are migrated to LMT.


    920后数据字典管理表空间已被废弃!


    Segment SpaceManagement in LMT: 本地管理表空间中的段管理

    From Oracle 9i,one can not only have bitmap managed tablespaces, but also bitmap managedsegments when setting Segment Space Management to AUTO for a tablespace. Lookat this example:设置段自己主动管理


    SQL> CREATE TABLESPACE ts4 DATAFILE '/oradata/ts4_01.dbf'SIZE 50M

         EXTENT MANAGEMENT LOCAL

         SEGMENT SPACE MANAGEMENT AUTO;


    Segment SpaceManagement eliminates the need to specify and tune the PCTUSED, FREELISTS, andFREELISTS GROUPS storage parameters for schema objects. The Automatic SegmentSpace Management feature improves the performance of concurrent DML operationssignificantly since different parts of the bitmap can be used simultaneouslyeliminating serialization for free space lookups against the FREELSITS. This isof particular importance when using RAC, or if "buffer busy waits"are deteted.


    Convert betweenLMT and DMT: 本地管理与数据字典管理表空间转换

    TheDBMS_SPACE_ADMIN package allows DBAs to quickly and easily
    convert between LMT and DMT mode. Look at these examples:


    SQL> exec dbms_space_admin.Tablespace_Migrate_TO_Local('ts1');

    PL/SQL procedure successfully completed.

     

    SQL> execdbms_space_admin.Tablespace_Migrate_FROM_Local('ts2');

    PL/SQL procedure successfully completed.


    ---------------------------

    Dylan Presents.

  • 相关阅读:
    浅谈FastJson的TypeReference用法
    勾选表中的行数据,点击添加,添加到另一个表中(二)
    获取表单内的所有元素的值 表单格式化插件jquery.serializeJSON
    基于BootStrap的Collapse折叠(包含回显展开折叠的对应状态)
    删除按钮和单条删除合并
    前台校验是否为空
    浅谈js的join()方法
    select前台转义后台取到的值为对应的文本 select同时接受list和map
    SpringBoot图片上传(二)
    给div拼接html 拼接字符串
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3959335.html
Copyright © 2011-2022 走看看