暂无图片
Oracle 11g的所有redo日志都被删除了,也没做归档,有什么办法强起数据库吗?
我来答
分享
暂无图片 匿名用户
Oracle 11g的所有redo日志都被删除了,也没做归档,有什么办法强起数据库吗?

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

我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
Kubee

resetlog

暂无图片 评论
暂无图片 有用 0
打赏 0
布衣
暂无图片

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

暂无图片 评论
暂无图片 有用 0
打赏 0
刘贵宾

如果损坏的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

可能会丢失数据的

暂无图片 评论
暂无图片 有用 1
打赏 0
Thomas

这种极端情况没有遇到过,所以也没法试验,你照下面的试试:

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;查到)


暂无图片 评论
暂无图片 有用 0
打赏 0
Thomas

刘贵宾,如果_allow_resetlogs_corruption为FALSE,DB到NOMOUNT状态,然后重建CONTROLFILE和REDO LOG,也行吧?

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