项目中的数据量有点大,最核心的一张表会有TB数量级的数据,因而也需要建这么大的表空间,如何处理这么大的表空间是个难题。
询问了几位专家,也查了网络上的资料,得到了一个大致的解决方法:设置多个数据文件。具体做法如下:
- 为此表空间划分单独的LUN,保证足够的空间,我这里就划分1TB;
- 在此LUN上建立表空间,考虑到系统的数据是慢慢累积的,刚开始不用一次把空间都分配满,可先设置10个24GB的数据文件,这样就分配到了240GB的空间可以存储数据;
- 等数据量上来后,可选择扩展原有的数据文件,或新加数据文件,以此扩展表空间。
上述方法还没实践过,有待验证。这里也先整理下设置多个数据文件的好处:
- 有些操作系统对文件大小有限制,或者安装是做过限制。你不一定清楚这些限制。而且某些版本的传输协议不支持过大的文件,例如AIX某版本的sftp就不允许传输文件超过2G。
- 你现在数据量小,所以不用考虑太多。但将来数据量增大以后,要考虑负载均衡,就要把部分数据文件挪到其他盘上。多个数据文件会使这样很容易。
- 当你的数据文件某部分出现坏块之后,你需要让某个数据文件暂时offline恢复等等,如果你的数据文件过大,影响也可能更大。
- 使用RMAN备份的时候,单独备份数据文件。恢复也可单独恢复,因此很显然分多个数据文件有好处。
以上4点内容来自http://www.zxbc.cn/a/Oracle/20100506085643.html。也有资料称,过大的数据文件会降低读写速度,而多个数据文件可以同时读写,增加读写速度。
值得一提的是,数据文件自动扩展有一定争议,很多资料不推荐自动扩展,频繁的扩展导致磁盘碎片,性能降低,但自动扩展确实给系统管理带来了便利。在经验不足,而且人力紧张的情况下,我们还是选择了自动扩展,以后慢慢调整,找到最合适的方法。