配置dg broker的问题分析及修复

最近从同事那儿接手了一套新环境,备库因为服务器问题已经下架,重新配了一台服务器,所以需要搭一套备库,主库已经配置好了,而且同事已经把在主库把dg broker配好了。
使用dgmgrl来验证,只有主库孤零零的在那儿。
DGMGRL> show configuration;
Configuration - dg_test
  Protection Mode: MaxPerformance
  Databases:
    stest  - Primary database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
备库搭建的过程也还算顺利,中间也经历了一些小插曲,不过问题最后都得到解决。duplicate同步之后,开始启用dg broker,因为主库的dg broker配置已经有了,所以直接添加备库。
数据库db_name为test,主库的unique_name为stest,备库为s2test
DGMGRL> add database s2test as
  connect identifier is s2test
  maintained as physical;
想必添加完之后就开始enable database就大功告成,没想到还是有问题。
DGMGRL> show database verbose s2test
Database - s2test
Database Status:
。。。
DGM-17016: failed to retrieve status for database "s2tlest"
ORA-16664: unable to receive the result from a database
这个时候借助oerr来看看错误信息
$ oerr ora 16664
16664, 0000, "unable to receive the result from a database"
// *Cause:  During execution of a command, a database in the Data Guard
//          broker configuration failed to return a result.
// *Action: Check Data Guard broker logs for the details of the failure.
//          Ensure network communication is working properly amongst the
//          members of the configuration. Fix any possible network problems
//          and reissue the command.

dg broker的错误解释
$ oerr dgm 17016
17016, 00000, "failed to retrieve status for database \"%s\""
// *Cause:  DGMGRL could not retrieve the StatusReport property from the given
//          database and thus could not report the database status.
// *Action: See accompanying messages for details.

看来没有得到更多的信息,就从备库的dg broker日志中查看,
######dataguard log
Warning: Property 'LogArchiveFormat' has inconsistent values:METADATA='%t_%s_%r.dbf', SPFILE='(missing)', DATABASE='%t_%s_%r.dbf'
Failed to send message to site stest. Error code is ORA-16501.
10/10/2015 14:04:36
Warning: Property 'ArchiveLagTarget' has inconsistent values:METADATA='0', SPFILE='', DATABASE='0'
Warning: Property 'LogArchiveMaxProcesses' has inconsistent values:METADATA='4', SPFILE='', DATABASE='4'
Warning: Property 'LogArchiveMinSucceedDest' has inconsistent values:METADATA='1', SPFILE='', DATABASE='1'
SPFILE is missing value for property 'LogArchiveTrace' with sid='test'
Warning: Property 'LogArchiveTrace' has inconsistent values:METADATA='0', SPFILE='(missing)', DATABASE='0'
SPFILE is missing value for property 'LogArchiveFormat' with sid='test'
Warning: Property 'LogArchiveFormat' has inconsistent values:METADATA='%t_%s_%r.dbf', SPFILE='(missing)', DATABASE='%t_%s_%r.dbf'
Failed to send message to site stest. Error code is ORA-16501.
从日志来看备库是连接主库有问题,
$ oerr  ora 16501
16501, 00000, "the Data Guard broker operation failed"
// *Cause:  The Data Guard broker operation failed.
// *Action: See accompanying messages for details.

如此来看主库连接备库有问题,备库说连接主库有问题,查看了好几遍网络配置,都没有发现任何问题。
在主库中使用dgmgrl来查看更多的细节信息。
DGMGRL> show database verbose stest;
Database - stest
  Role:            PRIMARY
  Intended State:  TRANSPORT-ON
  Instance(s):
    test
  Properties:
    DGConnectIdentifier             = 'test01'
    ObserverConnectIdentifier       = ''
    LogXptMode                      = 'ASYNC'
    DelayMins                       = '0'
    Binding                         = 'optional'
    MaxFailure                      = '0'
    MaxConnections                  = '1'
    ReopenSecs                      = '300'
    NetTimeout                      = '30'
    RedoCompression                 = 'DISABLE'
    LogShipping                     = 'ON'
    PreferredApplyInstance          = ''
    ApplyInstanceTimeout            = '0'
    ApplyParallel                   = 'AUTO'
    StandbyFileManagement           = 'AUTO'
    ArchiveLagTarget                = '0'
    LogArchiveMaxProcesses          = '2'
    LogArchiveMinSucceedDest        = '1'
    DbFileNameConvert               = '/U01/app/oracle/oradata/test, /U01/app/oracle/oradata/test'
    LogFileNameConvert              = '/U01/app/oracle/oradata/test, /U01/app/oracle/oradata/test'
    FastStartFailoverTarget         = ''
    InconsistentProperties          = '(monitor)'
    InconsistentLogXptProps         = '(monitor)'
    SendQEntries                    = '(monitor)'
    LogXptStatus                    = '(monitor)'
    RecvQEntries                    = '(monitor)'
    SidName                         = 'test'
    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test01.cyou.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=stest_DGMGRL)(INSTANCE_NAME=test)(SERVER=DEDICATED)))'
    StandbyArchiveLocation          = '/U01/app/oracle/arch'
    AlternateLocation               = ''
    LogArchiveTrace                 = '0'
    LogArchiveFormat                = '%t_%s_%r.dbf'
    TopWaitEvents                   = '(monitor)'
