作者:@张扶摇
本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhangshengdong/p/13826579.html
目录
场景
场景
之前写了一篇文章,是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的逻辑备份。保证了数据。
感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统