| 
 咨询电话:010-51727811/12/13
当前位置: 首页 > 新闻中心 > 业内新闻 >
使用实施Oracle灾难恢复技术
时间:2012-10-29 09:21  来源:飞客数据恢复   作者:飞客数据恢复工程师
做Recovery需要什么数据:
一、FULLCLOSED备份
shutdown数据库(不要用shutdownabort强行关闭),实施一个文件级备份,备份全部的Oracle相关文件,包括Windows系统文件,系统状态和Oracle程序文件和数据文件等内容。
这个冷备份对于快速恢复Oracle数据库系统非常关键,如果没有它,系统被破坏后只能重新安装再恢复,这要比直接恢复冷备份慢得多,也更复杂。
每当数据库或表单的物理结构或逻辑结构有变化时都应该重新创建这个冷备份。
 
二、FULLONLINE备份
这个备份要通过BackupExecAgentforOracleServer来完成,要备份全部表空间,归档日志和控制文件,通过这种方式备份,Oracle会将所有缓存内容写入文件,将onlineredolog做归档,所以数据库备份中包含的是备份时数据库的即时点信息,完整而且有效。以后做恢复时,可以恢复到最后一次FULLONLINE备份的状态。
 
恢复过程:
1.重新安装Windows系统和RemoteAgentforWindowsServer,为恢复Oracle服务器准备环境。
2.恢复最后一次FULLCLOSED备份,重新启动计算机。
此时Windows系统,Oracle数据库系统都是完整的,只是Oracle数据库中可能不是最新的数据。BackupExecAgentforOracleServer也不用重新安装了。
3.用SQLPlus用SYS以sysdba身份连接到数据库系统,关闭数据库。
shutdownimmediate+<enter>
4.通过介质服务器恢复最新的FULLONLINE备份,恢复作业属性的高级选项中,确保选中了“RestoreoverExistingfiles(覆盖现存文件)”选项。
要想成功的恢复数据库,在最后一次FULLCLOSED备份之后的所有redolog必须都已经成功归档并备份。少了哪一个,数据库就无法恢复到最后的FULLONLINE备份时的状态。
通过Oracle的alertlog可以看到数据库的恢复需要哪些归档日志,以及你应该把它们恢复到什么位置。
5.恢复完成后,用SYS用户以sysdba身份连接到数据库,将数据库加载到mount阶段:
startupmount+<enter>
6.数据库mount完成后,执行recover过程:
recoverdatabaseusingbackupcontrolfile+<enter>
数据库会提示你需要哪些日志:
ORA-00279:Change36579generatedatneededforthread1
ORA-00289:Suggestion:\Oracle_Home\Oradata\\%SID%T00036579.ARC
ORA-00280:{=Suggested|filename|AUTO|FROMlogsource|CANCEL}
最简单的方法是选自动恢复:
auto+<enter>
系统会在init.ora文件中定义的位置上查找所有必需的日志并依次应用它们,最后一个要应用的日志是onlineredolog,实际上它并不包括任何的transaction,只有一个SCN,可以略过,但是自动恢复过程会因为找不到相应的文件而报错:
ORA-00308:cannotopenarchivedlog
'E:\ORACLE\ORADATA\KIMSTAD\ARCHIVE\KIMSTADT00036949.ARC'
ORA-27041:unabletoopenfile
OSD-04002:unabletoopenfile
O/S-Error:(OS2)Thesystemcannotfindthefilespecified.
为此输入以下命令(untilcancel参数使我们可以在需要的时候中止恢复过程):
recoverdatabaseuntilcancelusingbackupcontrolfile+
这样在数据库恢复的最后阶段再次提示前面的错误时,我们就可以中止恢复过程:
cancel+<enter>
这时除了最后一个onlineredolog以外,所有的committransaction都已经提交到数据库之中了,完成后会显示:
Mediarecoverycanceled
实际上恢复过程已经正常完成了。
最后是打开数据库并同步日志序列号:
alterdatabaseopenresetlogs+<enter>
至此,Oracle数据库被成功恢复到最后一次FullOnline备份。
说明:Oracle8i可以用internal账号完成DBA操作。9i取消了internal账号,SYS账号代替它了。为了以DBA身份登录,启动SQLPlus时应该加nolog参数,进入之后再登录,connectusername/passwordassysdba。