Database 是由一个或多个被称为表空间(tablespace)的逻辑存储单位构成。表空间内的逻辑存 储单位为段(segment),段又可以继续划分为数据扩展(extent)。而数据扩展是由一组连续的数据 块(datablock)构成。
大文件表空间
在Oracle中用户可以创建大文件表空间(bigfile tablespace)。这样Oracle数据库使用的表空间 (tablespace)可以由一个单一的大文件构成,而不是若干个小数据文件。这使Oracle可以发挥64位 系统的能力,创建、管理超大的文件。在64位系统中,Oracle数据库的存储能力被扩展到了8 EB(1EB =1024PB,1PB = 1024TB,1TB=1024GB)。
当数据库文件由Oracle管理(Oracle-managed files),且使用大文件表空间(bigfile tablespace)时,数据文件对用户完全透明。换句话说,用户只须针对表空间(tablespace)执行管 理操作,而无须关心处于底层的数据文件(datafile)。使用大文件表空间,使表空间成为磁盘空间 管理,备份,和恢复等操作的主要对象。使用大文件表空间,并与由Oracle管理数据库文件(Oracle -managed files)技术以及自动存储管理(Automatic Storage Management)技术相结合,就 不再需要管理员手工创建新的数据文件(datafile)并维护众多数据库文件,因此简化了数据库文件 管理工作。
数据库默认创建的是小文件表空间(smallfile tablespace),即Oracle中传统的表空间 (tablespace)类型。数据库中 SYSTEM 和 SYSAUX 表空间在创建时总是使用传统类型只有本地管理 的(locally managed),且段空间自动管理(automatic segmentspace management)的表空 间(tablespace)才能使用大文件表空间(bigfile
tablespace)。但是有两个例外:本地管理的撤销表空间(undo tablespace)和临时表空间 (temporary tablespace),即使其段(segment)为手工管理(manually managed),也可以使用大 文件表空间。一个Oracle数据库可以同时包含大文件/小文件表空间(bigfile/smallfile tablespace)。SQL语句执行时无需考虑表空间(tablespace)的类型,除非语句中显式地引用了数据 文件(datafile)名。
管理员可以创建一组临时表空间(temporary tablespace),用户在需要时可以利用组内各个表空 间(tablespace)提供的临时空间。管理员还可以指定表空间组(tablespace group)为数据库默认 的临时表空间。当用户需要大量临时空间进行排序操作时,就可以利用大文件表空间及表空间组。
使用大文件表空间的优势
● 使用大文件表空间(bigfile tablespace)可以显著地增强Oracle数据库的存储能力。一个小 文件表空间(smallfile tablespace)最多可以包含1024个数据文件(datafile),而一个大文件表 空间中只包含一个文件,这个数据文件的最大容量是小数据文件的1024倍。这样看来,大文件表空间 和小文件表空间的最大容量是相同的。但是由于每个数据库最多使用64K个数据文件,因此使用大文件 表空间时数据库中表空间的极限个数是使用小文件表空间时的1024倍,使用大文件表空间时的总数据 库容量比使用小文件表空间时高出三个数量级。换言之,当一个Oracle数据库使用大文件表空间,且 使用最大的数据块容量时(32K),其总容量可以达到8EB。
● 在超大型数据库中使用大文件表空间减少了数据文件的数量,因此也简化了对数据文件的管理 工作。由于数据文件的减少,SGA中关于数据文件的信息,以及控制文件(control file)的容量也得 以减小。
● 由于数据文件对用户透明,由此简化了数据库管理工作。
使用大文件表空间时需要考虑的因素
● 大文件表空间(bigfile tablespace)应该和自动存储管理(Automatic Storage Management)或其他逻辑卷管理工具(logical volume manager)配合使用,这些工具应该能够支持 动态扩展逻辑卷,也能支持striping(数据跨磁盘分布)或RAID。
● 应该避免在不支持striping的系统上使用大文件表空间,因为这将不利于并行执行(parallel execution)及 RMAN 的并行备份(backup
parallelization)。
● 当表空间正在使用的磁盘组(disk group)可能没有足够的空间,且扩展表空间的唯一办法是 向另一个磁盘组加入数据文件时,应避免使用
大文件表空间。
● 不建议在不支持大文件的平台上使用大文件表空间,这会限制表空间(tablespace)的容量。 参考相关的操作系统文档了解其支持的最大文
件容量。
● 如果使用大文件表空间替代传统的表空间,数据库开启(open),checkpoints,以及 DBWR 进 程的性能会得到提高。但是增大数据文件
(datafile)容量可能会增加备份与恢复的时间。