千家信息网

在DataGuard环境中使用Broker

发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,关于Oracle DataGuard Broker的体系结构和详细说明,请参阅另外的文章,本小节是对一个已经完全配置好的DG环境中使用 Data Guard 命令行界面 (DGMGRL)控制和监视 D
千家信息网最后更新 2024年10月17日在DataGuard环境中使用Broker

关于Oracle DataGuard Broker的体系结构和详细说明,请参阅另外的文章,本小节是对一个已经完全配置好的DG环境中使用 Data Guard 命令行界面 (DGMGRL)控制和监视 Data Guard 配置。通过 DGMGRL 在配置中执行管理和监视数据库所要求的大部分活动。本文所展示的是通过DGMGRL来实现DG环境中各种保护模式之间的切换和主备之间的SwitchOver

 

为了能够比较清楚的看清楚后面的说明,我这里先声明一些东西:

数据库DB_NAMEDB_UNIQUE_NAMEINSTANCE_NAME
主数据库DG_DEMOPrimaryPrimary
物理备用数据库DG_DEMOStandbyStandby

以下测试是在Windows XP + Oracle 10.2.0.4单机环境中完成的!

1、提前条件

你已经创建好了一个没有问题的DG环境(这里可以参见我为了本次实验而专门搭建的DG环境说明和详细的配置步骤一文)

2、创建Broker配置

这里面涉及到一些相关的参数和网络配置,这部分比较简单,也不说了,下面从create configuration开始

   SQL> show parameter dg     NAME                                 TYPE        VALUE   ------------------------------------ ----------- ------------------------------   dg_broker_config_file1               string      D:ORACLE10GDATABASEDR1PRIMARY.DAT   dg_broker_config_file2               string      D:ORACLE10GDATABASEDR2PRIMARY.DAT   dg_broker_start                      boolean     TRUE   SQL> show parameter local_listener;     NAME                                 TYPE        VALUE   ------------------------------------ ----------- ------------------------------   local_listener                       string      LISTENER_DGDEMO   SQL>

先熟悉一下DGMGLR的命令

   DGMGRL> help      可使用以下命令:     add            在中介配置中添加备用数据库   connect        连接 Oracle 实例   create         创建中介配置   disable        禁用配置, 数据库或快速启动故障转移   edit           编辑配置, 数据库或实例   enable         启用配置, 数据库或快速启动故障转移   exit           退出程序   failover       将备用数据库更改为主数据库   help           显示命令的说明和语法   quit           退出程序   reinstate      将已禁用的数据库更改为可行的备用数据库   rem            DGMGRL 会忽略注释   remove         删除配置, 数据库或实例   show           显示有关配置, 数据库或实例的信息   shutdown       关闭当前正在运行的 Oracle 实例   start          启动快速启动故障转移观察器   startup        启动 Oracle 数据库实例   stop           停止快速启动故障转移观察器   switchover     在主数据库和备用数据库之间切换角色      使用 "help " 可以查看各个命令的语法      DGMGRL>

1)通过DGMGRL创建一个配置

   D:oracle10g>dgmgrl   DGMGRL for 32-bit Windows: Version 10.2.0.4.0 - Production      Copyright (c) 2000, 2005, Oracle. All rights reserved.      欢迎使用 DGMGRL, 要获取有关信息请键入 "help"。   DGMGRL> connect sys/admin@primary   已连接。   DGMGRL> create configuration dgcfg1 as   --dgcfg1是自己定义的一个标识符   > primary database is primary            --primary是主库,tns连接串也是primary   > connect identifier is primary;   已创建配置 "dgcfg1", 其中主数据库为 "primary"
   DGMGRL> add database standby as          --将备节点加进来   > connect identifier is standby          --备节点的intance_name和tns连接串均为standbhy   > maintained as physical;   已添加数据库 "standby"
   DGMGRL> show configuration               --显示配置信息      Configuration     Name:                dgcfg1     Enabled:             NO                --还没有enable,在后面第三步里实现enable的动作     Protection Mode:     MaxPerformance    --最开始我的保护模式是最大性能模式     Fast-Start Failover: DISABLED     Databases:       primary - Primary database       standby - Physical standby database      "dgcfg1" 的当前状态:   DISABLED

