第一次恢复 oracle 8i的数据库
早上10点起床不久 一网友加我QQ 让我帮忙恢复一个数据库 心想恢复应该还是比较容易的 反正没事 就答应了
谁知还真不容易 为啥呢 是个8i的数据库 我汗,,,, 8i接触很少 更别说恢复了。。。。 就当练练手了
那哥们从复制了一份冷备 直接把整个文件目录给覆盖了 正常open的时候,报错 即datafile比controlfile要新
ok 既然这样 那我就重建一下controlfile 首先获取创建脚本,如下:
alter database backup controlfile to trace;
--获取trace name
提升脚本 然后执行。。。。
controlfile重建了以后 尝试进行recover 如下:
recover database; 居然报错ora-00600 [3020] 这个错误也不难 但是由于是8i的库 比较特殊
我尝试用隐含参数*._allow_resetlogs_corruption=TRUE 加入到init.ora 中 然后再次尝试进行恢复
注意 这里要使用不完全恢复 recover database until cancel;
当然 由于他这库又是非归档的 所以必然报错归档缺失 不用管 直接auto 结束。。。。
接着尝试alter database open resetlogs; 哈哈 居然成功了。。。
我以为就算完事了呢 一会儿 那网友又找说 还是有问题 我一看 果然 报错ora-00600 [4194]
对于这个错误来说 再熟悉不过了。。。undo的问题
开始有点傻帽了 我还show parameter undo 没有返回信息 google了一下 我汗。。。抽自己一个嘴巴
最后使用如下方式完成整个恢复过程:
select owner,segment_name,tablespace_name from dba_rollback_segs; --获取回滚段名
然后做如下操作:
-----当然这里你其实也可以drop tablespace rbs including contents and datafile; 然后重建一个rbs表空间
我这里就直接干掉所有的回滚段了。。。
alter rollback segment RBS0 offline;
alter rollback segment RBS1 offline;
alter rollback segment RBS2 offline;
alter rollback segment RBS3 offline;
alter rollback segment RBS4 offline;
alter rollback segment RBS5 offline;
alter rollback segment RBS6 offline;
drop rollback segment RBS0;
drop rollback segment RBS1;
drop rollback segment RBS2;
drop rollback segment RBS3;
drop rollback segment RBS4;
drop rollback segment RBS5;
drop rollback segment RBS6;
----比较奇怪的是 直接 alter rollback segment RBS0 offline drop;居然不认。。。
create rollback segment RBS7 tablespace rbs;
create rollback segment RBS8 tablespace rbs;
create rollback segment RBS9 tablespace rbs;
create rollback segment RBS10 tablespace rbs;
create rollback segment RBS11 tablespace rbs;
create rollback segment RBS12 tablespace rbs;
alter rollback segment RBS7 online;
alter rollback segment RBS8 online;
alter rollback segment RBS9 online;
alter rollback segment RBS10 online;
alter rollback segment RBS11 online;
alter rollback segment RBS12 online;
总的来说 恢复过程比较简单。