关于ORACLE归档日志删除不完全问题

关于Oracle归档日志删除(前提是数据库处于归档模式 SQL>archive log list;--Automatic archival 为 Enabled),目前遇到过两种情况,一是先手动删除了归档文件(服务器直接删除),二是通过Rman删除,一方案可能会存在数据库信息冗余,二方案可能会造成实际归档文件数量大于数据库中记录的文件数量,解决方案:

 

一:手动删除归档文件(服务器直接删除)造成的问题解决

场景:服务器中直接删除归档文件,造成 v$archived_log 视图中记录的日志文件会多余实际归档文件数量,

1、首先查看归档日志目录下文件数量  ls -l | wc -l 

2、执行SQL>select count(*) from v$archived_log;--检查数据库中记录的归档文件数量(正常情况下sql数量应该大于第一步查询的文件数量,因为已经删除了服务器归档文件)

3、进入Rman,

rman target /

执行 crosscheck archivelog all; --检查控制文件和实际物理文件的差别。(此时显示的文件数量应小于上面SQL的数量,原理同第二步)

然后执行 delete expired archivelog all;  --删除控制文件中不存在的失效的归档日志

然后可以再次检查归档路径下文件数量与crosscheck数量是否相等,

A、若相等,则归档文件都是可以关联到的,

然后检查 SQL与归档文件数量是否相等,

1.1、若相等,则表名归档文件与控制文件记录的归档信息一一对应,可以结束退出。

1.2、若不等,即SQL查询数量大于归档文件数量,则表名数据库中记录的归档信息多余实际归档文件数量,

执行 SQL>select dest_id,sequence#,name,blocks from v$archived_log ; 会发现有很多NAME字段为空的数据

这种数据是通过非正常途径删除归档文件造成,可无需理会,若想让查询的数量与归档文件保持一致可采用以下方案

a)、rman>delete archivelog all;--删除所有归档文件

b)、rman>execute sys.dbms_backup_restore.resetCfileSection(11);--清空控制文件记录的归档信息,11代表归档

(SQL>

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值