dg broker校验失败的一个奇怪问题(二) (r8笔记第51天)

对昨天提出的问题做了一个简单的分析和排查,也算是有了一个交代,上一篇文章在 dg broker校验失败的一个奇怪问题

我查看了最近的日志,发现在半个月以前有一行日志引起了我的注意。 Thu Mar 03 17:32:12 2016 ALTER SYSTEM SET log_archive_dest_state_2='DEFER' SCOPE=BOTH; 关于这个DEFER的设置,让我想起了之前的一个设置。 原来的主库发生了硬件电源故障,启用备用电源之后,勉强撑了几个小时,因为数据库之前使用的异机逻辑备份,恢复起来还是需要些时间,直接就找了台机器搭建 了dataguard,然后做了switchover,把数据库迁移到了新的服务器上,然后在新的备库上又搭建了一套相应的dataguard环境,在搭 建新的dataguard之前,原有存在电源故障的机器还是可用,但是因为硬件已经过保,就直接做了服务器退还。为了防止后续的归档检查失败,就设置了 log_archive-dest_state_2=DEFER,搭建dataguard成功之后,就把服务器从dg broker里删除了。

所以从这个不起眼的过程来看,log_archive_dest_state有了三个状态的切换,defer,reset,enable 我们能不能简单复现一下这个问题,答案是肯定的。而且可以直接用这套环境来模拟一下。 首先dg broker检查没有任何问题。 DGMGRL> show configuration Configuration - testdb_dg Protection Mode: MaxPerformance Databases: sactvdb - Primary database s2actvdb - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS 我们在主库设置归档路径状态为defer SQL> ALTER SYSTEM SET log_archive_dest_state_2=DEFER; System altered. 这个时候如果再次检查,dg broker就是下面的状态了。 DGMGRL> show configuration; Configuration - testdb_dg Protection Mode: MaxPerformance Databases: sactvdb - Primary database Error: ORA-16764: redo transport service to a standby database is not running s2actvdb - Physical standby database Fast-Start Failover: DISABLED Configuration Status: ERROR 然后我们把备库停掉。来看看主库的变化。 可以从主库日志看到下面的信息,自defer的日志之后,开始有了一些网络的检查,失败几次之后,在日志最后做了一个reset的操作。 ALTER SYSTEM SET log_archive_dest_state_2='DEFER' SCOPE=BOTH; Sat Mar 26 20:35:54 2016 *********************************************************************** Fatal NI connect error 12528, connecting to: (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxx)(PORT=1528)))(CONNECT_DATA=(SERVICE_NAME=s2actvdb_DGB)(CID=(PROGRAM=oracle)(HOST=testdb2.test.com)(USER=oracle)))) VERSION INFORMATION: TNS for Linux: Version 11.2.0.3.0 - Production TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.3.0 - Production Time: 26-MAR-2016 20:35:54 Tracing not turned on. Tns error struct: ns main err code: 12564 TNS-12564: TNS:connection refused ns secondary err code: 0 nt main err code: 0 nt secondary err code: 0 nt OS err code: 0 *********************************************************************** Fatal NI connect error 12528, connecting to: (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.127.130.58)(PORT=1528)))(CONNECT_DATA=(SERVICE_NAME=s2actvdb_DGB)(CID=(PROGRAM=oracle)(HOST=testdb2.test.com)(USER=oracle)))) VERSION INFORMATION: TNS for Linux: Version 11.2.0.3.0 - Production TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.3.0 - Production Time: 26-MAR-2016 20:35:54 Tracing not turned on. Tns error struct: ns main err code: 12564 TNS-12564: TNS:connection refused ns secondary err code: 0 nt main err code: 0 nt secondary err code: 0 nt OS err code: 0 *********************************************************************** 。。。 LNS: Attempting destination LOG_ARCHIVE_DEST_2 network reconnect (3135) LNS: Destination LOG_ARCHIVE_DEST_2 network reconnect abandoned Error 3135 for archive log file 2 to 's2actvdb' Errors in file /U01/app/oracle/diag/rdbms/sactvdb/actvdb/trace/actvdb_nsa2_20231.trc: ORA-03135: connection lost contact LNS: Failed to archive log 2 thread 1 sequence 10137 (3135) Sat Mar 26 20:36:04 2016 *********************************************************************** 。。。 TNS-12564: TNS:connection refused ns secondary err code: 0 nt main err code: 0 nt secondary err code: 0 nt OS err code: 0 Sat Mar 26 20:36:04 2016 ALTER SYSTEM SET log_archive_dest_state_2='RESET' SCOPE=BOTH; 然后重启备库到open状态,稍作等待,检查dg broker的状态,一切显示就正常了。 DGMGRL> show configuration; Configuration - testdb_dg Protection Mode: MaxPerformance Databases: sactvdb - Primary database s2actvdb - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS 可以看到这个问题看起来比较清楚了,归档路径从defer变为了reset,然后变为了enable. 那么这个问题不设置defer,是否会出现reset的操作呢,能否复现,可以简单再测试一下。 再次停掉备库,然后查看主库的日志如下: Fatal NI connect error 12514, connecting to: (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.127.130.58)(PORT=1528)))(CONNECT_DATA=(SERVICE_NAME=s2actvdb_DGB)(CID=(PROGRAM=oracle)(HOST=testdb2.test.com)(USER=oracle)))) VERSION INFORMATION: TNS for Linux: Version 11.2.0.3.0 - Production TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.3.0 - Production Time: 26-MAR-2016 20:41:48 Tracing not turned on. Tns error struct: ns main err code: 12564 TNS-12564: TNS:connection refused ns secondary err code: 0 nt main err code: 0 nt secondary err code: 0 nt OS err code: 0 Sat Mar 26 20:41:48 2016 ALTER SYSTEM SET log_archive_dest_state_2='RESET' SCOPE=BOTH; 可以看到,日志末尾会有reset的字样,所以说和之前的defer是没有直接关系,dg broker的配置下,这是一个状态的自动变化。 那么备库停掉之后,再次重启是否会有dg broker中备库为disable的状态呢。 DGMGRL> show configuration; Configuration - testdb_dg Protection Mode: MaxPerformance Databases: sactvdb - Primary database s2actvdb - Physical standby database (disabled) Fast-Start Failover: DISABLED Configuration Status: SUCCESS 可以简单复现问题,那就是备库在nomount状态,11g环境中,mount,open状态下都没有此类问题,也是因为这个时候备库的RFS,MRP可以正常工作。 复现过程如下: 重启备库到nomount状态 DGMGRL> show configuration; Configuration - testdb_dg Protection Mode: MaxPerformance Databases: sactvdb - Primary database s2actvdb - Physical standby database (disabled) Fast-Start Failover: DISABLED Configuration Status: SUCCESS 启动备库到mount DGMGRL> show configuration; Configuration - testdb_dg Protection Mode: MaxPerformance Databases: sactvdb - Primary database s2actvdb - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS 所以通过以上的测试复现,可以看到这个问题其实不奇怪,备库重启,但是备库在nomount阶段导致了这个奇怪的现象,但是对于dataguard而言,归档路径的状态有defer,reset,enable几种情况,可能会以reset为一个临界点来做转换。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2016-03-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏bboysoul

cve-2017-11882漏洞利用

这是一个潜伏了17年之久的远程代码执行漏洞,这个漏洞影响了目前所有的流行office软件,原理是利用了office的一个EQNEDT32.EXE组件,就是公式编...

934
来自专栏杨建荣的学习笔记

由报警邮件分析发现的备库oracle bug(r7笔记第12天)

昨天到公司之后,收到两份封报警邮件,可以看到在早晨6:30左右主库的v$dataguard_status检查时发现了一个错误。然后再2分钟后就自动恢复了。 一般...

2696
来自专栏乐沙弥的世界

MySQL 自动故障转移工具--mysqlfailover

3636
来自专栏程序员的酒和故事

跟Google学写代码--Chromium/base--windows_version源码学习及应用

Chromium是一个伟大的、庞大的开源工程,很多值得我们学习的地方。 前面写道: 《跟Google学写代码–Chromium/base–stl_util源...

3617
来自专栏Android 开发学习

IntelliJ IDEA spring mvc +mybatis 环境搭建服务器(中)

2353
来自专栏Kubernetes

Kubernetes Nginx Ingress Controller源码分析

main controllers/nginx/pkg/cmd/controller/main.go:29 func main() { // start a ...

55810
来自专栏微服务那些事儿

Spring Cloud 系列-事件监听

强推一波:https://segmentfault.com/ls/1650000011386794

2404
来自专栏乐沙弥的世界

重新配置与卸载 11gR2 Grid Infrastructure

      Oracle 11g R2 Grid Infrastructure 的安装与配置较之前的版本提供了更多的灵活性。在Grid Infrastructu...

1021
来自专栏一个会写诗的程序员的博客

第11章 Spring Boot应用监控第11章 Spring Boot应用监控小结

在实际的生产系统中,我们怎样知道我们的应用运行良好呢?我们往往需要对系统实际运行的情况(各种cpu,io,disk,db,业务功能等指标)进行监控运维。这需要耗...

3103
来自专栏bboysoul

linux 格式化硬盘

fdisk /dev/sda 输入o建立dos分区表 输入n建立一个新的分区 输入p建立一个主分区,或者输入e建立一个逻辑分区 之后输入分区号码mbr只...

2295

扫码关注云+社区

领取腾讯云代金券