2)查看上面的配置信息,如果和你期望的不一样,可以做适当的编辑

   DGMGRL> show database verbose primary      Database     Name:            primary     Role:            PRIMARY     Enabled:         NO     Intended State:  OFFLINE     Instance(s):     primary        Properties:       InitialConnectIdentifier        = 'primary'       ObserverConnectIdentifier       = ''       LogXptMode                      = 'ASYNC'       Dependency                      = ''       DelayMins                       = '0'       Binding                         = 'OPTIONAL'       MaxFailure                      = '0'       MaxConnections                  = '1'       ReopenSecs                      = '300'       NetTimeout                      = '180'       LogShipping                     = 'ON'       PreferredApplyInstance          = ''       ApplyInstanceTimeout            = '0'       ApplyParallel                   = 'AUTO'       StandbyFileManagement           = 'AUTO'       ArchiveLagTarget                = '0'       LogArchiveMaxProcesses          = '2'       LogArchiveMinSucceedDest        = '1'       DbFileNameConvert               = 'd:oracle10goradatastandby, d:oracle10goradataprimary'       LogFileNameConvert              = 'd:oracle10goradatastandby, d:oracle10goradataprimary'       FastStartFailoverTarget         = ''       StatusReport                    = '(monitor)'       InconsistentProperties          = '(monitor)'       InconsistentLogXptProps         = '(monitor)'       SendQEntries                    = '(monitor)'       LogXptStatus                    = '(monitor)'       RecvQEntries                    = '(monitor)'       HostName                        = 'zhangrp-cn'       SidName                         = 'primary'       LocalListenerAddress            = '(ADDRESS=(PROTOCOL=TCP)(HOST=zhangrp-cn)(PORT=1527))'       StandbyArchiveLocation          = 'dgsby_primary'       AlternateLocation               = ''       LogArchiveTrace                 = '0'       LogArchiveFormat                = 'dg_demo_%t_%s_%r.arc'       LatestLog                       = '(monitor)'       TopWaitEvents                   = '(monitor)'      "primary" 的当前状态:DISABLED   比如我上面这个色的地方,我想把他明确改到如下的路径中:   DGMGRL> edit database primary set property StandbyArchiveLocation ='d:oracle10goradataprimaryarch_std';   已更新属性 "standbyarchivelocation"   DGMGRL> show database verbose primary      Database     Name:            primary     Role:            PRIMARY     Enabled:         NO     Intended State:  OFFLINE     Instance(s):     primary        Properties:       InitialConnectIdentifier        = 'primary'       ObserverConnectIdentifier       = ''       LogXptMode                      = 'ASYNC'       Dependency                      = ''       DelayMins                       = '0'       Binding                         = 'OPTIONAL'       MaxFailure                      = '0'       MaxConnections                  = '1'       ReopenSecs                      = '300'       NetTimeout                      = '180'       LogShipping                     = 'ON'       PreferredApplyInstance          = ''       ApplyInstanceTimeout            = '0'       ApplyParallel                   = 'AUTO'       StandbyFileManagement           = 'AUTO'       ArchiveLagTarget                = '0'       LogArchiveMaxProcesses          = '2'       LogArchiveMinSucceedDest        = '1'       DbFileNameConvert               = 'd:oracle10goradatastandby, d:oracle10goradataprimary'       LogFileNameConvert              = 'd:oracle10goradatastandby, d:oracle10goradataprimary'       FastStartFailoverTarget         = ''       StatusReport                    = '(monitor)'       InconsistentProperties          = '(monitor)'       InconsistentLogXptProps         = '(monitor)'       SendQEntries                    = '(monitor)'       LogXptStatus                    = '(monitor)'       RecvQEntries                    = '(monitor)'       HostName                        = 'zhangrp-cn'       SidName                         = 'primary'       LocalListenerAddress            = '(ADDRESS=(PROTOCOL=TCP)(HOST=zhangrp-cn)(PORT=1527))'       StandbyArchiveLocation          = 'd:oracle10goradataprimaryarch_std'  --改过来了       AlternateLocation               = ''       LogArchiveTrace                 = '0'       LogArchiveFormat                = 'dg_demo_%t_%s_%r.arc'       LatestLog                       = '(monitor)'       TopWaitEvents                   = '(monitor)'      "primary" 的当前状态:DISABLED
   再看一下备库上是不是有需要调整的地方:
   DGMGRL> show database verbose standby      Database     Name:            standby     Role:            PHYSICAL STANDBY     Enabled:         NO     Intended State:  OFFLINE     Instance(s):     standby        Properties:       InitialConnectIdentifier        = 'standby'       ObserverConnectIdentifier       = ''       LogXptMode                      = 'ASYNC'       Dependency                      = ''       DelayMins                       = '0'       Binding                         = 'OPTIONAL'       MaxFailure                      = '0'       MaxConnections                  = '1'       ReopenSecs                      = '300'       NetTimeout                      = '300'       LogShipping                     = 'ON'       PreferredApplyInstance          = ''       ApplyInstanceTimeout            = '0'       ApplyParallel                   = 'AUTO'       StandbyFileManagement           = 'AUTO'       ArchiveLagTarget                = '0'       LogArchiveMaxProcesses          = '2'       LogArchiveMinSucceedDest        = '1'       DbFileNameConvert               = 'd:oracle10goradataprimary, d:oracle10goradatastandby'       LogFileNameConvert              = 'd:oracle10goradataprimary, d:oracle10goradatastandby'       FastStartFailoverTarget         = ''       StatusReport                    = '(monitor)'       InconsistentProperties          = '(monitor)'       InconsistentLogXptProps         = '(monitor)'       SendQEntries                    = '(monitor)'       LogXptStatus                    = '(monitor)'       RecvQEntries                    = '(monitor)'       HostName                        = 'zhangrp-cn'       SidName                         = 'standby'       LocalListenerAddress            = '(ADDRESS=(PROTOCOL=TCP)(HOST=zhangrp-cn)(PORT=1527))'       StandbyArchiveLocation          = 'd:oracle10goradatastandbyarch'       AlternateLocation               = ''       LogArchiveTrace                 = '0'       LogArchiveFormat                = 'dg_demo_%t_%s_%r.arc'       LatestLog                       = '(monitor)'       TopWaitEvents                   = '(monitor)'      "standby" 的当前状态:   DISABLED

