简述辽河油田开发生产数据库备份与恢复
所属栏目:计算机信息管理论文
发布时间:2012-05-09 10:02:41 更新时间:2023-07-11 10:11:24
摘要:辽河油田开发生产数据库经多年建设与完善,数据库内容已涵盖科研、生产、管理等多个专业,海量的信息资源为DBA有效管理、维护数据库系统提出了严格要求。本文通过长期实际工作积累和体会,介绍作为DBA通过制定和实施周密的数据库备份、恢复策略,以保证油田开发生产数据库长期安全高效平稳运行。
关键词:生产 数据 备份 恢复
前 言
随着办公自动化和电子商务的飞速发展,企业对信息系统的依赖性越来越高,数据库作为信息系统的核心担当着重要角色,当我们不断的将所有重要生产数据都存储其中,使用时总希望数据库的内容是可靠的、正确的、完整的。但由于计算机系统的故障(包括机器故障、介质故障、误操作等),数据库有时也能遭到破坏。由此,制定一整套适合企业自己的数据库备份、恢复策略是十分必要,也是企业信息系统安全、稳定运行的保证。
一、数据库应用情况
辽河油田网络经过不断的改造升级,主干全部为千兆,桌面达千兆/百兆,在高效的网络平台支持下,数据库服务器集中在油田信息中心统一管理,数据全部由数据源头直接进库;为便于规范化管理,通过应用系统升级改造,将SQL SERVER、MYSQL等数据库统一到ORACLE 920数据库平台。目前各采油厂开发生产数据库支持的应用覆盖了油田地质静态、开发动态、地质月报、监测化验、天然气开发、采油生产、井下作业、注汽管理、油气集输等专业系统及综合办公应用系统;通过信息整合及二次开发,拓展了油水井施工设计、新井措施井运行跟踪、生产调度等应用,海量的信息存储以每日近20M的速度不断增加。
庞大的数据库支持着油田各专业系统的运行,数据资源的宝贵在企业中越来越被广泛认可,为及时反映油田每日的科研、开发、生产、管理动态,数据库要求7×24小时不间断运行,并且要保证信息安全,尽可能减少一切因素带来的信息损失。这些都给DBA人员提出了严格的工作要求,要求数据库管理员制定周密的数据备份、恢复策略。
二、数据库常见故障分析
开发生产数据的安全性受到油田技术、管理人员和各级领导的高度重视,我们也做了一些有预见性的防护工作,但这也不能完全阻止数据库故障的发生。数据库的错误和故障是复杂多样的,有些故障可直接导致数据库的无法使用,通过多年应用实践,并查阅相关资料,总结数据库常见的故障有:
1、用户失误。用户失误删除一行或删除表。
2、语句失效。可以定义为Oracle无法执行某一条SQL语句。
3、进程失效。进程失效是进程异常终止,这有可能是Oracle本身引起,也可能是用户(如用户从SQL*PLUS发出一个C命令)引起的。
4、网络失效。网络失效可能在使用多个数据库服务器时,通过通信网络连结的客房/服务器配置或分布式数据库系统时产生。
5、实例失效。实例失效可能由物理(硬件)或设计(软件)问题引起。例如,当某一数据库后台进程检测到硬盘上有问题无法写入时,后台进程就会全部终止。
6、介质失效。介质失效是最危险的错误,不仅由于没有执行合适的备份过程,可能会丢失数据,而且它通常比其它失效的恢复时间更长。介质失效的典型例子是磁盘控制器失效或磁头损坏,这将导致丢失该磁盘上所有Oracle数据库文件。
通过分析发现,在常见错误及故障中,轻者可导致生产数据丢失,严重的可失掉全部数据,这是非常可怕的事情,后果将很严重,所以做好开发生产数据库的备份刻不容缓。
三、备份策略及实施
为了最大限度的进行数据库恢复,保证数据库安全运行,就要制定一套确实可行的备份与恢复策略,要选择最合理的备份方法,来防止介质失败导致用户数据丢失。而Oracle数据库自身就提供了几种很好的备份工具和方法:
1、物理备份。物理备份又可分为非归档的操作系统备份和归档的操作系统备份(Hot Backup),用归档的操作系统备份方法可以将数据库恢复到介质失败后的失败点,而其它方法只能将数据库恢复到介质失败的最后一次备份点。
2、逻辑备份。逻辑备份(logical backup)是创建一个直接的数据库备份文件,它不能与归档日志文件组合使用。备份时使用Export工具进行备份,使用Import工具进行恢复,其方法虽简单易行,但备份恢复时间较长。
我们制定的备份目标是:“正确备份,安全存放”。综合这三种备份类型的利弊,根据各采油厂开发生产数据库实际运行情况及数据量大小,决定采用归档的操作系统备份(Hot Backup)和逻辑备份(Export)相结合的策略,并把备份时间安排在数据库使用率最低、网络负担最轻的中午和晚间进行。
我们在较好的硬件支持环境下,实现了双/多机、异地存放备份数据构想。目前的开发生产数据库服务器采用多台SUNV880服务器,其中一部分正常运转,另一部分作为备用服务器。把备份时间安排在每天12:00和19:00各进行一次全库方式的逻辑备份(Export),同时为弥补全库方式逻辑的备份文件大、恢复速度慢等不足,在全库Export后对开发动态、采油生产、井下作业等更新率较高的数据进行用户方式的Export,然后将备份数据拷贝到备份服务器上。
(1)每晚24:00对数据库所有表空间和控制文件做联机热备份,然后将备份数据拷贝到信息中心内的备用服务器上;
(2)每半年(月数据处理完)将全库逻辑备份(Export)数据刻到光盘上,送档案室保存;
(3)每月10日左右在备用服务器上对备份数据进行恢复测试,以检验其备份的正确性。
图1 备份数据存放流程图
3、Hot Backup(热备份)。
(1)改归档方式。数据库运行过程中对日志的处理方式不同,Oracle数据库可运行在两种不同的方式下,即非归档方式(NOARCHIVELOG)和归档方式(ARCHIVELOG)。Oracle数据库缺省的运行方式是非归档方式,但我们备份策略中选择归档的操作系统备份(Hot Backup),所以首先要改变数据库的运行方式。修改数据库的参数文件,用ORACLE的管理工具Enterprise Manager Console更直观、更方便,分别改动以下(图2)、(图 3)中的参数。
图2 更改数据库参数文件界面图
图3 更改数据库参数文件界面图
(2)重启数据库启动归档方式
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
(3)联机备份表空间
首先标记联机表空间回收的开始
SQL> alter tablespace 表空间名 begin backup;
用操作系统命令备份数据文件
最后标记联机的表空间回收结束
SQL> alter tablespace 表空间名 end backup;
循环用此方法将数据库中所有表空间备份出来。
(4)联机备份控制文件
SQL> alter database backup controlfile to '文件名' reuse;
每天晚间让系统自动执行第3步联机备份表空间和第4步联机备份控制文件,将数据库中所有数据文件和控制文件备份出来,然后拷贝到异地的服务器上,并每隔一小时向异地服务器上拷贝一次归档的日志文件。
4、Export(逻辑备份)。命令格式如下:
Exp 用户名/口令 file=db_back log= exp_back.log bueeer=4096 full=y
四、恢复方法
数据库的恢复可分为两大类:完全恢复、不完全恢复。完全恢复指将数据库恢复到发生故障的时间点,不丢失任何数据。不完全恢复指将数据库恢复到发生故障前的某一个时间点,此时间点以后的所有改动将会丢失。Oracle数据库恢复过程分两步进行,首先把存放在重做日志文件中的所有重做运用到数据文件,之后对重做中所有未提交的事务进行回滚,这样所有数据就恢复到发生灾难那一时刻了。数据库的恢复只能在发生故障之前的数据文件上运用重做,将其恢复到故障时刻,而不能将数据文件反向回滚到之前的某一个时刻。
我们设计数据库恢复方案时,充分结合ORACLE恢复的特点和以往数据库出现的错误,以及我们能够预想到的故障,把这些错误进行分类,然后对备份策略进行恢复测试。因为对数据库的控制文件和联机日志文件都在不同的磁盘上做了镜像,所以对这两种类型的文件的恢复基本上不用去考虑了,下面主要说一下用户级错误、数据文件、所有文件丢失的恢复方法。
1、用户误操作的恢复。由于用户误操作造成数据及表的丢失,其补救措施主要是导入最新的逻辑备份。命令格式:
IMP 用户名/口令 file=db_back log= imp_back.log bueeer=4096 fromuse=cxxt touser=cxxt tables=表名
2、恢复数据文件。当发生介质失效时,该磁盘上所有Oracle数据库文件将丢失,当介质修复后,需要对该磁盘上的数据库文件进行恢复(只描述数据文件的恢复过程)。
·关闭数据库:
SQL> shutdown immediate
·启动数据库到MOUNT方式:
SQL> startup mount
·脱机丢失的数据文件:
SQL> alter database datafile ‘home3/oradata/cxxt.dbf’ offline;
然后拷贝此数据文件的热备;
·恢复数据文件,然后将其联机:
SQL> recover datafile ‘home3/oradata/cxxt.dbf’;
SQL> alter database datafile ‘home3/oradata/cxxt.dbf’ online;
·打开数据库:
SQL> alter database open;
3、将数据库恢复到另一台服务器上。当发生介质失效,而又不能及时修复时,我们会将数据库恢复到另一台备份服务器上。
·关闭数据库
SQL> shutdown immediate
拷贝所有数据文件和控制文件的热备份到新服务器上(数据库文件所存放的目录最好与损坏的数据库相同)。
·启动数据库到MOUNT方式
SQL> startup mount
·恢复数据库,然后打开数据库
SQL> recover database until cancel using backup controlfile;
SQL> alter database open resetlogs;
4、几点注意事项:
(1) 本文讨论所有情况的默认前提是数据库运行在归档(ARCHIVELOG)方式下,并只涉及到一般常见的情况和最基本的恢复方法。
(2) 一旦数据库发生灾难,最好在进行恢复之前做一次完全的冷备份,以便在进行恢复时产生差错还可以进行补救。其实很大一部分数据丢失是由于不正确的恢复操作所引起的。
(3) 当数据库完成恢复之后,尤其是使用resetlogs选项打开数据库之后,要马上备份数据库。
(4) 要特别注意当进行数据库完全恢复,从发生故障的时间点前的备份中恢复损坏文件时,一定不要使备份中的redo log文件覆盖当前的redo log文件,否则就只能进行不完全恢复并,且要丢失一部分数据了。
(5) 按ORACLE公司建议,做联机日志和控制文件的镜像。
五、结束语
Oracle 提供的备份、恢复功能非常健全,方式、方法也很多,给DBA提供了较大的选择空间,备份计划越好,在恢复过程中选择的余地越大。以上谈到的备份、恢复策略及方法主要是根据辽河油田实际生产情况,综合企业信息资源及员工情况而制定的,通过实际验证能够适应我厂开发生产数据库的运行状况,且简便、易行,但距7×24小时不间断运行的要求还有差距,能够实现真正的双机容错备份也是我们的一个愿望。从企业信息化角度来讲,油田开发生产数据库的安全机制不仅仅是数据库管理员、信息中心或是信息工作者的职责,更是企业硬件环境、员工素质、协作精神等多方面因素综合考验。
参考文献
[1](美)瓦普瑞(Velpuri,K.)等.何江华等编译.Oracle8备份与恢复手册.第一版.北京:机械工业出版社,1998.10.
[2]滕永昌.Oracle9i数据管理员. 2002.02