首页 > 数据库 > Oracle > redo日志损坏下的开库实验操作过程
直接删除控制文件和所有redor日志
CREATE CONTROLFILE reuse database "CRS" RESETLOGS ARCHIVELOG
LOGFILE GROUP 1 '/u01/app/oracle/oradata/CRS/REDO01.LOG' size 50m,
GROUP 2 '/u01/app/oracle/oradata/CRS/REDO02.LOG' size 50m,
GROUP 3 '/u01/app/oracle/oradata/CRS/REDO03.LOG' size 50m
DATAFILE '/u01/app/oracle/oradata/CRS/SYSAUX01.DBF',
'/u01/app/oracle/oradata/CRS/SYSTEM01.DBF',
'/u01/app/oracle/oradata/CRS/UNDOTBS01.DBF',
'/u01/app/oracle/oradata/CRS/USERS01.DBF',
'/u01/app/oracle/oradata/CRS/EXAMPLE01.DBF',
'/u01/app/oracle/oradata/CRS/MYDB.DBF'
maxlogfiles 50
maxdatafiles 200
maxlogmembers 3;

报ORA-00600[2662]错误

再次重启,报16433错误,那么就要重建控制文件
重建控制文件后,发现上面报错的2262里的第二个参数SCN值上涨了
由于我这是实验环境,因此数据库的SCN比当前SCN大不了多少,重启几次,看能不能上涨到一致状态。
经过几次重启之后,两个SCN已经快接近了
再重启一次,发现两个值全变了,特别是当前SCN值突然涨了一千多,也就是这边实验多次重启并不能成功开启数据库。(有较大疑问)

(1)启动数据库到nomount状态下,修改初始化参数并重新启动库到nomount:
alter system set "_allow_error_simulation"=true scope=spfile;
alter system set undo_management=munal scope=spfile;
(2)用上面的建控制文件语句再次重建控制文件
(3)recover数据库
recover database using backup controlfile until cancel;

(4)设置ADJUST_SCN事件,并打开数据库
alter session set events '10015 trace name adjust_scn level 1';
alter database open resetlogs;

level值计算参考:
(5)最后给临时表空间添加临时文件
alter tablespace temp add tempfile '/u01/app/oracle/oradata/CRS/TEMP01.DBF' size 30m;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30935525/viewspace-2061498/ ,如需转载,请注明出处,否则将追究法律责任。