好,备库不需要做任何调整,那么继续往下走。

 

3、启用Broker配置

1)enable Broker的配置和相关的数据库

   DGMGRL> enable configuration;   已启用。   DGMGRL> show configuration;      Configuration     Name:                dgcfg1     Enabled:             YES     --enable成功     Protection Mode:     MaxPerformance     Fast-Start Failover: DISABLED     Databases:       primary - Primary database       standby - Physical standby database      "dgcfg1" 的当前状态:SUCCESS      DGMGRL> show database verbose primary;      Database     Name:            primary     Role:            PRIMARY     Enabled:         YES     Intended State:  ONLINE     Instance(s):     primary        Properties:       InitialConnectIdentifier        = 'primary'       ObserverConnectIdentifier       = ''       LogXptMode                      = 'ASYNC'       Dependency                      = ''       DelayMins                       = '0'       Binding                         = 'OPTIONAL'       MaxFailure                      = '0'       MaxConnections                  = '1'       ReopenSecs                      = '300'       NetTimeout                      = '180'       LogShipping                     = 'ON'       PreferredApplyInstance          = ''       ApplyInstanceTimeout            = '0'       ApplyParallel                   = 'AUTO'       StandbyFileManagement           = 'AUTO'       ArchiveLagTarget                = '0'       LogArchiveMaxProcesses          = '2'       LogArchiveMinSucceedDest        = '1'       DbFileNameConvert               = 'd:oracle10goradatastandby, d:oracle10goradataprimary'       LogFileNameConvert              = 'd:oracle10goradatastandby, d:oracle10goradataprimary'       FastStartFailoverTarget         = ''       StatusReport                    = '(monitor)'       InconsistentProperties          = '(monitor)'       InconsistentLogXptProps         = '(monitor)'       SendQEntries                    = '(monitor)'       LogXptStatus                    = '(monitor)'       RecvQEntries                    = '(monitor)'       HostName                        = 'zhangrp-cn'       SidName                         = 'primary'       LocalListenerAddress            = '(ADDRESS=(PROTOCOL=TCP)(HOST=zhangrp-cn)(PORT=1527))'       StandbyArchiveLocation          = 'd:oracle10goradataprimaryarch_std'       AlternateLocation               = ''       LogArchiveTrace                 = '0'       LogArchiveFormat                = 'dg_demo_%t_%s_%r.arc'       LatestLog                       = '(monitor)'       TopWaitEvents                   = '(monitor)'      "primary" 的当前状态:SUCCESS      DGMGRL> show database verbose standby;      Database     Name:            standby     Role:            PHYSICAL STANDBY     Enabled:         YES     Intended State:  ONLINE     Instance(s):     standby        Properties:       InitialConnectIdentifier        = 'standby'       ObserverConnectIdentifier       = ''       LogXptMode                      = 'ASYNC'       Dependency                      = ''       DelayMins                       = '0'       Binding                         = 'OPTIONAL'       MaxFailure                      = '0'       MaxConnections                  = '1'       ReopenSecs                      = '300'       NetTimeout                      = '300'       LogShipping                     = 'ON'       PreferredApplyInstance          = ''       ApplyInstanceTimeout            = '0'       ApplyParallel                   = 'AUTO'       StandbyFileManagement           = 'AUTO'       ArchiveLagTarget                = '0'       LogArchiveMaxProcesses          = '2'       LogArchiveMinSucceedDest        = '1'       DbFileNameConvert               = 'd:oracle10goradataprimary, d:oracle10goradatastandby'       LogFileNameConvert              = 'd:oracle10goradataprimary, d:oracle10goradatastandby'       FastStartFailoverTarget         = ''       StatusReport                    = '(monitor)'       InconsistentProperties          = '(monitor)'       InconsistentLogXptProps         = '(monitor)'       SendQEntries                    = '(monitor)'       LogXptStatus                    = '(monitor)'       RecvQEntries                    = '(monitor)'       HostName                        = 'zhangrp-cn'       SidName                         = 'standby'       LocalListenerAddress            = '(ADDRESS=(PROTOCOL=TCP)(HOST=zhangrp-cn)(PORT=1527))'       StandbyArchiveLocation          = 'd:oracle10goradatastandbyarch'       AlternateLocation               = ''       LogArchiveTrace                 = '0'       LogArchiveFormat                = 'dg_demo_%t_%s_%r.arc'       LatestLog                       = '(monitor)'       TopWaitEvents                   = '(monitor)'      "standby" 的当前状态:SUCCESS

