我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么解决DataGuard环境中主库RMAN删除归档时报ORA-08137问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么解决DataGuard环境中主库RMAN删除归档时报ORA-08137问题

本篇内容主要讲解“怎么解决DataGuard环境中主库RMAN删除归档时报ORA-08137问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决DataGuard环境中主库RMAN删除归档时报ORA-08137问题”吧!

1.问题描述

客户环境:2节点rac,Centos6.5,配置了一个单实例physical standby,数据库数据量200g左右,日归档量10g

问题现象:2019年11月20日,源端备份软件每天全备数据库,RMAN删除三天前归档,但是监控系统报空间不足,经过检查,归档依然保留了2019年11月12日的到2019年11月20日的归档,并没有删除三天前的归档,经过检查备份软件生成备份日志,发现日志中报错如下:

RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process
archived log file name=+FRADG/honor/archivelog/2019_11_22/thread_1_seq_365.534.1024999167 thread=1 sequence=365

2.问题原因

(1)分析原因

通过报错描述,初步判断为两方面原因:

a.有进程打开持有归档

b.归档日志并未传输应用到physical standby端,由于配置了physical standby,默认如果归档日志未在备库应用,源库不允许使用RMAN删除归档,防止发生gap。

(2)排查

a.排查是否有进程持有打开未删除归档

11g版本中asmcmd控制台中可以使用lsof命令查看asm磁盘中文件打开情况:

[root@db-oracle-node1 ~]# su - gridLast login: Thu Nov 21 20:08:26 CST 2019
[grid@db-oracle-node1 ~]$ asmcmd
ASMCMD> lsof -G FRADG

通过检查,发现有进程打开了2019年11月13日归档,通过了解,此库并未配置OGG、SharePlex等复制软件,仅有DataGuard,且DG备库在合肥,网络丢包较为严重,此时判断打开的13日归档为DG传输进程,我们去数据库中通过如下查询语句印证了该判断。

select process,pid,status,thread#,sequence# from v$managed_standby;

但是同时,通过执行如下命令发现,隔段时间可以删除一部分归档,但是报错的归档序号并没有进程打开使用,所以排除有进程持有打开导致ORA-08137可能性。

RMAN> delete archivelog until time 'sysdate-3';
或
RMAN> delete archivelog all completed before 'sysdate-3';

b.排查是否由于归档未被DataGuard应用导致无法删除

通过如下命令检查physical standby端进程状态:

select process,pid,status,thread#,sequence# from v$managed_standby;

发现RFS接收进程正在接受的归档确实为11月13日无法删除的归档sequence#。

通过如下命令检查primary端归档应用情况:

select thread#,name,max(sequence#),applied from v$archived_log where applied='YES' group by thread#,name, applied;

发现physical standby端仅仅应用到了11月13日的日志,比当前足足落后了7天,所以基本判断网络丢包严重导致发送接收缓慢,导致无法归档无法及时被physical端接收应用导致无法删除。

3.问题解决

通过与客户了解,客户基本放弃了使用该physical standby,所以我们可以使用如下几种解决办法:

(1)选择合适时机,清除DG环境

a.将primary置为最大性能模式

SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

b.重置Data Guard初始化参数

LOG_ARCHIVE_CONFIG
DB_FILE_NAME_CONVERT
LOG_FILE_NAME_CONVERT
LOG_ARCHIVE_DEST_n指向Standby Database以及对STANDBY_LOGFILES有效的该参数
LOG_ARCHIVE_DEST_STATE_n
STANDBY_ARCHIVE_DEST
STANDBY_FILE_MANAGEMENT
FAL_SERVER
FAL_CLIENT

c.删除Standby Redologs

SQL> SELECT GROUP# FROM V$STANDBY_LOG;
SQL> ALTER DATABASE DROP STANDBY LOGFILE GROUP <GROUP_NUMBER>;

d.如果需要,可以将physical standby转换为独立的数据库使用

$ sqlplus / as sysdba
SQL> ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

(2)临时解决该问题,可以通过设置参数log_archive_dest_state_2为defer以及隐含参数_deferred_log_dest_is_valid为false来消除删除报ORA-08137问题

_deferred_log_dest_is_valid参数默认为TRUE,控制log_archive_dest_state_n参数设置为defer时,是否允许primary归档在未被physical standby应用时删除,防止再次将log_archive_dest_state_n设置为enable时,gap发生,导致physical standby不可用,该参数在11.2.0.4版本中为可动态调整参数,可以在线修改。

SQL> alter system set log_archive_dest_state_2=defer scope=both;
SQL> alter system set "_deferred_log_dest_is_valid"='FALSE' scope=both;

(3)删除归档使用force选项

RMAN > delete force archivelog until time 'sysdate-3' ;

到此,相信大家对“怎么解决DataGuard环境中主库RMAN删除归档时报ORA-08137问题”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么解决DataGuard环境中主库RMAN删除归档时报ORA-08137问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

目录