Database Status:
SUCCESS

查看备库的
DGMGRL> show database verbose s2test
Database - s2test
  Role:            PHYSICAL STANDBY
  Intended State:  APPLY-ON
  Transport Lag:   (unknown)
  Apply Lag:       (unknown)
  Real Time Query: OFF
  Instance(s):
    test
  Properties:
    DGConnectIdentifier             = 's2test'
    ObserverConnectIdentifier       = ''
    LogXptMode                      = 'ASYNC'
    DelayMins                       = '0'
    Binding                         = 'optional'
    MaxFailure                      = '0'
    MaxConnections                  = '1'
    ReopenSecs                      = '300'
    NetTimeout                      = '30'
    RedoCompression                 = 'DISABLE'
    LogShipping                     = 'ON'
    PreferredApplyInstance          = ''
    ApplyInstanceTimeout            = '0'
    ApplyParallel                   = 'AUTO'
    StandbyFileManagement           = 'AUTO'
    ArchiveLagTarget                = '0'
    LogArchiveMaxProcesses          = '4'
    LogArchiveMinSucceedDest        = '1'
    DbFileNameConvert               = ''
    LogFileNameConvert              = ''
    FastStartFailoverTarget         = ''
    InconsistentProperties          = '(monitor)'
    InconsistentLogXptProps         = '(monitor)'
    SendQEntries                    = '(monitor)'
    LogXptStatus                    = '(monitor)'
    RecvQEntries                    = '(monitor)'
    SidName                         = 'test'
    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=stest.cyou.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=s2test_DGMGRL)(INSTANCE_NAME=test)(SERVER=DEDICATED)))'
    StandbyArchiveLocation          = '/U01/app/oracle/product/11.2.3/db_1/dbs/arch'
    AlternateLocation               = ''
    LogArchiveTrace                 = '0'
    LogArchiveFormat                = '%t_%s_%r.dbf'
    TopWaitEvents                   = '(monitor)'
Database Status:
DGM-17016: failed to retrieve status for database "s2test"
ORA-16664: unable to receive the result from a database