2)看一下enable的过程中系统做了些什么

大家在配置这个东西的过程中,一定要实时的观察alert日志的信息,不要让自己走了弯路,如果遇到问题提前修复!

主库(instance_name=primary)上的日志信息:

   Sun Mar 08 16:42:56 2009   ARCH shutting down   ARC2: Archival stopped   NSV1 started with pid=26, OS id=412   RSM0 started with pid=28, OS id=5752   Sun Mar 08 16:45:51 2009   ALTER SYSTEM SET log_archive_dest_2='service="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)   (HOST=zhangrp-cn)(PORT=1527)))(CONNECT_DATA=(SERVICE_NAME=standby_XPT)(INSTANCE_NAME=STANDBY)   (SERVER=dedicated)))"',' LGWR ASYNC NOAFFIRM delay=0 OPTIONAL max_failure=0 max_connections=1   reopen=300 db_unique_name="standby" register net_timeout=300  valid_for=(online_logfile,primary_role)' SCOPE=BOTH;   Sun Mar 08 16:45:51 2009   ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=BOTH;   Sun Mar 08 16:45:51 2009   ALTER SYSTEM SET standby_archive_dest='' SCOPE=BOTH SID='primary';   Sun Mar 08 16:45:51 2009   ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID='primary';   Sun Mar 08 16:45:52 2009   ALTER SYSTEM SET log_archive_format='dg_demo_%t_%s_%r.arc' SCOPE=SPFILE SID='primary';   Sun Mar 08 16:45:52 2009   ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=BOTH SID='*';   Sun Mar 08 16:45:52 2009   ALTER SYSTEM SET archive_lag_target=0 SCOPE=BOTH SID='*';   Sun Mar 08 16:45:52 2009   ALTER SYSTEM SET log_archive_max_processes=2 SCOPE=BOTH SID='*';   Sun Mar 08 16:45:52 2009   ALTER SYSTEM SET log_archive_min_succeed_dest=1 SCOPE=BOTH SID='*';   Sun Mar 08 16:45:52 2009   ALTER SYSTEM SET db_file_name_convert='d:oracle10goradatastandby','d:oracle10goradataprimary' SCOPE=SPFILE;   Sun Mar 08 16:45:52 2009   ALTER SYSTEM SET log_file_name_convert='d:oracle10goradatastandby','d:oracle10goradataprimary' SCOPE=SPFILE;   Sun Mar 08 16:45:52 2009   ALTER SYSTEM ARCHIVE LOG   Sun Mar 08 16:45:53 2009   Thread 1 advanced to log sequence 141 (LGWR switch)     Current log# 3 seq# 141 mem# 0: D:ORACLE10GORADATAPRIMARYREDO03.LOG   Sun Mar 08 16:45:55 2009   ******************************************************************   LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2   ******************************************************************   LNS: Standby redo logfile selected for thread 1 sequence 141 for destination LOG_ARCHIVE_DEST_2   Sun Mar 08 16:46:06 2009   ALTER SYSTEM SET log_archive_dest_2='service="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)   (HOST=zhangrp-cn)(PORT=1527)))(CONNECT_DATA=(SERVICE_NAME=standby_XPT)(INSTANCE_NAME=STANDBY)   (SERVER=dedicated)))"','   LGWR ASYNC NOAFFIRM delay=0 OPTIONAL max_failure=0 max_connections=1   reopen=300 db_unique_name="standby" register net_timeout=300  valid_for=(online_logfile,primary_role)' SCOPE=BOTH;   Sun Mar 08 16:46:06 2009   ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=BOTH;   Sun Mar 08 16:46:06 2009   ALTER SYSTEM ARCHIVE LOG   Sun Mar 08 16:46:07 2009   Thread 1 advanced to log sequence 142 (LGWR switch)     Current log# 1 seq# 142 mem# 0: D:ORACLE10GORADATAPRIMARYREDO01.LOG   Sun Mar 08 16:46:08 2009   ******************************************************************   LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2   ******************************************************************   LNS: Standby redo logfile selected for thread 1 sequence 142 for destination LOG_ARCHIVE_DEST_2   Sun Mar 08 16:46:56 2009   ALTER SYSTEM SET log_archive_dest_2='service="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)   (HOST=zhangrp-cn)(PORT=1527)))(CONNECT_DATA=(SERVICE_NAME=standby_XPT)(INSTANCE_NAME=STANDBY)   (SERVER=dedicated)))"','   LGWR ASYNC NOAFFIRM delay=0 OPTIONAL max_failure=0 max_connections=1    reopen=300 db_unique_name="standby" register net_timeout=300  valid_for=(online_logfile,primary_role)' SCOPE=BOTH;   Sun Mar 08 16:46:56 2009   ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=BOTH;   Sun Mar 08 16:46:56 2009   ALTER SYSTEM ARCHIVE LOG   Sun Mar 08 16:46:56 2009   Thread 1 cannot allocate new log, sequence 143   Checkpoint not complete     Current log# 1 seq# 142 mem# 0: D:ORACLE10GORADATAPRIMARYREDO01.LOG   Sun Mar 08 16:46:58 2009   Thread 1 advanced to log sequence 143 (LGWR switch)     Current log# 2 seq# 143 mem# 0: D:ORACLE10GORADATAPRIMARYREDO02.LOG   Sun Mar 08 16:46:59 2009   ******************************************************************   LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2   ******************************************************************   LNS: Standby redo logfile selected for thread 1 sequence 143 for destination LOG_ARCHIVE_DEST_2

