ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据库恢复的最后手段

数据库恢复的最后手段

原创 Linux操作系统 作者:kuailingtong 时间:2009-10-11 13:37:30 0 删除 编辑

Oracle按照数据库恢复的程度来说可以分为两种方式:完全恢复和不完全恢复。完全恢复指的是能够将数据库恢复到当前SCN,不完全恢复指的是只能够将数据库恢复到曾经SCN,即数据库基于时间点恢复(DBPITR),然后以resetlogs方式打开数据库。但是,某些情况使得不完全恢复也无法执行,例如:介质设备也出现了问题,损坏了备份集,那么该如何处理呢,下文将给出指导方针。

 

方法1:强行打开数据库,抢救可访问的数据。

使用隐含参数_allow_resetlogs_corruption的作用是在数据文件头和控制文件记录最新的SCN不匹配的时候也能够打开数据库,当下一次checkpoint的时候,数据文件的SCN会被覆盖掉,当然这种做法会使得数据库处于不一致状态。这种方法也不是100%能够保证打开数据库的,所以,不到万不得已的时候,还是要慎重使用。

 

--修改init.ora,设置隐含参数_ALLOW_RESETLOGS_CORRUPTIONtrue

_ALLOW_RESETLOGS_CORRUPTION=TRUE

 

--强行打开数据库

sql> startup mount pfile='G:\ORA_DATA\oratest\init.ora';

sql> recover database until cancel;

      cancel;

sql> alter database open resetlogs;

 

--一旦数据库打开,立即做一个全库导出或者用户导出操作。

--如果数据块损坏,还需要设置event 10231.

Sql> ALTER SYSTEM SET EVENTS '10231 TRACE NAME CONTEXT FOREVER, LEVEL 10';

exp system/system full=y file=db.dmp

exp system/system wner=xxxx file=db.dmp

 

--重建数据库

--导入数据

--备份数据库

 

 

 

方法2:使用工具直接读取数据文件。

如果方法1也不能够恢复数据,那么只能够直接从数据文件中读取数据了,可以使用DULOracle's Data Unloader)工具,但是这是需要求助于Oracle售后,并且收费的。国内也有很多大侠编写了从数据文件中抢救数据的工具,例如:dcbaAULfuyuncatFySafe

http://www.anysql.net/product

http://www.hellodba.com/Download/FySafe_zh.htm

 

总之,做好备份策略,别让自己去做万不得已的事。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7700957/viewspace-616262/,如需转载,请注明出处,否则将追究法律责任。

上一篇: asktom
下一篇: Perl编程
请登录后发表评论 登录
全部评论

注册时间:2009-09-21

  • 博文量
    11
  • 访问量
    6086