在Oracle中,什么是大文件表空间(Bigfile Tablespace)?
Oracle表空间是逻辑结构的最高层次,而物理层面的Oracle数据库是通过一系列的文件构成。表空间与数据文件的关系是一对多的关系,一个表空间可以对应多个数据文件,一个数据文件则只能归属于一个表空间。从Oracle 10g开始推出了大文件表空间的概念,即表空间从Oracle 10g以后就分为两种类型,小文件表空间(Smallfile Tablespace)和大文件表空间(Bigfile Tablespace)。所谓大文件表空间最显著的特点就是一个表空间只能对应一个数据文件。大文件表空间虽只对应一个数据文件,但数据文件对应的最大体积大大增加,可以达到32TB。传统的小文件表空间中每个数据文件最大文件大小为32G,但每个小文件表空间理论上能够包括1024个数据文件,所以,小文件表空间的最大值为32TB大小。所以,理论上小文件表空间和大文件表空间总容量相同。
大文件表空间都是为超大型数据库设计的。如果一个超大型数据库具有上千个数据文件的话,更新数据文件头部信息的操作就会花费很长时间。如果使用了大文件表空间,就可以使用大数据文件来减少数据文件的数量,使更新数据文件头部信息的操作更快一些。
要想创建一个大文件表空间,可以在CREATE语句中使用BIGFILE关键字。例如:“CREATE BIGFILE TABLESPACE mybigtbs01 DATAFILE 'f:\bigtbs01.dbf' SIZE 20G;”。此处,通过“CREATE BIGFILE TABLESPACE”语句建立大文件表空间,需要注意两方面的问题,其一是大文件表空间必须使用本地区(LOCAL EXTENT)管理方式,不允许使用DMT(Dictionary Managed Tablespace)。另一方面是段SEGMENT空间使用AUTO自动方式,不要使用MANUAL。
SYSTEM和SYSAUX表空间总是被创建为小文件表空间。想要创建一个小文件表空间,可以在CREATE语句中使用SMALLFILE关键字或者不使用此类关键字。例如:“CREATE SMALLFILE TEMPORARY TABLESPACE lhrtbs01 TEMPFILE 'e:\tmptbs01_1.dbf' SIZE 4M UNIFORM SIZE 64K;”。
要想知道系统默认创建的是SMALLFILE还是BIGFILE的表空间,可以执行如下的查询:
SQL> SELECT PROPERTY_NAME,PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE '%TBS%';
PROPERTY_NAME PROPERTY_VALUE
------------------------------ ---------------------------------------
DEFAULT_TBS_TYPE SMALLFILE
可以通过命令“ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE;”来修改系统默认的表空间类型。建议创建表空间时最好带上BIGFILE或SMALLFILE参数,以免参数设置导致创建了不合理的表空间。
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:230161599
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。