备库(instance_name=standby)上的日志信息:

   Redo Shipping Client Connected as PUBLIC   -- Connected User is Valid   RFS[5]: Assigned to RFS process 4972   RFS[5]: Identified database type as 'physical standby'   Primary database is in MAXIMUM PERFORMANCE mode   Primary database is in MAXIMUM PERFORMANCE mode   RFS[5]: Successfully opened standby log 11: 'D:ORACLE10GORADATASTANDBYSTDREDO01.LOG'   Sun Mar 08 16:46:09 2009   Media Recovery Waiting for thread 1 sequence 142 (in transit)   Sun Mar 08 16:46:10 2009   Recovery of Online Redo Log: Thread 1 Group 11 Seq 142 Reading mem 0     Mem# 0: D:ORACLE10GORADATASTANDBYSTDREDO01.LOG   Sun Mar 08 16:46:25 2009   Redo Shipping Client Connected as PUBLIC   -- Connected User is Valid   RFS[6]: Assigned to RFS process 1464   RFS[6]: Identified database type as 'physical standby'   Sun Mar 08 16:46:46 2009   ALTER SYSTEM SET log_archive_dest_1='location="d:oracle10goradatastandbyarch"',   'valid_for=(ALL_LOGFILES,ALL_ROLES)' SCOPE=BOTH SID='standby';   Sun Mar 08 16:46:46 2009   ALTER SYSTEM SET log_archive_dest_state_1='ENABLE' SCOPE=BOTH SID='standby';   Sun Mar 08 16:46:46 2009   ALTER SYSTEM SET standby_archive_dest='d:oracle10goradatastandbyarch' SCOPE=BOTH SID='standby';   Sun Mar 08 16:46:46 2009   ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID='standby';   Sun Mar 08 16:46:46 2009   ALTER SYSTEM SET log_archive_format='dg_demo_%t_%s_%r.arc' SCOPE=SPFILE SID='standby';   Sun Mar 08 16:46:46 2009   ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=BOTH SID='*';   Sun Mar 08 16:46:46 2009   ALTER SYSTEM SET archive_lag_target=0 SCOPE=BOTH SID='*';   Sun Mar 08 16:46:46 2009   ALTER SYSTEM SET log_archive_max_processes=2 SCOPE=BOTH SID='*';   Sun Mar 08 16:46:46 2009   ALTER SYSTEM SET log_archive_min_succeed_dest=1 SCOPE=BOTH SID='*';   Sun Mar 08 16:46:46 2009   ALTER SYSTEM SET db_file_name_convert='d:oracle10goradataprimary','d:oracle10goradatastandby' SCOPE=SPFILE;   Sun Mar 08 16:46:46 2009   ALTER SYSTEM SET log_file_name_convert='d:oracle10goradataprimary','d:oracle10goradatastandby' SCOPE=SPFILE;   Sun Mar 08 16:46:46 2009   ALTER SYSTEM SET fal_server='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=zhangrp-cn)   (PORT=1527)))(CONNECT_DATA=(SERVICE_NAME=primary_XPT)(SERVER=dedicated)))' SCOPE=BOTH;   Sun Mar 08 16:46:46 2009   ALTER SYSTEM SET fal_client='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=zhangrp-cn)   (PORT=1527)))(CONNECT_DATA=(SERVICE_NAME=standby_XPT)(INSTANCE_NAME=STANDBY)(SERVER=dedicated)))' SCOPE=BOTH;   Sun Mar 08 16:46:46 2009   ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL   Sun Mar 08 16:46:47 2009   MRP0: Background Media Recovery cancelled with status 16037   Sun Mar 08 16:46:47 2009   Errors in file d:adminstandbybdumpstandby_mrp0_4788.trc:   ORA-16037: user requested cancel of managed recovery operation      Managed Standby Recovery not using Real Time Apply   Recovery interrupted!   Recovered data files to a consistent state at change 691632   Sun Mar 08 16:46:48 2009   Errors in file d:adminstandbybdumpstandby_mrp0_4788.trc:   ORA-16037: user requested cancel of managed recovery operation      Sun Mar 08 16:46:48 2009   Waiting for MRP0 pid 4788 to terminate   Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL   Sun Mar 08 16:46:50 2009   ALTER DATABASE RECOVER MANAGED STANDBY DATABASE  THROUGH ALL SWITCHOVER DISCONNECT  USING CURRENT LOGFILE   MRP0 started with pid=20, OS id=6012   Managed Standby Recovery starting Real Time Apply    parallel recovery started with 2 processes   Sun Mar 08 16:46:55 2009   Waiting for all non-current ORLs to be archived...   Media Recovery Waiting for thread 1 sequence 142 (in transit)   Sun Mar 08 16:46:56 2009   Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE  THROUGH ALL SWITCHOVER DISCONNECT  USING CURRENT LOGFILE   Sun Mar 08 16:46:56 2009   Recovery of Online Redo Log: Thread 1 Group 11 Seq 142 Reading mem 0     Mem# 0: D:ORACLE10GORADATASTANDBYSTDREDO01.LOG   Sun Mar 08 16:47:00 2009   Redo Shipping Client Connected as PUBLIC   -- Connected User is Valid   RFS[7]: Assigned to RFS process 4372   RFS[7]: Identified database type as 'physical standby'   Primary database is in MAXIMUM PERFORMANCE mode   Re-archiving standby log 11 thread 1 sequence 142   Primary database is in MAXIMUM PERFORMANCE mode   Sun Mar 08 16:47:01 2009   Media Recovery Waiting for thread 1 sequence 143 (in transit)   Sun Mar 08 16:47:01 2009   RFS[7]: Successfully opened standby log 11: 'D:ORACLE10GORADATASTANDBYSTDREDO01.LOG'   Sun Mar 08 16:47:06 2009   Recovery of Online Redo Log: Thread 1 Group 11 Seq 143 Reading mem 0     Mem# 0: D:ORACLE10GORADATASTANDBYSTDREDO01.LOG   Sun Mar 08 16:47:26 2009   Redo Shipping Client Connected as PUBLIC   -- Connected User is Valid   RFS[8]: Assigned to RFS process 5208   RFS[8]: Identified database type as 'physical standby'
    OK,到这里Broker就配置成功了,其实很简单是不是(成功与否的关键是看你的DG环境是不是规划的很好)下面我们体验一下吧
