dg broker校验失败的一个奇怪问题(r8笔记第50天)
前几天碰到一个看起来有些奇怪的例子,今天抽空把分析过程整理了一下。
有一主一备的一套测试环境,之前环境在我手里,交给另外一个同事之后,重新搭建了dataguard,我检查了一圈,发现都没有问题,然后过了一个星期的 样子,无意中再次查看的时候,发现这个备库竟然在dg broker中的状态是disable,当然我也不能看到这个现象就反问同事,说当时dataguard怎么有这种低级操作问题。我想了想,根据我的印 象,当时也确实是搭建成功了。这些天这个主库也从来没有任何的操作,zabbix也一直没有相关的报警,这个问题引起了我的兴趣,我们来查一查。
大体的架构环境是这样的,有两台独立的测试环境,目前因为schema有一些重合,没有整合到一起,因为平时的负载极小,而且存在单点故障,就把原来的逻 辑备份方式改成了dataguard。这样我们基本就从这些逻辑备份校验中解放出来了。因为平时负载小,使用率不高,所以就把备库都搭建到了同一个台服务 器上。
这次dg broker校验出问题的是test1的主库
现象就是:
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
当时的处理思路是尝试enable,结果抛错了。
DGMGRL> enable database s2actvdb;
Error: ORA-16631: operation requires shutdown of database or instance ""
Failed.
DGMGRL> show database verbose s2actvdb;
Database - s2actvdb
Role: PHYSICAL STANDBY
Intended State: OFFLINE
Transport Lag: (unknown)
Apply Lag: (unknown)
Real Time Query: OFF
Instance(s):
actvdb
Properties:
DGConnectIdentifier = 's2actvdb'
ObserverConnectIdentifier = ''
LogXptMode = 'ASYNC'
DelayMins = '0'
Binding = 'optional'
MaxFailure = '0'
MaxConnections = '1'
...
InconsistentProperties = '(monitor)'
InconsistentLogXptProps = '(monitor)'
SendQEntries = '(monitor)'
LogXptStatus = '(monitor)'
RecvQEntries = '(monitor)'
SidName = 'actvdb'
StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxx)(PORT=1528))(CONNECT_DATA=(SERVICE_NAME=s2actvdb_DGMGRL)(INSTANCE_NAME=actvdb)(SERVER=DEDICATED)))'
StandbyArchiveLocation = 'USE_DB_RECOVERY_FILE_DEST'
AlternateLocation = ''
LogArchiveTrace = '0'
LogArchiveFormat = '%t_%s_%r.dbf'
TopWaitEvents = '(monitor)'
Database Status:
SHUTDOWN
然后尝试设置备库为online
DGMGRL> edit database s2actvdb set state='ONLINE';
Error: ORA-16525: the Data Guard broker is not yet available
Failed.
这个时候虽然抛错,dg broker的校验结果却发生了变化。
DGMGRL> show configuration;
Configuration - testdb_dg
Protection Mode: MaxPerformance
Databases:
sactvdb - Primary database
s2actvdb - Physical standby database
Error: ORA-16525: the Data Guard broker is not yet available
Fast-Start Failover: DISABLED
Configuration Status:
ERROR
然后折腾了一番,发现原因是log_archive_dest_state_2的值为RESET,重新置为ENABLE之后就没有问题了。
那么问题就来了,为什么这个地方的值变为了reset。
经过一番排查,发现这台服务器中的备库1在本周重启了,而且还是在nomount阶段。
当然这个问题还是很好定位,最后发现是同事搭建test2的备库的时候,无意中碰到了test1的备库,做了重启的操作。
那么就问题而言,就更奇怪了,先不说重启备库的操作失误,就技术角度而言,重启备库会直接导致log_archive_dest_state_2为reset,到底是什么原因导致这种情况发生。
于是开始翻找日志的一些痕迹。
RESET相关的日志为:
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
Tue Mar 22 17:53:59 2016
ALTER SYSTEM SET log_archive_dest_state_2='RESET' SCOPE=BOTH;
在置为RESET之前出现了网络连接问题,时间点就是备库重启的时间,看起来确实是备库重启导致的,为什么会有这个特殊的内部操作呢。
准备再次复现这个问题,但是重启之后再就没有出现这个问题。问题虽然解决了。但是这个问题就一直在脑海中萦绕,因为我还没有找到问题的根本原因。为了进一步验证,我开始准备急需查看更多的日志,尝试复现这个问题。
- 1元搭建自己的云服务器&解析域名
- 洛谷P4180 [Beijing2010组队]次小生成树Tree
- 携程开源数据库访问框架
- LOJ #108. 多项式乘法
- 【作业】HansBug的前三次OO作业分析与小结
- 【备忘】Idea的那些事
- 洛谷P1919 【模板】A*B Problem升级版(FFT快速傅里叶)
- win10下vagrant+centos7 rails虚拟开发机配置流程
- 再免费多看一章--k-means++
- 面向对象先导课感想
- 【LATEX】个人版latex论文模板
- 【前端】wangEditor(富文本编辑器) 简易使用示例
- 【前端】ACE Editor(代码编辑器) 简易使用示例
- LOJ#6277. 数列分块入门 1
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 类加载机制
- 使用R语言绘制string蛋白互作图
- R语言教程,去除重复的蛋白质、基因互作关系
- Python自学成才之路 with到上下文管理器
- Python自动化运维之LVS
- Python自动化运维之Keepalived
- Python人工智能经典算法之机器学习第一篇
- Python人工智能经典算法之机器学习第二篇
- Python人工智能经典算法之机器学习第三篇
- Python人工智能经典算法之K-近邻算法
- Python人工智能经典算法之线性回归
- Python人工智能经典算法之逻辑回归
- Python人工智能经典算法之决策树
- Python人工智能经典算法之聚类算法
- 【NPM库】- 0x06 - WebSocket