不完全恢复数据库一例

重装了操作系统,存储数据文件的盘符发生了变化,所以,通过重建控制文件来恢复了数据库。
过了几天后才发现这个重建控制文件的脚本是旧的,有十几个数据文件没有包含在脚本中(数据文件还在)。
当SQL访问到存储在这些表空间的数据时就会报错,提示数据文件不存在。


修改数据文件为离线,可以打开数据库,但是尝试介质恢复时,发现没有之前并没有启用归档。
而且之前的在线日志文件也没有备份,已经用Resetlog方式打开数据库运行了一段时间了。


现在,请问:有没有可能把这十几个数据文件正常加入到数据库中来?
答案是,可以。
1.通过重设日志文件方式来重建控制文件,脚本中补上之前遗漏的数据文件。
2.设置隐含参数_allow_resetlogs_corruption,跳过一致性检查
3.设置这个隐含参数后,要使用resetlogs选项打开数据库,隐含参数才会生效,否则Oracle在打开数据库时会忽略此参数。


不完全恢复后,原来的online redo log里面包含的是未做恢复前的数据,而这些数据对于恢复后的数据库不再有效,
所以,数据库会要求在Open之前先对online redo log的sequence置零。
Resetlogs命令表示一个数据库逻辑生存期的结束和另一个数据库逻辑生存期的开始,
每次使用Resetlogs命令的时候,SCN不会被重置,不过oracle会重置日志序列号,而且会重置联机重做日志内容。
Oracle把这个数据库逻辑生存期称为incarnation,每次使用resetlogs打开数据库,就会使incarnation + 1,也就是产生一个新的incarnation。


参考代码:
SQL> startup nomount
ORACLE 例程已经启动。


Total System Global Area  524288000 bytes
Fixed Size                  1291576 bytes
Variable Size             150997704 bytes
Database Buffers          364904448 bytes
Redo Buffers                7094272 bytes


SQL> CREATE CONTROLFILE REUSE DATABASE "DYYY" RESETLOGS  NOARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 'E:\DYYY\REDO01.LOG'  SIZE 50M,
  9    GROUP 2 'E:\DYYY\REDO02.LOG'  SIZE 50M,
 10    GROUP 3 'E:\DYYY\REDO03.LOG'  SIZE 50M
 11  DATAFILE
 12    'E:\DYYY\SYSTEM01.DBF',
 13    'E:\DYYY\ZL9PEISDATA.DBF',
 14    'E:\DYYY\SYSAUX01.DBF',
 15    'E:\DYYY\USERS01.DBF',
 16    'E:\DYYY\ZLTOOLSTBS.DBF',
 17    'E:\DYYY\ZL9BASEITEM.DBF',
 18    'E:\DYYY\ZL9PATIENT.DBF',
 19    'E:\DYYY\ZL9EXPENSE.DBF',
 20    'E:\DYYY\ZL9MEDLST.DBF',
 21    'E:\DYYY\ZL9DUEREC.DBF',
 22    'E:\DYYY\ZL9CISREC.DBF',
 23    'E:\DYYY\ZL9EPRLOB.DBF',
 24    'E:\DYYY\ZL9EPRDAT.DBF',
 25    'E:\DYYY\ZL9CISAUDIT.DBF',
 26    'E:\DYYY\ZL9INDEXHIS.DBF',
 27    'E:\DYYY\ZL9INDEXCIS.DBF',
 28    'E:\DYYY\ZLBAK1.DBF',
 29    'E:\DYYY\ZLBAK2014.DBF',
 30    'E:\DYYY\ZLPDT.DBF',
 31    'E:\DYYY\UNDOTBS02.DBF',
 32    'E:\DYYY\ZL9BLOODDATA.DBF',
 33    'E:\DYYY\ZL9DEVBASE.DBF',
 34    'E:\DYYY\ZL9DEVREC.DBF',
 35    'E:\DYYY\ZL9DEVUSE.DBF',
 36    'E:\DYYY\ZL9INDEXDEV.DBF',
 37    'E:\DYYY\ZL9IFTBASE.DBF',
 38    'E:\DYYY\ZL9IFTREC.DBF',
 39    'E:\DYYY\ZL9INDEXIFT.DBF',
 40    'E:\DYYY\ZL9LISDATA.DBF',
 41    'E:\DYYY\ZL9INDEXLIS.DBF',
 42    'E:\DYYY\ZL9MTLBASE.DBF',
 43    'E:\DYYY\ZL9MTLREC.DBF',
 44    'E:\DYYY\ZL9INDEXMTL.DBF',
 45    'E:\DYYY\ZL9MEDBASE.DBF',
 46    'E:\DYYY\ZL9MEDREC.DBF',
 47    'E:\DYYY\ZL9MEDDAY.DBF',
 48    'E:\DYYY\ZL9INDEXMDR.DBF',
 49    'E:\DYYY\ZL9OPSDATA.DBF',
 50    'E:\DYYY\ZLPACSBASETAB.DBF',
 51    'E:\DYYY\ZL9WIZARDDATA.DBF',
 52    'E:\DYYY\ZL9INDEXPSS.DBF',
 53    'E:\DYYY\ZLDCHIS.DBF',
 54    'E:\DYYY\ZLDCIDXHIS.DBF',
 55    'E:\DYYY\ZLPACSBASEINDEX.DBF',
 56    'E:\DYYY\ZLPACSBIZTAB.DBF',
 57    'E:\DYYY\ZLPACSBIZINDEX.DBF',
 58    'E:\DYYY\ZLPACSBIZXML.DBF',
 59    'E:\DYYY\ZLBAK2012.DBF',
 60    'E:\DYYY\ZLISS10.DBF'
 61  CHARACTER SET ZHS16GBK
 62  ;


控制文件已创建。


SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;


系统已更改。


SQL> startup force mount
ORACLE 例程已经启动。


Total System Global Area  524288000 bytes
Fixed Size                  1291576 bytes
Variable Size             155192008 bytes
Database Buffers          360710144 bytes
Redo Buffers                7094272 bytes
数据库装载完毕。


SQL> alter database open resetlogs;


数据库已更改。


SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。


SQL> startup
ORACLE 例程已经启动。


Total System Global Area  524288000 bytes
Fixed Size                  1291576 bytes
Variable Size             159386312 bytes
Database Buffers          356515840 bytes
Redo Buffers                7094272 bytes
数据库装载完毕。
数据库已经打开。

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

转载于:http://blog.itpub.net/117319/viewspace-2110316/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值