4、保护模式切换体验
   我最初配置的DG的保护模式是最大性能模式(MAXIMUM PERFORMANCE),在下面的体验中我分别完成如下模式的切换
   最大性能-->最大保护
   最大保护-->最大可用
   最大可用-->最大保护
   最大保护-->最大性能
 
   1)最大性能到最大保护模式的切换
   DGMGRL> edit database primary set property LogXptMode ='SYNC';   --为什么改为SYNC 大家很清楚吧   已更新属性 "logxptmode"   DGMGRL> edit database standby set property LogXptMode ='SYNC';   已更新属性 "logxptmode"   DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXPROTECTION; --这个restart的过程是自动的   操作要求关闭实例 "primary" (在数据库 "primary" 上)   正在关闭实例 "primary"...   数据库已经关闭。   已经卸载数据库。   ORACLE 例程已经关闭。   操作要求启动实例 "primary" (在数据库 "primary" 上)   正在启动实例 "primary"...   ORACLE 例程已经启动。   数据库装载完毕。   DGMGRL>
 
   --切换完成。
   在主库(instance_name=primary)查看一下   SQL> select name,log_mode,open_mode,protection_mode,database_role from v$database;      NAME      LOG_MODE     OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE   --------- ------------ ---------- -------------------- ----------------   DG_DEMO   ARCHIVELOG   READ WRITE MAXIMUM PROTECTION   PRIMARY      在备库(instance_name=standby)查看一下   SQL> select name,log_mode,open_mode,protection_mode,database_role from v$database;      NAME      LOG_MODE     OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE   --------- ------------ ---------- -------------------- ----------------   DG_DEMO   ARCHIVELOG   MOUNTED    MAXIMUM PROTECTION   PHYSICAL STANDBY      :自己在学习的时候,要注意观察alert日志的信息
 
   2)最大保护到最大可用模式的切换

