Oracle 日志文件损坏处理

复制代码
inactive或active日志文件损坏
查看当前日志状态:current-当前正在写入的日志组,active-还未归档的日志组,inactive-已归档的日志组

SQL> select a.group#, a.member, b.status from v$logfile a, v$log b where a.group#=b.group# order by group#;

    GROUP# MEMBER                                             STATUS
---------- -------------------------------------------------- ------------
         1 /u01/app/oracle/oradata/orcltest/redo01.log        INACTIVE
         2 /u01/app/oracle/oradata/orcltest/redo02.log        CURRENT
         3 /u01/app/oracle/oradata/orcltest/redo03.log        INACTIVE
模拟故障:将inactive日志文件清空
echo ‘’ > /u01/app/oracle/oradata/orcltest/redo03.log

现象:当数据库切换到该日志组时,数据库并不知道磁盘上的日志文件有问题,只是将内容写到日志文件在内存的拷贝中,等到切换的时候,日志文件落盘就会发现该日志是有问题的,然后alert日志出现报错,不过不影响数据库正常运行,只是以后数据库切换日志会跳过该日志组
SQL> insert into scott.t01 select * from scott.t01; // 重复对一张表进行插入,模拟产生大量的日志

观察alert日志

Errors in file /u01/app/oracle/diag/rdbms/orcltest/orcltest/trace/orcltest_arc0_9006.trc:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcltest/redo03.log'
ORA-27048: skgfifi: file header information is invalid
Additional information: 12
Master archival failure: 313
SQL> alter system switch logfile;
查看v$log,可以看到group 3一直没有被用到

修复:将该日志文件重新初始化
SQL> alter database clear unarchived logfile group 3; // active的日志损坏也是类似处理,使用该命令后数据库归档会断,所以在恢复日志组后,应立即进行全库备份。
复制代码

 

posted on   数据派  阅读(6)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2024-01-28 关于三次握手和四次挥手的详解
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示