MES系统关键数据库的深入研究
2019-10-31秦四滨
秦四滨
摘要 使MES系统尽少的出现故障及出现故障之后的快速恢复是运维人员的一个巨大课题。本文通过对MES系统关键数据库Oracle的深入研究,提出了Oracle数据库的备份恢复策略,能够在系统出现故障后,能够将数据恢复到任意时间点,从而能够帮助很好的维护MES系统的平稳运行。
关键词:Oracle 备份;恢复;数据闪回
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2019)22-0008-02
开放科学(资源服务)标识码(OSID):
MES是处于企业资源计划系统和现场自动化系统之间的执行层,主要负责车间生产管理监控和调度执行,在统一的平台上集成诸如生产监控调度、物料平衡、统计报表等管理功能,使用统一的数据库通过网络可以同时为生产部门、质检部门、工艺部门等提供管理信息服务和监控服务。MES已经成为企业每天运行的必不可少的应用系统。系统一旦出现问题,如果不能尽快进行恢复,会给企业的生产和经营造成一定的影响。如何能够使MES系统尽少的出现故障及出现故障之后的快速恢复是摆在我们运维人员的一个巨大课题。本人通过参与MES系统Oracle数据库的深入研究,总结出一套切实可行的方法备份恢复方法- Oracle数据库系统的备份及恢复策略的实施,在系统出现故障后,能够将数据恢复到以前任意时间点,能够帮助我们很好的维护MES系统的平稳运行。
1 Oracle数据库的基本情况
MES系统的Oracle数据库一共有2个,一个是lims系统需要的,存储着lims系统的配置数据和每天的业务数据;數据量最庞大最核心的一个就是我们所说的TOTALPLANT数据库,其存储着系统的核心的模型数据和每天产生的业务数据。如Oracle数据库出现问题,系统就将瘫痪,所以在Oracle数据库出现故障的时候,能够快速进行数据恢复就是非常重要的。HoneyWell公司提供了一个数据库备份方案,对数据的恢复没有介绍,其备份方案能对数据库进行联机备份,将数据文件和控制文件备份到以当前备份日期为名字的新建文件夹中,将所有的归档日志备份到一个固定的文件夹中。归档日志特别多,而我们的硬盘容量是有限的,如果一天备份一次数据的话,基本上十多天就将整个硬盘空间耗尽,这就需要每天去查看硬盘空间,删除过时的数据文件备份和归档日志备份,一旦忘记删除过时备份的话,使得以后的备份都不能进行,数据库系统也会因为磁盘空间的不足造成宕机,使得数据库无法正常启动,这在我们MES系统实施初期就发生过这种现象,给系统的实施造成了不小的麻烦,对于归档日志的删除还要特别小心,得判断好日志是否有用,如果将有用的备份误删得话,备份也就无效了,所以制定一个完善可行的备份恢复方案是非常必要的。
2 Oracle数据库的备份恢复策略设置
通过对Oracle数据库联机备份恢复的研究,对原备份脚本进行改造,开发出一套新的备份恢复策略,新策略创新的功能是将每天备份的归档日志存储在当天数据备份目录的log子目录下,这样在自动删除过期数据备份时一并将过期的日志删除,新策略能够自动联机备份数据,并保留我们所需要天数的备份,并自动删除过期的数据备份和日志备份,不需要人为参与,一旦Oracle数据库出现故障,就算所有的数据文件、控制文件、归档文件及联机日志文件损坏或丢失的情况下,我们都可以通过备份数据在本机或另一台安装了Oracle数据库软件的新机器上将数据库恢复到备份期间之内任意时间点,只要归档日志和联机日志好用的状态下,就可以将数据库恢复到备份开始到故障点之间的任意时间点并能实现完全恢复。 下面以TOTALPLANT数据库为例介绍一下备份,需要掌握的知识是Oracle联机热备技术、批处理命令的编写、Vbs脚本文件的编写及PL/SQL脚本的编写技术。对TOTALPLANT数据库进行联机热备共需要六个文件如下:Totalplant.cmd 设置连接数据库的参数,备份目录,并调用backup.cmd;Backup.cmd 通过调用Cre_tbs_backup.sql、Datedir.vbs、Predir.vbs在备份目录中创建每一天备份的子目录,备份数据文件和控制文件;再在备份子目录里创建log子目录,备份归档日志文件并在归档目录中删除备份过的归档日志文件同时删除备份目录下保留天数之前的备份;Cre_tbs_backup.sql 创建联机热备的sql脚本;Testconn.sql 判断连接Oracle是否正确;Datedir.vbs 在备份目录中创建每一天备份的子目录,再在备份子目录里创建log子目录;Predir.vbs 删除保留天数之前的数据备份。通过在计划任务中每天运行一次Totalplant.cmd,就形成一个完整的备份策略,脚本文件的代码就不列出了,接下来探讨一下数据的恢复,有了7天的备份数据我们就能对数据库进行7天内随心所欲的恢复了,假如有11、12、13、14、15、16、17日7天的联机备份,在一台只安装了Oracle数据库软件的新机器上进行恢复,下面是具体的恢复的实例:恢复到13日11时30分,将11日备份的控制文件、数据文件拷贝到与原服务器相同的目录下如:d:\oracle\oradata\PRD,将控制文件备份重新命名成实际的控制文件的名字,并拷贝成需要的份数如:将controlfile.bak变成CONTROL01.CTL和CONTROL02.CTL。将原服务器中的Oracle参数文件拷贝到相应目录下(参数文件有pfile和spfile,我们只要一个pfile即可,如果没有pfile可以将spfile改造成pfile)如:d:\oracle\ora92\database\initprd.ora,也可以拷贝到任意目录,将11、12、13、14日备份目录log子目录下的归档文件拷贝到归档目录如:d:\oracle\oradata\prd\log中,在命令行下执行如下:
C:\>oradim -new -sid prd -intpwd change_on_install(创建新的Oracle实例)
C:\>set oracle_sid=prd
C:\>sqlplus /nolog
SQL> startup mount pfile='d:\oracle\ora92\database\initprd.ora'
SQL> set logsource 'd:\oracle\oradata\prd\log';(设置归档目录)
SQL> recover database using backup controlfile until time '2019-3-13 11:30:00';
auto
已应用的日志。
完成介质恢复。
SQL> alter database open resetlogs;
数据库已更改。
这样就在另外一台服务器上完成了对Oracle数据库Totalplant 13日11:30状态的重现,如果要完成完全恢复(恢复到故障点),只需要将任一天备份的数据文件和控制文件(为了恢复最快,选最后一天的备份16日)拷贝到相应目录下,将其子目录下的归档文件和原服务器下的归档文件拷贝到相应目录下如:d:\oracle\oradata\prd\log,查看最晚产生的归档文件假设为:LOG_64385.ARC,根据序号seq64385判断当前正在使用的联机重做日志的序号应为:64386,用编辑工具如UltraEdit将所有创建时间晚于LOG_64385.ARC的联机重做日志打开,察看其文件头会发现其中有一个文件其序号为65386,将此文件改名为:LOG_64386.ARC,保存到d:\oracle\oradata\prd\log中,在命令行中执行的操作,只有一项和前面的不一样,其他相同,不一样的操作如下:SQL> recover automatic from 'd:\oracle\oradata\unf\log' using backup controlfile;这样,就完成了数据库的完全恢复,直接将数据库恢复到故障点。
3 Oracle数据库策略实施后的效果
对Oracle数据库实施备份策略后,就有最近5天的备份数据,就算原数据库服务器系统崩溃,也可以在一台新的服务器上快速地重现数据库。我们有时会遇到这种情况:在实施阶段或系统维护时进行了误操作将非常重要的数据删除且提交了,怎样才能将误删得數据找回了呢?一种方法是用Oracle提供的数据闪回技术,但数据闪回的时间点受Undo表空间大小的限制,另一种方法就是利用本文介绍的数据恢复得方法在一台新机器上重建到没有误删除数据时间点的状态,通过数据库链接(database link)将丢失的数据找回,这种功能非常有效,可以随心所欲地找回我们丢失的任何数据,通过此备份恢复策略的实施,就不怕Oracle数据库出现问题,只要有数据备份存在,出现任何问题,都能够快速恢复。
4 结论
MES是一个非常庞大和复杂的应用系统,其在统一的集成平台上所涉及的应用模块和服务器也非常好之多,如何能够有效地维护好MES系统的平稳运行是对各地区公司运维人员的巨大挑战,本文对MES系统关键服务器-Oracle数据库服务器所实施的维护策略,经过了多次测试实践,成功实施到我公司生产环境的MES系统当中的成果,通过这些策略的实施大大提高了MES系统的稳定性和故障恢复能力,只要不是后天开发软件程序设计的问题,系统出现故障后都能及时恢复,保障MES系统的平稳运行。
参考文献:
[1] Oracle OCP培训文档D32714 Oracle9iDBA Fundaentals 2-i.pdf.
[2] 谈竹奎,仇莉.Oracle9i数据库管理员实用技术指南[M].中国铁道出版社,2003.
【通联编辑:光文玲】