这个动作比较简单。

   DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;   成功。      在主库(instance_name=primary)查看一下   SQL> select name,log_mode,open_mode,protection_mode,database_role from v$database;      NAME      LOG_MODE     OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE   --------- ------------ ---------- -------------------- ----------------   DG_DEMO   ARCHIVELOG   READ WRITE MAXIMUM AVAILABILITY PRIMARY      SQL>   在备库(instance_name=standby)查看一下         SQL> select name,log_mode,open_mode,protection_mode,database_role from v$database;     NAME      LOG_MODE     OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE   --------- ------------ ---------- -------------------- ----------------   DG_DEMO   ARCHIVELOG   MOUNTED    MAXIMUM AVAILABILITY PHYSICAL STANDBY      SQL>
   :自己在学习的时候,要注意观察alert日志的信息

3)最大可用到最大保护模式的切换

   DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXPROTECTION;   操作要求关闭实例 "primary" (在数据库 "primary" 上)   正在关闭实例 "primary"...   数据库已经关闭。   已经卸载数据库。   ORACLE 例程已经关闭。   操作要求启动实例 "primary" (在数据库 "primary" 上)   正在启动实例 "primary"...   ORACLE 例程已经启动。   数据库装载完毕。   DGMGRL>   在主库(instance_name=primary)查看一下      SQL> select name,log_mode,open_mode,protection_mode,database_role from v$database;     NAME      LOG_MODE     OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE   --------- ------------ ---------- -------------------- ----------------   DG_DEMO   ARCHIVELOG   READ WRITE MAXIMUM PROTECTION   PRIMARY      在备库(instance_name=standby)查看一下   SQL> select name,log_mode,open_mode,protection_mode,database_role from v$database;      NAME      LOG_MODE     OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE   --------- ------------ ---------- -------------------- ----------------   DG_DEMO   ARCHIVELOG   MOUNTED    MAXIMUM PROTECTION   PHYSICAL STANDBY
   :自己在学习的时候,要注意观察alert日志的信息

4)最大保护到最大性能模式的切换

在测试的最后,我再从最大保护模式切回到最初的最大性能模式

   DGMGRL> edit database primary set property LogXptMode ='ASYNC';   已更新属性 "logxptmode"   DGMGRL> edit database standby set property LogXptMode ='ASYNC';   错误: ORA-16805: LogXptMode 属性的更改违反了全局保护模式      失败。   DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXPERFORMANCE;   成功。   DGMGRL> edit database standby set property LogXptMode ='ASYNC';   已更新属性 "logxptmode"   DGMGRL>   DGMGRL> show configuration verbose      Configuration     Name:                dgcfg1     Enabled:             YES     Protection Mode:     MaxPerformance     Fast-Start Failover: DISABLED     Databases:       primary - Primary database       standby - Physical standby database      "dgcfg1" 的当前状态:   SUCCESS      DGMGRL>   在主库(instance_name=primary)查看一下      SQL> select name,log_mode,open_mode,protection_mode,database_role from v$database;      NAME      LOG_MODE     OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE   --------- ------------ ---------- -------------------- ----------------   DG_DEMO   ARCHIVELOG   READ WRITE MAXIMUM PERFORMANCE  PRIMARY      SQL>   在备库(instance_name=standby)查看一下   SQL> select name,log_mode,open_mode,protection_mode,database_role from v$database;      NAME      LOG_MODE     OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE   --------- ------------ ---------- -------------------- ----------------   DG_DEMO   ARCHIVELOG   MOUNTED    MAXIMUM PERFORMANCE  PHYSICAL STANDBY      SQL>    :自己在学习的时候,要注意观察alert日志的信息
