前一阵子,为某行业开发的应用数据库所在的服务器崩了,紧急求援我们去给解决。
到了发现,所在虚拟机服务器起不来。由于之前虚拟机所在卷空间不足,一直也没有人想着备份,并且该司人员说他们有容灾机制,也不需要额外备份,所以此前没有人做过其他备份。结果这次虚拟机彻底挂了,然后发现容灾网线被人拔了,也就是没有备份。当时唯一的希望是,我有次去他们部门,做了一个备份策略,利用exp往另一台有空间的机器做了备份。那时候也没多想,只是想着imp做备份简单。
不过实际用就感觉到不爽了,该部门的数据库已经达到300多G,架了一个oracle环境,利用imp,3分钟50m,算了一下,照此速度,要10几天才能导入,简直崩溃。
后来没办法,好不容易联系虚拟机供应商,提供技术方案,将原来的数据库虚拟机启动了起来,但是随时又有可能宕机。所以先紧急抢救备份。将oracle shutdown,利用冷备份备份到其他虚拟机上。把oracle所有文件以及oradata文件全部拷了过去。不过刚开始拷贝的时候没想太多,直接拷贝粘贴,没想到由于数据库300多G,考起来奇慢,没等考完,数据库所在虚拟机宕机了,又奋战了8九个小时才让虚拟机再次启动起来。这次学了乖,在网上找了个断点续传的拷贝软件,速度有提高,且能看到明显的进度,体验好多了。并且抢救了下备份,在备份机安装了一模一样的oracle环境,将所有文件按照原来的盘符拷贝过去,顺利的恢复了数据。进过此次过程中间也做了一些备份知识补足,总结如下:
1.数据库表空间的数据文件在开始的时候,还是要做规划,能不用unlimited就不用,限制最大的增长size。多add几个数据文件。这样的好处是,冷备份的话,文件小,速度明显很快,文件如果超大,拷贝速度不知道降了多少倍。不过这个部门因为没有人懂数据库这一块,又没法经常过去,所以当初设定的unlimited。有专业dba维护是最好的了。
2.实际备份中,exp没啥软用,加大了共享池、大池、redolog等,没见有任何提高。开发的时候,数据量小还可以用用。
3.expdp、impdp可以用在实际备份中使用,要开并行,不过数据库中blob数据太多,还是不够快,只是比exp和imp好多了。还有个问题,expdp没注意的话,经常只备了表,需要注意一下。
4.如果数据库能开归档模式,用rman比较好,咨询过资深dba,3百G的数据,2小时左右能完成备份,2小时能完成恢复,而且oracle数据库不用关系。问题是,有足够的空间,因为归档文件增长还是很快的。但是备份的文件还是存在一个传输问题,所以整体没有冷备份时间短,但优势很明显,不需要关闭数据库。
5.空闲空间不足,数据库允许关闭的情况下,可以使用冷备份策略,也就是将ctl、log、dbf、ora文件进行备份。最好把所有文件做个初始版本进行备份比较保险。经本人测试300多G数据,花了3个多小时备份,而恢复是分分钟的事情。优点很明显,个人认为是备份中恢复最傻瓜、速度最快快的,缺点是要关闭数据库。
由于服务器空间有限,最终为该部门做了冷备份策略,利用计划和脚本定时每周六将数据库关闭,将备份拷贝到备份机上,然后让维护人员备份到移动硬盘上。也重新做了容灾,这次感觉踏实多了。
冷备份脚本可参考如下下载:
http://download.csdn.net/detail/dirful/9878873
原文链接:https://www.f2er.com/oracle/208763.html