当前位置 博文首页 > 程序员石磊:oracle 创建超大表空间文件,不用担心表空间占用满

    程序员石磊:oracle 创建超大表空间文件,不用担心表空间占用满

    作者:[db:作者] 时间:2021-08-08 10:12

    在Oracle 10g中,推出了Bigfile tablespace的概念。表空间Tablespace从Oracle 10g以后就分为两个类型,smallfile tablespace和bigfile tablespace。过去一个表空间对应多个数据文件我们称为Smallfile Tablespace。

    所谓Bigfile Tablespace最显著的差别就是一个表空间只能对应一个数据文件。Bigfile Tablespace虽只对应一个数据文件,但数据文件对应的最大体积大大增加。传统的small datafile每个文件中最多包括4M个数据块,按照一个数据块8K的大小核算,最大文件大小为32G。每个Small Tablespace理论上能够包括1024个数据文件,这样计算理论的最大值为32TB大小。而Bigfile Datafile具有更强大的数据块block容纳能力,最多能够包括4G个数据块。同样按照数据块8K计算,Bigfile Datafile大小为32KG=32TB。理论上small tablespace和big tablespace总容量相同。

    1、实例
    create bigfile tablespace bttest datafile ‘/data1/oracle/BTTEST.dbf’ size 128m AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED;

    2、select tablespace_name, bigfile from dba_tablespaces;
    TABLESPACE_NAME BIG


    BTTEST YES
    3、创建bigfile tablespace的时候,就已经指定了数据文件。如果此时我们尝试加入一个新的数据文件,Oracle系统会报错。
    alter TABLESPACE bttest add DATAFILE ‘/data1/oracle/BTTEST2.dbf’ size 128m AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED
    *
    ERROR at line 1:
    ORA-32771: cannot add file to bigfile tablespace
    4、修改数据库默认的表空间类型:
    ALTER DATABASE SET DEFAULT smallfile TABLESPACE
    ALTER DATABASE SET DEFAULT bigfile TABLESPACE;
    SELECT * FROM database_properties WHERE property_name = ‘DEFAULT_TBS_TYPE’;
    这种情况下,如果我们创建表空间的时候不指定类型,那么默认创建的都是 SMALLFILE 类型的表空间。

    5、db_block_size默认为8k,理论上我们可以创建最大 32T
    desc DBA_TABLESPACES    
    SHOW parameters db_block_size     
    db_block_size  integer   8192
    oracle文件最大容量:
    发现表空间文件容量与DB_BLOCK_SIZE有关,
    在初始建库时,DB_BLOCK_SIZE要根据实际需要,
    设置为4K,8K、16K、32K、64K等几种大小,
    ORACLE的物理文件最大只允许4194304个块(由操作系统决定),
    smallfile tablespace表空间文件的最大值为 4194304×DB_BLOCK_SIZE/1024M。
    即:
    4k最大表空间为:16384M=16G
    8K最大表空间为:32768M=32G
    16k最大表空间为:65536M=64G
    32K最大表空间为:131072M=128G
    64k最大表空间为:262144M=256G
    alter system set db_16k_cache_size=32m;
    alter system set db_32k_cache_size=32m;
    6、大文件表空间从某种角度来说提高了 Oracle 在 VLDB 上的管理能力。
    只有自动段空间管理的 LMT (Locally Managed Tablespaces ) 支持 BIGFILE 表空间。
    大文件表空间只能包含一个文件,但是文件可以达到 4G 个数据块大小。
    (以下用 BFT 指代 BIGFILE Tablespace。BFT 可以和以下存储技术结合使用:
    自动存储管理(ASM)   LVM   OMF   
    理论上的 BFT 可以达到下面所列的值:     
    数据块大小(单位:K) BFT 最大值(单位:T)   
    2k 8T   
    4k 16T   
    8k 32T   
    16k 64T   
    32k 128T     
    在实际环境中,这还受到操作系统的文件系统的限制。

    cs