最后查看mos,发现一篇文章比较贴近,不过描述的问题原因还是有些差别。
Data Guard Standby Database Broker Configuration error DGM-17016: failed to retrieve status for database (文档 ID 1631552.1)
进一步排除,排除了防火墙的影响,甚至考虑重启一下数据库,结果重启库的时候还确实有问题
SQL> startup
ORACLE instance started.
Total System Global Area 1.5734E+10 bytes
Fixed Size                  2243832 bytes
Variable Size            1375732488 bytes
Database Buffers         1.4328E+10 bytes
Redo Buffers               27852800 bytes
Database mounted.
ORA-04031: unable to allocate 32 bytes of shared memory ("shared pool","ALTER
DATABASE OPEN","SQLA","tmp")
不过这个和dg broker的问题是没有关系的,是sga配置的shared pool太小,process配置了3000,结果就导致启动的时候shared pool过小起不来了。
备库数据库启动了,但是dg broker的验证还是照样有问题,这个时候就仔细比对show database verbose中的信息
发现主库的信息有一点特别。
DGMGRL> show database verbose stest;
Database - stest
  Role:            PRIMARY
  Intended State:  TRANSPORT-ON
  Instance(s):
    test
  Properties:
    DGConnectIdentifier             = 'test01'
特别就特别在这个地方,这个地方最好应该是和db_unique_name一致,结果设置成了test01,备库中网络服务中也没有配置这个服务名
简单修改一下,修改为db_unique_name
DGMGRL> edit database stest set property DGConnectIdentifier ='stest';
Property "dgconnectidentifier" updated
再次查看就没有问题了。
DGMGRL> show configuration;
Configuration - dg_test
  Protection Mode: MaxPerformance
  Databases:
    stest  - Primary database
    s2test - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
可能之前的同事都是习惯使用db_name来作为主库的dg配置,结果自己还纠结了半天,排除了不少的因素,最后发现竟然是这么一个细小的地方,修改为db_unique_name就可以了,可见对于这些小的细节上最好还是能够有一个统一的标准规范,这样也好规范大家,避免这类问题带来的困扰。

时间: 2024-09-21 01:34:49

配置dg broker的问题分析及修复的相关文章

dg broker配置的问题及分析

今天在配置一个备库的时候碰到了一些问题,话说配置dg broker真没什么特别需要注意的细节了,本身已经给DBA省了很大的事儿了. 但是有时候就是会出现一些稀奇古怪的小问题.这个环境又非常重要,备库已经因为硬件故障报废了,现在刚搭的备库就想赶紧把它跑起来. 简单添加配置之后,spfile,防火墙,端口,listener等等因素都满足了.感觉就是一蹴而就的事情了. 但是show configuration的时候就是报错. DGMGRL> show configuration; Configurat

dg broker校验失败的一个奇怪问题(二)

对昨天提出的问题做了一个简单的分析和排查,也算是有了一个交代,上一篇文章在 dg broker校验失败的一个奇怪问题 http://blog.itpub.net/23718752/viewspace-2064499/ 我查看了最近的日志,发现在半个月以前有一行日志引起了我的注意. Thu Mar 03 17:32:12 2016 ALTER SYSTEM SET log_archive_dest_state_2='DEFER' SCOPE=BOTH; 关于这个DEFER的设置,让我想起了之前的一

Oracle 11g Dataguard物理备库配置(四) broker snapshot standby测试

Oracle 11g Dataguard Snapshot Standby数据库功能,可将备库置于打开读写状态,进行模拟生产环境主库中测试.当备库Snapshot standby任务完成后,可以切换回物理备库角色.在Snapshot Standby数据库状态下,备库是可以接受主库传过来的日志,但是不能够将变化应用在备库中. 本文采用Oracle 11g Dataguard broker snapshot standby配置 1. 采用dg broker配置snapshot standby配置 1

dg broker校验失败的一个奇怪问题

前几天碰到一个看起来有些奇怪的例子,今天抽空把分析过程整理了一下. 有一主一备的一套测试环境,之前环境在我手里,交给另外一个同事之后,重新搭建了dataguard,我检查了一圈,发现都没有问题,然后过了一个星期的样子,无意中再次查看的时候,发现这个备库竟然在dg broker中的状态是disable,当然我也不能看到这个现象就反问同事,说当时dataguard怎么有这种低级操作问题.我想了想,根据我的印象,当时也确实是搭建成功了.这些天这个主库也从来没有任何的操作,zabbix也一直没有相关的报

聊聊Data Guard中的DG Broker

    DG Broker是Oracle为Data Guard维护提供的一个很不错的工具,从我的实际使用来看,早期的版本中似乎大家都还是存在一定的思维定式,认为手工维护已经足够了.这个工具就不那么需要了,我们完全可以脱离开这些工具来直观的使用命令行的方式来维护,这个观点也没错,不过从与时俱进的角度来看,本来能够让你更轻松的一个工具,如果不用实在是太可惜了.     DG Broker在数据库端需要启用一个后台进程dmon来维护,这个后台进程启动,需要设置dg_broker_start为true即

zabbix中配置dg的监控

在zabbix中有了orabbix的辅助,监控效率大大提高,但是因为orabbix是基于jdbc的方式,有些监控还是有一些限制. 比如dataguard的检查,如果采用dg broker来检查,效果就更直观也更可信. DGMGRL> show configuration; Configuration - csdb   Protection Mode: MaxPerformance   Databases:     test- Primary database     stest- Physica

360-FAAR Firewall Analysis Audit and Repair 0.2.3发布 防火墙分析和修复软件

360-FAAR(Firewall Analysis, Audit, and Repair)是一个离线的定期安全和http://www.aliyun.com/zixun/aggregation/13748.html">基础架构管理软件,用于防火墙分析.检测和修复.它可以读取检查站FW1(odumper格式)的配置和ScreenOS防火墙政策,并对它们进行比较到logexports和系统日志. 360-FAAR 支持使用兼容性和专一性的CIDR过滤器,可以筛选虚拟化的大型规则库到较小规模,同

360-FAAR 0.2.0发布 防火墙分析和修复软件

360-FAAR(Firewall Analysis, Audit, and Repair)是一个离线的定期安全和http://www.aliyun.com/zixun/aggregation/13748.html">基础架构管理软件,用于防火墙分析.检测和修复.它可以读取检查站FW1(odumper格式)的配置和ScreenOS防火墙政策,并对它们进行比较到logexports和系统日志. 360-FAAR 支持使用兼容性和专一性的CIDR过滤器,可以筛选虚拟化的大型规则库到较小规模,同

360-FAAR v0.1.9发布 防火墙分析和修复软件

360-FAAR(Firewall Analysis, Audit, and Repair)是一个离线的定期安全和http://www.aliyun.com/zixun/aggregation/13748.html">基础架构管理软件,用于防火墙分析.检测和修复.它可以读取检查站FW1(odumper格式)的配置和ScreenOS防火墙政策,并对它们进行比较到logexports和系统日志. 360-FAAR 支持使用兼容性和专一性的CIDR过滤器,可以筛选虚拟化的大型规则库到较小规模,同