浅谈炼化企业MES系统Oracle数据库备份

2011-12-31 00:00:00张成
电脑知识与技术 2011年30期


  摘要:该文从Oracle数据库的各种备份方法出发,根据炼化企业生产系统的特点,以Honeywell MES系统为例,对Oracle数据库备份方式进行了选型,同时详细的介绍了MES 系统Oracle数据库在线备份的操作方法。
  关键词:Oracle数据库;在线备份;炼化企业MES
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)30-7358-02
  1 Oracle数据备份简介
  Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、脱机备份(又称“冷备份”) 和在线备份(又称“热备份”)。导出备件是一种逻辑备份,脱机备份和在线备份是物理备份。
  下面分别简单介绍这三种标准的备份方法。
  1.1 导出/导入(Export/Import)
  利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。
  1.2 脱机备份
  脱机备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。脱机备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,脱机备份是最快和最安全的方法。
  1.3 在线备份
  在线备份是在数据库运行的情况下,采用Archivelog mode方式备份数据库的方法。所以,如果你有昨天夜里的一个脱机备份而且又有今天的在线备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。在线备份要求数据库在Archivelog方式下操作,并需要大量的存档空间。一旦数据库运行在Archivelog状态下,就可以做备份了。在线备份的命令文件由三部分组成:
  1)数据文件——表空间的备份: 设置表空间为备份状态;备份表空间的数据文件;回复表空间为正常状态。
  2)备份归档log文件:临时停止归档进程;记录下那些在archive redo log目录中的文件;重新启动archive进程;备份归档的redo log文件。
  3)用alter database backup controlfile命令来备份控制文件,如:
  alter database backup controlfile to trace;
  alter database backup controlfile to 一个controlfile.bak文件;
  alter system archive log current;
  热备份的优点是:
  1)可在表空间或数据库文件级备份,备份的时间短;
  2)备份时数据库仍可使用;
  3)可达到秒级恢复(恢复到某一时间点上);
  4)可对几乎所有数据库实例做恢复;
  5)恢复是快速的。
  热备份的不足是:
  1)不能出错,否则后果严重;
  2)若热备份不成功,所得结果不可用于时间点的恢复;
  3)因难于维护,所以要特别仔细小心,不允许“以失败告终”。
  2 备份方式选型
  MES系统是Manufacturing Execution System的简称,中文名称为生产运行执行系统。在炼化企业中,MES系统是连接控制层与管理层的一个中间纽带,完成从生产命令下达到生产统计的整个生产过程的管理,并实时地将生产过程信息反馈给ERP及其它信息系统,从而将生产活动信息与管理活动信息有效集成,起着承上启下的作用,炼化企业MES系统需要7*24小时连续运行以保障生产。为了保证生产数据的安全,Oracle需要每天备份,但是不影响生产,Oracle数据库只能采用在线备份方式。
  3 MES系统Oracle在线备份
  Honeywell MES系统Oracle服务器上有两个数据库:UNIFORMANCE和TOTALPLANT,它们的数据库实例名分别为:UNF和PRD。下面我以UNF库为例进行讲解。
  3.1 修改init.ora文件
  在Oracle数据库实例UNF安装目录下找到init.ora,比如D:\\Oracle\\admin\\UNF\\pfile下,用记事本打开init.ora,找到以下三行,去掉每一句前面的注释符号#:
  log_archive_start=true
  log_archive_dest=d:\\oracle\\oradata\\unf\\archive
  log_archive_format="LOG_%S.ARC"
  再根据实际情况修改上面第二行的归档日志文件的存放目录log_archive_dest,因归档日志文件日趋增大,所以需要存放在空间大的磁盘下。而且要注意:修改的目录是已经存在的目录。
  推荐的作法是,在系统盘及Oracle安装盘之外、空间大的磁盘下:比如E盘,建立文件夹ArchiveLog,在其目录下分别建立两个文件夹UNF和PRD。修改后的三行语句如下:
  log_archive_start=true
  log_archive_dest=E:\\ ArchiveLog\\UNF
  log_archive_format="LOG_%S.ARC"
  3.2 设置数据库运行模式为归档模式ARCHIVELOG
  在命令窗口中分别输入以下命令(注意:有的命令后面的分号也要输入):
  sqlplus "sys/xxx@uniformance as sysdba"//其中xxx为密码,下同
  shutdown immediate
  startup mount
  alter database archivelog;
  alter database open;
  要显示数据库的当前ARCHIVELOG的状态,可输入命令查看:
  archive log list;
  一旦数据库运行在归档模式,就可以在数据库运行的时候备份数据库了。
  3.3 修改脚本文件
  Honeywell软件中带有命令文件和脚本文件用于执行数据库备份,不过我们需要根据实际情况修改其配置。
  Honeywell提供了一个call_online_backup.cmd文件用于执行在线备份。该文件已经存在于安装OraxPHy+P/FGemGZFZLC0OSlw==cle数据库时指定的存放目录,一般为D:\\UNF_DB。用记事本打开改文件,修改其定义的变量。
  变量1:CONNSTR
  连接字符,用于sysdba身份的登录。比如:sys/xxx@uniformance
  变量2:BAKDIR
  备份主目录,在该目录下将会创建一个以当天日期命名的子文件夹,用于存放备份的数据文件和控制文件。该目录必须是存在的。
  注意:该目录不要和Oracle目录在同一盘符下。
  变量3:LOGDIR
  备份归档日志文件存放的目录。该目录必须是存在的,并且不要和Oracle目录在同一盘符下。
  变量4:UNF_DB
  Uniformance备份脚本所在目录,一般为:D:\\UNF_DB
  变量5:OUTFILE
  该输出文件用于存放命令文件call_online_backup.cmd执行时捕获的消息。它会暂时存放在BAKDIR目录下,当备份完成后,它将转移到BAKDIR子目录下。最好在每次备份后检查该文件里的错误信息。
  推荐的作法是:在系统盘及Oracle安装盘之外、空间大的磁盘下:比如E盘,建立文件夹OnlineBackup,在其目录下分别建立文件夹UND,然后在该目录下建立log文件夹。修改后的配置如下:
  对于D:\\UNF _DB下文件call_online_backup.cmd修改为如下信息
  set CONNSTR=sys/xxx@uniformance
  set BAKDIR=E:\\OnlineBackup\\UNF
  set LOGDIR=E:\\OnlineBackup\\UNF\\log
  set UNF_DB=d:\\unf_db
  set OUTFILE=backup.out
  3.4 备份数据库
  在命令窗口下运行命令文件call_online_backup.cmd来备份数据库。
  在命令窗口中,改变目录指向到Uniformance数据库脚本存放的位置,比如:D:\\UNF