bigfile tablespace

时间:2021-05-04 09:14:56

背景

      这次终于有个linux实际迁移oracle的机会了,之前都是学习实验。想起最早时,都是windows搞oracle,又让我想起多年期一个项目,数据量太大及计算逻辑太复杂,我用存储过程的高级处理从一天没跑完变成了几分钟跑完;然后闲着想实验下linux,陆陆续续花了两个周时间把linux和oracle跑通了,不过意外的是,竟然效率还不如在windows下,好多实验windows 不比linux差。可见光听人说是不行的。

本想聊聊那个项目的人和事,每一个项目都是一篇可以写的小说了,可惜不会写文章,其实这些人和事比技术有意义多了,正所谓世事洞明皆学问啊。但是又不想写了。还是说技术吧。

迁移过程中遇到各种报错逐一解决,倒不是大问题。不过再过程中,因为想修改数据文件容量时,竟然提示小文件表空间不支持,这个还没大有印象,先只能靠增加数据文件方式解决了,同时学习了下大文件表空间知识。正在后悔没有实践机会时,导入竟然出错了,错误及其奇葩,竟然能导入重复主键的数据,从来没见到这个情况。那么正合适了,从头彻底全删除,按照大表空间模式来一次。以下为所搜知识点,简单备忘一下吧。

知识点

使用大文件表空间的优势

使用大文件表空间(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)容量可能会增加备份与恢复的时间。