5、SwitchOver切换体验
   在这次实验中,我一并做了SwitchOver的切换体验,整个测试工作非常的顺利。     
    DGMGRL> switchover to standby;   --这个standby是我的环境中的备库的名字    立即执行切换, 请稍候...    操作要求关闭实例 "primary" (在数据库 "primary" 上)    正在关闭实例 "primary"...    ORA-01109: 数据库未打开        已经卸载数据库。    ORACLE 例程已经关闭。    操作要求关闭实例 "standby" (在数据库 "standby" 上)    正在关闭实例 "standby"...    ORA-01109: 数据库未打开        已经卸载数据库。    ORACLE 例程已经关闭。    操作要求启动实例 "primary" (在数据库 "primary" 上)    正在启动实例 "primary"...    ORACLE 例程已经启动。    数据库装载完毕。    操作要求启动实例 "standby" (在数据库 "standby" 上)    正在启动实例 "standby"...    ORACLE 例程已经启动。    数据库装载完毕。    切换成功, 新的主数据库为 "standby"    DGMGRL>    
    到这里切换完成。下面再分别连接到原来的主备库上查看一下    在原主库(instance_name=primary)查看一下    SQL> select name,log_mode,open_mode,protection_mode,database_role from v$database;        NAME      LOG_MODE     OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE    --------- ------------ ---------- -------------------- ----------------    DG_DEMO   ARCHIVELOG   MOUNTED    MAXIMUM PERFORMANCE  PHYSICAL STANDBY  --已经变成备库        SQL>            在原备库(instance_name=standby)查看一下    SQL> select name,log_mode,open_mode,protection_mode,database_role from v$database;        NAME      LOG_MODE     OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE    --------- ------------ ---------- -------------------- ----------------    DG_DEMO   ARCHIVELOG   READ WRITE MAXIMUM PERFORMANCE  PRIMARY         --现在变成主库了        SQL>        DGMGRL> show database primary;        Database      Name:            primary      Role:            PHYSICAL STANDBY      Enabled:         YES      Intended State:  ONLINE      Instance(s):     primary        "primary" 的当前状态: SUCCESS        DGMGRL> show database standby;        Database      Name:            standby      Role:            PRIMARY      Enabled:         YES      Intended State:  ONLINE      Instance(s):     standby        "standby" 的当前状态:SUCCESS        DGMGRL>

切换成功

再切换回来吧(我后面还有其他操作需要)

   DGMGRL> switchover to primary   立即执行切换, 请稍候...   操作要求关闭实例 "standby" (在数据库 "standby" 上)   正在关闭实例 "standby"...   ORA-01109: 数据库未打开      已经卸载数据库。   ORACLE 例程已经关闭。   操作要求关闭实例 "primary" (在数据库 "primary" 上)   正在关闭实例 "primary"...   ORA-01109: 数据库未打开      已经卸载数据库。   ORACLE 例程已经关闭。   操作要求启动实例 "standby" (在数据库 "standby" 上)   正在启动实例 "standby"...   ORACLE 例程已经启动。   数据库装载完毕。   操作要求启动实例 "primary" (在数据库 "primary" 上)   正在启动实例 "primary"...   ORACLE 例程已经启动。   数据库装载完毕。   切换成功, 新的主数据库为 "primary"   DGMGRL> show database primary;      Database     Name:            primary     Role:            PRIMARY     Enabled:         YES     Intended State:  ONLINE     Instance(s):     primary      "primary" 的当前状态:SUCCESS      DGMGRL> show database standby;      Database     Name:            standby     Role:            PHYSICAL STANDBY     Enabled:         YES     Intended State:  ONLINE     Instance(s):     standby      "standby" 的当前状态:SUCCESS      DGMGRL>   在实验最初的主库(instance_name=primary)查看一下   SQL> select name,log_mode,open_mode,protection_mode,database_role from v$database;      NAME      LOG_MODE     OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE   --------- ------------ ---------- -------------------- ----------------   DG_DEMO   ARCHIVELOG   READ WRITE MAXIMUM PERFORMANCE  PRIMARY      SQL>      在实验最初的备库(instance_name=standby)查看一下   SQL> select name,log_mode,open_mode,protection_mode,database_role from v$database;      NAME      LOG_MODE     OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE   --------- ------------ ---------- -------------------- ----------------   DG_DEMO   ARCHIVELOG   READ WRITE MAXIMUM PERFORMANCE  PHYSICAL STANDBY      SQL>
   好了,今天的体验就到这里了! 

0