在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     

在实际环境中,这还受到操作系统的文件系统的限制。