
Oracle 11g的所有redo日志都被删除了,也没做归档,有什么办法强起数据库吗?

https://www.modb.pro/doc/48691
希望里面有你需要的答案


如果损坏的redo log是INACTIVE状态的,也就是实例崩溃恢复用不到的redo log,那处理起来比较容易,直接alter database clear logfile group #;或alter database clear unarchived logfile group #;重建日志组就行了。建议重建日志文件级后对数据库做一个全库备份,特别是强制clear后,造成的归档日志文件断层。
如果损坏的redo log是ACTIVE或CURRENT状态的,也就是实例崩溃恢复需要用到的redo log,那处理起来就比较麻烦了,损坏这种redo log就意味着丢失数据。
这种情况下使用隐含参数_allow_resetlogs_corruption,创建pfile,把*._allow_resetlogs_corruption=TRUE加入到pfile中。然后mount数据库,强制不完全恢复recover database until cancel;,再open resetlogs
可能会丢失数据的


这种极端情况没有遇到过,所以也没法试验,你照下面的试试:
startup nomount;
生成可读的控制文件内容:
alter database backup controlfile to trace as '/home/oracle/ctlbak.ctl';
关库
shutdown immediate;
打开ctlbak.ctl,拷贝-- Set #2. RESETLOGS case下的内容,大概是以下这样:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "SID" RESETLOGS FORCE LOGGING ARCHIVELOG
MAXLOGFILES 16...
然后运行拷贝的内容,重建控制文件和REDO LOG
再alter database mount;
recover database; (这句未必有用,因为旧的REDO LOG没了,而ARCHIVELOG压根就没有,所以这句似乎也干不了啥,权且运行它吧)
alter database open;
--这里需要将临时文件重用
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/orcl/temp01.dbf' REUSE; (tempfile的位置,在mount时可以select name from v$tempfile;查到)


