关于dg broker的简单配置(r5笔记第99天)

时间:2022-05-04
本文章向大家介绍关于dg broker的简单配置(r5笔记第99天),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

dataguard broker是在dataguard使用基础上提供的一个工具,可以把原本复杂的命令控制语句集成起来,比如switchover,failover等等,可能在多个备库的情况下需要敲不少的命令,这个dg broker的优越性就显示出来了。 当然dg broker需要启用还是需要预备一些条件的,比如需要设置local_listener,需要在spfile的基础上,需要在网络配置中进行dgmgrl相关的标示。 应该是在内部实现中默认拥有这些配置。 我们先来看看一个简单的配置情况。 首先启用dg broker,在数据库参数中有一个dg_broker_start的参数,默认为false,改为true即可。在后台进程中就会看见dmon相关的进程起来了。 SQL> alter system set dg_broker_start=true ; System altered.

如果要连入dg broker也很简单,就是使用sys用户,和建立一个数据库连接差不多。 [ora11g@oel1 admin]$ dgmgrl DGMGRL for Linux: Version 11.2.0.1.0 - Production

Copyright (c) 2000, 2009, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information. DGMGRL> connect sys/oracle@test11g Connected. 查看配置信息。因为这个时候还没有进行基本的配置,还是看不到什么信息的。 DGMGRL> show configuration ORA-16532: Data Guard broker configuration does not exist

Configuration details cannot be determined by DGMGRL 这个时候需要做两种配置,一种是primary database的配置,另外一种是standby的配置 主库的配置如下: DGMGRL> create configuration 'TEST11G' as primary database is TEST11G connect identifier is TEST11G; Configuration "TEST11G" created with primary database "test11g" 备库的配置如下: DGMGRL> add database DG11G as connect identifier is DG11G maintained as physical; Database "dg11g" added 这个时候再来查看配置信息就会显出出来了,不过可以看到配置还没有启用。

DGMGRL> show configuration;
Configuration - TEST11G
  Protection Mode: MaxPerformance
  Databases:
    test11g - Primary database
    dg11g   - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED

如果想查看更多的关于主库,备库的信息,可以使用verbose的选项

DGMGRL> show database verbose TEST11G
Database - test11g
  Role:            PRIMARY
  Intended State:  OFFLINE
  Instance(s):
    TEST11G
  Properties:
    DGConnectIdentifier             = 'test11g'
    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               = '/u02/ora11g/oradata/TEST11G, /u02/dg11g/oradata/DG11G'
    LogFileNameConvert              = '/u02/ora11g/oradata/TEST11G, /u02/ora11g/oradata/DG11G'
    FastStartFailoverTarget         = ''
    StatusReport                    = '(monitor)'
    InconsistentProperties          = '(monitor)'
    InconsistentLogXptProps         = '(monitor)'
    SendQEntries                    = '(monitor)'
    LogXptStatus                    = '(monitor)'
    RecvQEntries                    = '(monitor)'
    HostName                        = 'oel1'
    SidName                         = 'TEST11G'
    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oel1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=TEST11G_DGMGRL)(INSTANCE_NAME=TEST11G)(SERVER=DEDICATED)))'
    StandbyArchiveLocation          = '/u02/ora11g/switchover/TEST11G/archivelog'
    AlternateLocation               = ''
    LogArchiveTrace                 = '0'
    LogArchiveFormat                = '%t_%s_%r.dbf'
    TopWaitEvents                   = '(monitor)'
Database Status:
DISABLED

这个时候所做的工作就比较简单了,我们直接启用即可。

DGMGRL> enable configuration;
Enabled.
DGMGRL> enable database TEST11G;
Enabled.
DGMGRL> enable database DG11G;
Enabled.

这个时候我们来看看是否能够正常显示broker的信息

DGMGRL> show database TEST11G;
Database - test11g
  Role:            PRIMARY
  Intended State:  TRANSPORT-ON
  Instance(s):
    TEST11G
      Error: ORA-16797: database is not using a server parameter file
Database Status:
ERROR

从错误可以看出去,还是需要设置spfile的。

DGMGRL> show database DG11G;
Database - dg11g
  Role:            PHYSICAL STANDBY
  Intended State:  APPLY-ON
  Transport Lag:   (unknown)
  Apply Lag:       (unknown)
  Real Time Query: OFF
  Instance(s):
    DG11G
Database Status:
DGM-17016: failed to retrieve status for database "dg11g"
ORA-16525: the Data Guard broker is not yet available
ORA-16625: cannot reach database "dg11g"

这个时候启用spfile即可。 --主库端验证spfile是否使用,如果没有启用,需要启用后重启数据库实例

SQL> show parameter spfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string
SQL> create spfile from pfile;
File created.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area  435224576 bytes
Fixed Size                  1337044 bytes
Variable Size             272632108 bytes
Database Buffers          155189248 bytes
Redo Buffers                6066176 bytes
Database mounted.
Database opened.
SQL> show parameter spfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/ora11g/product/11.2.0
                                                 /dbhome_1/dbs/spfileTEST11G.or
                                                 a        

备库中的设置基本是一样的 配置完成了,dg broker还是能做很多工作的。 比如修改备库为read-only模式 DGMGRL DGMGRL> edit database 'DG11G' set state='read-only'; Succeeded. 通过sql命令查看状态的变化如下:

SQL> select instance_name,status from v$instance;
INSTANCE_NAME    STATUS
---------------- ------------
DG11G            MOUNTED
SQL> /
INSTANCE_NAME    STATUS
---------------- ------------
DG11G            OPEN

当然主要的功能还是做switchover,failover的切换,后台会做大量的检查和校验,switchover的命令在dg broker里面极为精简,但是有利有弊,如果配置不当,很可能就会出现下面的问题 DGMGRL> switchover to 'DG11G'; Performing switchover NOW, please wait... Error: ORA-16664: unable to receive the result from a database 这个时候就会很可能备库变主库,存在两个主库了。 还是需要好好检查一下dg broker的准备条件。