一则current日志损坏的数据库恢复实例,隐藏参数的使用

场景

之前写了一篇文章,是redo日志全部丢失的情况下,数据库实例恢复的方式。但是,这次特殊在,实例恢复失败的情况下。非常规打开数据库(数据库已经不一致了,但是可以通过expdp导出,导出重要的数据)

可以通过下列命令,完成实例恢复

SYS@oradb> recover database until cancel;
完成介质恢复。
SYS@oradb> alter database open resetlogs;

此用户的情况用上述命令,无法恢复!!!!!
首先,数据库的归档满了。无法checkpoint。
其次,redo日志全部没有了。

因此,关闭数据库之后。进行上述操作。alert日志报了如下错误

SQL> recover database until cancel;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done


SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 142116346 (在 09/22/2020 20:06:05 生成) 对于线程 1 是必需的 ORA-00289:
建议: /blqy/oracle/flashback/ARPDB/archivelog/2020_10_16/o1_mf_1_920_%u_.arc
ORA-00280: 更改 142116346 (用于线程 1) 在序列 #920 中

运气不好的是,没有
/blqy/oracle/flashback/ARPDB/archivelog/2020_10_16/o1_mf_1_920_%u_.arc日志文件。

因此,使用隐藏参数

Oracle 的隐含参数:
_allow_resetlogs_corruption=TRUE
SYS>alter system set "_allow_resetlogs_corruption"=true scope=spfile;
SYS>alter system reset "_allow_resetlogs_corruption" scope=spfile; 清除隐含参数
Oracle 不推荐使用这个隐含参数
该参数的含义是:允许数据库在不一致性的情况下强制打开数据库。

然后再次关闭数据库,在启动数据库,如下:

SQL> shutdown immediate;
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 2505338880 bytes
Fixed Size		    2255832 bytes
Variable Size		  620758056 bytes
Database Buffers	 1862270976 bytes
Redo Buffers		   20054016 bytes
数据库装载完毕。
数据库已经打开。

数据库被强制打开。速度做了expdp的逻辑备份。保证了数据。

原文地址:https://www.cnblogs.com/zhangshengdong/p/13826579.html