• Oracle表空间管理


    extent--最小空间分配单位 --tablespace management
    block --最小i/o单位      --segment    management

    create tablespace james
    datafile '/export/home/oracle/oradata/james.dbf'
    size 100M       --初始的文件大小 
    autoextend On     --自动增长
    next 10M      --每次自动增长大小 
    maxsize 2048M     --最大文件大小
    extent management local --表空间采用本地表空间管理
    uniform size 128k    --uniform设置extent每次分配的大小统一为128k(如果是db_block_size=8k
    ,则每次分配16个块) 
                                --如果不指定大小,则为1M,即为1024/8个block
                               --autoallocate设置extent大小由系统自动分配
                               --不管系统大小分配为多少,但统一尺寸是64k(在bitmap中标记位的大小)。
                                --autoallocate在dba_extents中的allocation_type中显示为 SYSRTEM
    segment space management auto;
                            --segment中的block管理有两种:MSSM(Manual Segment Space Management),
    ASSM(Auto Systemt Space Management)
                            --Auto 模式时只有pctfree参数起作用
    --Manual 模式时freelist,pctfree,pctused参数起作用。



    Tablespace 管理方式有两种:(管理extent)


    1 数据字典空间管理 dictionary managed tablespace
       通过管理两个主要的数据字典表,UET$(Used EXtends) 和FET$(Free EXtends)来实现
       在9i以后已淘汰
       缺点:1 并发访问争用
                  2 产生大量redo undo
                  3 空间碎片

    2 本地表空间管理 Local managed tablespace
       位图管理
       数据文件头部加入位图区域
       extent management local
      
       具体空间分配方式:
       1 autoallocate ----allocation_type=system
       2 uniform         ----allocation_type=uniform

    ALLOCATION_TYPE 这个值有3个选项:
    1、system:一旦设定该值,next_extent将为空,只有extents值。该值是默认值。这个选项的最小是64K
    2、 user:一旦设定该值,就允许我们可以控制next_extent了。只有两种情况出现users:一是该ts是数据字典管理的;另外一个是该ts是从 数据字典管理转移到local的(用dbms_space_admin.tablespace_migrate_to_local)
    3、uniform:将标明所有的extent的大小将一致,temp表空间只能采用这个方式;以上两个情况的extent的大小将不一致;uniform中的默认值为1M


                 
    未使用过的tablespace中新建第一个表t1

    james@O10G>create table t1 (x int);

    Table created.

    sys@O10G>select extent_id,file_id,blocks,block_id,owner from dba_extents where owner='JAMES';

    EXTENT_ID    FILE_ID     BLOCKS   BLOCK_ID OWNER
    ---------- ---------- ---------- ---------- ------------------------------
             0            7          16             9                 JAMES

    bolck_id直接从9开始,前面的8个block留作他用
    1-2位
     是文件头信息
    3-8位 是位图信息

    dump 出这个文件头看看

    主要信息如下
    File Space Bitmap Block:
    BitMap Control:
    RelFno: 7, BeginBlock: 9, Flag: 0, First: 1, Free: 63487
    已经分配了1个extent 还有63487是free可以使用的



    Segment 管理方式有两种:(管理Block)

    1 MSSM(Manual Segment Space Management)
    2 ASSM(Auto Systemt Space Management)


    1 MSSM(Manual Segment Space Management)
    通过在segment的段头分配自由列表(freelist)来管理block
    通过两个参数 pctfree pctused来管理block如何进出freelist
    pctfree 值表示预留多少%的block空间用于更新
    pctused 值表示低于这个值是,block会重新加入到freelist上

    通过dba_tables,dba_indexes查看freelist,pctfree,pctused等参数的设置

    2 ASSM(Auto Systemt Space Management)
    通过在segment的段头分配位图(bitmap)来管理block
    不再需要freelist
    不在需要pctused,因为不需要从freelist上摘除block。
    前面提到了数据文件上block1-2是数据头文件,block3-8是extent的位图。
    block9-10是ASSM的block的一级和二级位图。
    ASSM最大支持三级为图,但是一般非常难见到使用三级目录的
  • 相关阅读:
    .NET[C#]使用LINQ从List<T>集合中获取最后N条数据记录的方法有哪些?
    这个匿名对象没有实现IComparable接口
    c/c++中define用法详解及代码示例
    几个常用Json组件的性能测试
    通过jQuery Ajax使用FormData对象上传文件
    《631962 揭秘Java虚拟机-JVM设计原理与实现.pdf【第8章】》 ——类方法解析
    《631962 揭秘Java虚拟机-JVM设计原理与实现.pdf【第7章】》 ——Java栈桢
    《OOP-Klass》
    《631962 揭秘Java虚拟机-JVM设计原理与实现.pdf【第6章】》——类变量解析
    《631962 揭秘Java虚拟机-JVM设计原理与实现.pdf【第5章】》——常量池解析
  • 原文地址:https://www.cnblogs.com/blsong/p/1599076.html
Copyright © 2020-2023  润新知