摘要
Observer 进程集成在broker的DGMGRL客户端组件中,并且通常在与主数据库或备用数据库以及管理broker配置的计算机不同的计算机上运行。
单个Data Guard配置最多可以有三个Observer 。Observer 持续监视快速启动故障切换环境,以确保主数据库可用。Observer 的主要目的是通过减少手动故障切换过程所需的人工干预来增强高可用性并点亮计算,这可能会增加停机时间(分钟或小时)。
您可以通过Cloud Control中的Oracle Data Guard Overview页面或使用DGMGRL命令来管理Observer 。

1.Installing and Starting the Observer
Observer 应安装在与主系统和备用系统分开的计算机系统上并运行。
安装和启动Observer是使用快速启动故障切换不可或缺的一部分,在以下部分中进行了详细描述:
- 您可以仅安装 Oracle Client Administrator,也可以在 Observer 系统上安装完整的Oracle Database Enterprise Edition或Personal Edition。
- 启用快速启动故障切换描述了如何启动Observer,作为实现快速启动故障转移的分步过程的一部分。
要启动Observer,您必须能够使用具有SYSDG或SYSDBA权限的帐户登录到DGMGRL。Observer 是一个OCI客户端,它使用与使用DGMGRL连接到Oracle Data Guard配置时使用的相同SYS凭据连接到主数据库和目标备用数据库。
Starting Multiple Observers on a Data Guard Broker Configuration
注意:Oracle Enterprise Manager Cloud Control (Cloud Control) 不支持多个观测者。
您最多可以注册三个Observer来监视单个Data Guard broker配置。每个观察者都由发出START observer命令时提供的名称标识。当为一个配置注册多个观测者时,以下条件适用:
- 启用快速启动故障转移时,其中一个观察者是主观察者。其余的观测者称为备用观测者。当禁用快速启动故障转移时,没有观测器称为主观测器;所有观察者都具有相同的功能。
- 同一Data Guard Broker配置上的两个观测者不能具有相同的名称。
- 如果没有为观察者指定名称,则使用默认的观察者名称,即发出START observer命令的机器的主机名。
- 观察者名称不区分大小写。
- 字符串“NONAME”不能用作观察者名称。
- 观察者都有自己的日志文件。使用START OBSERVER命令的LOGFILE is选项指定日志文件名。如果指定的日志文件不可访问,或者未使用LOGFILE is选项,则观察者输出被发送到标准输出。
- 除了测试目的外,建议不要在同一主机上为Data Guard broker配置启动多个观察者。
- 命令SHOW FAST_START FAILOVER显示注册观测者的列表,并指示哪一个是主观测者。
- 命令SHOW OBSERVER提供有关注册Observer的详细信息。
The Master Observer and Backup Observers
注:主观察者的工作方式与Oracle Database 12c Release 2(12.2.0.1)中多个观察者出现之前单个观察者的操作方式相同。
当禁用快速启动故障转移时,观察者不需要协调快速启动故障切换,因此在启用快速启动故障恢复之前,主备用和目标备用不指定主观察者。启用快速启动故障转移时,主服务器和备用服务器随机选择一个注册的观测者作为主服务器。如果启用快速启动故障转移时没有注册的观察者,则启动的第一个观察者被指定为主观察者,随后启动的所有其他观察者都是备份观察者。只有主观察者可以与Data Guard broker协调快速启动故障切换。所有其他注册Observer都被视为后备Observer。
Manually Changing the Master Observer
可以使用SET MASTEROBSERVER TO Observer Name命令来更改哪个观测者是主观测者
DGMGRL> SET MASTEROBSERVER TO boston-obsever;
Succeeded.
发出此命令时,直到主设备下次接触目标备用设备时,才会发生实际的交换机,如果启用了快速启动故障切换,通常在三秒钟内。您可以发出SHOW OBSERVER命令来确认发生了切换。
Starting Observers as Background Processes
要将观察者作为后台进程运行,请使用DGMGRL命令START observer IN background。您必须提供连接标识符,通过该标识符可以访问特定broker配置中的一个或多个数据库。下面是将观察者作为后台进程启动的示例:
DGMGRL> START OBSERVER IN BACKGROUND
FILE IS /net/sales/dat/oracle/broker/fsfo.dat
LOGFILE IS /net/sales/dat/oracle/broker/observer.log
CONNECT IDENTIFIER IS sales_p
Submitted command "START OBSERVER" using connect identifier "sales_p"
DGMGRL>
START OBSERVER IN BACKGROUND命令使用Oracle wallet 来获取登录到数据库服务器并注册Observer的凭据。即使您已使用CONNECT命令成功连接到broker配置中的数据库服务器,该命令也会忽略现有连接,并使用存储在Oracle钱包中的凭据。
Starting Multiple Observers On a Single Host
如果要使用一个Oracle主页来启动多个观察者,并且每个观察者监视不同的快速启动故障转移配置,请使用FILE限定符为要监视的每个配置指定唯一的观察者配置文件位置。如果要捕获由观察者生成的任何日志记录,请使用START observer命令上的LOGFILE IS选项,并确保文件名是唯一的。例如:
% dgmgrl
DGMGRL> CONNECT /@primary1;
DGMGRL> START OBSERVER FILE IS '/u01/oracle/dbs/config1.dat'
LOGFILE IS '/u01/oracle/log/config1.log'
% dgmgrl
DGMGRL> CONNECT /@primary2;
DGMGRL> START OBSERVER FILE IS '/u01/oracle/dbs/config2.dat'
LOGFILE IS '/u01/oracle/log/config2.log'
注意:从Oracle Database 12c Release 2(12.2.0.1)开始,DGMGRL-logfile选项已弃用。仅支持向后兼容性。相反,现在应该使用START OBSERVER命令上的LOGFILE IS子句指定日志文件。
Managing Observers for Multiple Configurations
- ObserverConfigFile是DGMGRL运行时属性。它既不驻留在broker配置元数据中,也不持久化到磁盘。如果观察者配置文件名不是obser.ora或它不存在于当前工作目录中,则每次启动新的DGMGRL客户端时都必须指定该名称。
- 属性ObserConfigFile的默认值为observer.ora,其默认位置在工作目录中。
- 发出此命令时,即使指定的文件不存在或文件内容无效,配置文件的名称也会更改
2.Viewing Information About the Master Observer
通过查询V$DATABASE视图,可以找到关于主观察者的信息。
- FS_FAILOVER_OBSERVER_HOST
显示运行主观察者的计算机的名称 - FS_FAILOVER_OBSERVER_PRESENT
显示主观察者是否连接到本地数据库
在Oracle Real Applications Clusters(Oracle RAC)环境中的实例之间是一致的。也就是说,如果观察者连接到Oracle RAC中的任何实例,则所有实例都将显示值YES。
为了确定是否可以发生快速启动故障转移,FS_failover_STATUS列显示SYNCHRONIZED或TARGET UNDER LAG LIMIT,而FS_failover_OBSERVER_PRESENT列为目标备用数据库显示YES。例如:
| Database | FS_FAILOVER_STATUS | Protection Mode | FS_FAILOVER_OBSERVER_PRESENT |
|---|---|---|---|
| Primary | SYNCHRONIZED | Maximum Availability | YES |
| Standby | SYNCHRONIZED | Maximum Availability | YES |
| Primary | TARGET UNDER LAG LIMIT | Maximum Performance | YES |
| Standby | TARGET UNDER LAG LIMIT | Maximum Performance | YES |
假设主数据库和观察者之间的网络出现故障。在这种情况下,FS_FAILOVER_STATUS和FS_FAILOVER_OBSERVER_PRESENT列将如下表所示,并且不会发生快速启动故障转移:
| Database | FS_FAILOVER_STATUS | FS_FAILOVER_OBSERVER_PRESENT |
| Primary | SYNCHRONIZED | NO |
| Standby | PRIMARY UNOBSERVED | YES |
3.Viewing Information About All Observers
您可以在V$FS_FAILOVER_observers视图中找到有关所有观测者的详细信息,包括主观测者和备份观测者。
对于每个观察者,V$FS_FAILOVER_OBSERVERS视图提供观察者名称、主机、它是否为主观察者、它何时成为主观察者以及它当前是否连接到主数据库和目标备用数据库。
4.What Happens if the Master Observer Fails?
如果主观察者失败,broker的行为取决于broker配置是具有一个观察者还是多个观察者。
如果只有一个观测器,则认为它是主观测器。如果有多个观测者,则其中只有一个是主观测者。
Broker Configuration Has Only One Registered Observer
当配置只有一个注册的观察者时,如果主数据库和目标备用数据库保持连接,但与观察者的连接丢失,则broker报告未观察到配置。配置和数据库状态报告观察者未运行,并返回以下状态消息之一:
ORA-16658: unobserved fast-start failover configuration
ORA-16820: fast-start failover observer is no longer observing this database
当配置处于未观察状态时,无法进行快速启动故障切换。因此,即使目标备用数据库发生故障,主数据库也可以继续处理事务。在观察者重新建立与主数据库的连接后,配置状态返回SUCCESS状态,然后通知目标备用数据库。
Broker Configuration Has Multiple Registered Observers
当配置有多个注册的观察者时,如果主数据库和目标备用数据库保持连接,但与主观察者的连接丢失,则broker尝试指定一个备用观察者作为新的主观察者。该提名记录在观察者日志文件和broker日志文件(drc*.log)中。此外,在为SHOW FAST_START FAILOVER和SHOW observer命令显示的输出中标识了新的主观察者。
注意:在识别新主观察者的期间,在选择新的主观察者并观察配置之前,不能发生快速启动故障转移。
如果主数据库或目标备用数据库失去与所有备份观察者的连接,则broker不会尝试指定备份观察者作为新的主观察者,并且broker报告未观察到配置。配置和数据库状态报告的错误消息与只有一个注册观察者时返回的错误消息相同。
5.Managing Observer’s Connection to the Primary
ObserverOverride和ObserverReconnect属性允许您额外控制与主节点的连接。
当观察者丢失与主数据库的连接的时间超过FastStartFailoverThreshold属性指定的时间段时,它将尝试故障转移到备用数据库。然而,如果备用服务器在FastStartFailoverThreshold属性指定的时间段内与主服务器建立了联系,则备用服务器将阻止故障转移尝试。
要覆盖此行为,并在观察者无法联系主服务器的时间超过FastStartFailoverThreshold秒时允许发生快速启动故障转移,请将ObserverOverride属性设置为TRUE。例如:
DGMGRL> EDIT CONFIGURATION SET PROPERTY ObserverOverride=TRUE;
通常,观察者只连接一次到主节点,除非连接失败,否则不会尝试重新连接。然而,如果希望观察者定期重新连接到主数据库,作为测试与主数据库的网络连接的运行状况的方法,则使用ObserverReconnect配置属性。这指定观察者建立到主数据库的新连接的频率。在下面的示例中,ObserverReconnect设置为30秒。这导致观察者每隔30秒建立一个到主数据库的新连接。
DGMGRL> EDIT CONFIGURATION SET PROPERTY ObserverReconnect=30;
6.Stopping the Observer
您可以手动停止特定的观察者或所有观察者。
在停止Observer之前,请注意以下事项:
- 发出stop observer命令时,观察者不会立即停止。在broker接收到STOPOBSERVER请求后,当观察者下次联系broker时,请求被传递给观察者,然后观察者停止自己。
- 停止观察者不会禁用快速启动故障转移。然而,当目标备用数据库处于未观察状态时,不能进行快速启动故障转移。
- 要在禁用快速启动故障转移时停止观察者,必须运行主数据库。
- 要在启用快速启动故障转移时停止观察者,必须连接主数据库和目标备用数据库,并相互通信。如果它们彼此隔离,则必须首先使用FORCE选项禁用快速启动故障转移,然后停止观察者。
Stopping All Observers
您可以指定STOP OBSERVER ALL来停止在broker配置中注册的所有观察者。
Stopping a Specific Observer When There are Multiple Observers
要在有多个注册观测者运行时停止特定的观测者,请发出以下命令:
DGMGRL> STOP OBSERVER observer_name;
您可以从任何机器登录到DGMGRL以停止观察者。例如,您可以登录到运行observer1的系统来停止observer2。
在配置了多个观测器的环境中,不允许停止主观测器,除非它是最后一个运行的观测器。要停止当前指定为主观测器的观测器,请首先发出SET MASTEROBSERVER命令,以指定另一个观测器作为主观测者。然后,可以在前主观测器上成功发出STOP OBSERVER命令。
Stopping the Observer When There is Only One Observer
如果只有一个注册Observer,则其工作方式与Oracle Database 12c Release 2(12.2.0.1)中出现多个Observer之前单个Observer的工作方式相同。要停止它,可以执行以下任一操作:
- 使用云控制
- 在快速启动故障转移向导的第一页上选择Stop Observer选项,然后单击页面底部的Continue。
- 使用DGMGRL
发出以下命令:
DGMGRL> STOP OBSERVER;
```
如果有多个注册的观察者,则该命令返回错误;如果有多个观察者,则需要名称。
# 7.Moving the Observer to Another Computer
通过在一个系统上停止观察者并在另一个系统中重新启动它的过程,可以将观察者从一台计算机移动到另一台计算机。
要将观察者移动到另一台计算机,请执行以下操作:
1. 从broker配置中的任何计算机系统中停止观察者,如停止观察者中所述。
1. 在新的计算机系统上启动观察者,如启用快速启动故障转移的步骤8中所述。
移动观察者时,无需禁用快速启动故障转移。
# 8.How the Observer Maintains Fast-Start Failover Configuration Information
观察者在启动观察者的工作目录中创建的二进制文件中持久维护关于快速启动故障转移配置的信息。
默认情况下,当该文件启动时,观察者在当前工作目录中创建该文件,并将文件命名为fsfo.dat。该文件包含到主数据库和目标备用数据库的连接标识符。
确保未经授权的用户无法读取此文件。
一旦观察者启动,就不能更改文件的名称和位置。然而,如果使用DGMGRL start observer命令启动观察者并包含file IS限定符,则可以更改文件的名称或位置。
> 注: 如果观察者异常停止(例如,通过键入CTRL/C),请重新启动它,并使用file is限定符引用现有的fsfo.dat文件。
# 9.Managing Observers for Multiple Configurations
DGMGRL可用于管理一组 broker 配置中的多个observers 。
您可以启动、停止和显示一组配置的observers。您还可以将一组配置的主observers主机切换到一个特定主机。
要管理的broker配置组在observers配置文件中声明。默认组是在observers配置文件中定义的所有配置。如果不想使用默认值,可以定义特定的组。
observers配置文件是一个文本文件,定义observers和组的语法类似于listener.ora或tnsnames.ora文件中使用的语法。它由两部分组成,顺序如下:
- Configuration 声明
此部分是强制性的。它必须作为observers配置文件的第一部分出现。
- Group 定义
此部分是可选的。如果提供了,则每个组需要在第二部分中声明至少一个broker配置。
BROKER_CONFIGS = (
CONFIG= (NAME =configuration-name)
(CONNECT_ID =connect-identifier)
(CONFIG_HOME =config-home-location)
)
GROUP =(NAME=group-name)
(CONFIG_LIST=
(NAME=configuration1-name)
(NAME=configuration2-name)
...
(NAME=configuration-n-name)
)
)
CONFIG:
- configuration-name 可以与Data Guard Broker配置的元数据中定义的名称不同。(因为元数据中定义的名称可以包含空白和国际字符,而观测者配置文件不允许。)
- connect-identifier 是在tnsnames.ora中定义的TNS别名,通过它可以访问此Data Guard broker配置中所有数据库的所有实例。
- config-home-location 指定观察者日志文件和FSFO.dat文件的位置。
- 配置定义中不允许重复的配置名称。
GROUP:
- group 定义部分是可选的。如果未定义组,则仍然可以对文件中作为整体定义的所有配置进行操作。
- ALL 不能用作组名,因为它是保留关键字。
- 不允许重复的组名。
- 您定义的每个组必须至少具有一个broker配置。
- 引用的任何 broker 配置名称都必须存在于配置声明部分中。
- broker 配置可以属于多个组。
## 指定 Observer Configuration File
当您执行影响多个 observers 的命令时,如果尚未指定 observers 配置文件的名称和位置,则 broker 将在当前工作目录中搜索名为 observer.ora 的文件。如果文件不存在,则命令失败。
然而,您可以选择为observers配置文件指定名称和位置。为此,请使用 SET ObserverConfigFile 和 SHOW ObserverConfigFile 命令。可以从DGMGRL命令行发出这些命令,但在使用它们之前不需要登录。
- SET ObserverConfigFile
用于指定自定义的观察者配置文件。ObserverConfigFile是DGMGRL会话运行时属性。每次启动新的DGMGRL客户端时都必须指定它。
- SHOW ObserConfigFile
用于检查运行时属性ObserconfigFile。如果在启动当前DGMGRL客户端后未使用SET ObserverConfigFile命令,则结果将始终为:ObserConfigFile=observer.ora。
## Commands For Managing Observers on Multiple Configurations
可以对一组配置执行的命令(如在观察者配置文件中声明的)如下。
- START OBSERVING [cfg_group_name]
为指定组中的每个 broker 配置启动新的 observer 。如果未提供组名,则为obser.ora中定义的每个 broker 配置启动一个新的 observer。
- STOP OBSERVING [cfg_group_name]
停止在指定组中的所有broker配置的该主机(此DGMGRL正在运行)上运行的本地观测器
- SHOW OBSERVERS [FOR fg_group_name ]
显示指定组中所有配置的 observer 的信息。该命令显示的信息与SHOW OBSERVER 命令在每个单独配置上显示的信息相同。如果未指定组名,则SHOW OBSERVERS本身也是有效的命令。它的行为类似于START OBSERVING和STOP OPSERVING,以对观察者配置文件中定义的所有配置进行操作。
- SET MASTEROBSERVER TO
允许您手动更改观测器配置文件。
## Credentials Required for Access to Broker Configurations
您必须使用Oracle wallet 存储要管理的所有 broker 配置的凭据。Data Guard broker不管理或存储凭据。它使用在观察者配置文件中指定的连接标识符来从Oracle wallet 中定位broker配置的凭据。如果无法获得凭据,则尝试的命令将失败(但仅限于尚未获得凭据的 broker 配置)。
下面是 observer 配置文件的示例:
```
# is the comment sign in this file
BROKER_CONFIGS = (
#Broker configuration 'SALES'; the connect ID is 'SALES_P'
(CONFIG = (NAME=SALES)
(CONNECT_ID=SALES_P)
(CONFIG_HOME= ORACLE_HOME/LOG/))
#Broker configuration 'HR'; the connect ID is 'HR_P'
(CONFIG = (NAME=HR)
(CONNECT_ID=HR_P)
(CONFIG_HOME= ORACLE_HOME/LOG/))
#Broker configuration 'CUSTOMER'; The connect ID is 'CUSTOMER_P'
(CONFIG = (NAME =CUSTOMER)
(CONNECT_ID=CUSTOMER_P)
(CONFIG_HOME= ORACLE_HOME/LOG1/))
)
# The portion 'CONFIG_GROUP' lists definitions of
# all broker configuration groups
CONFIG_GROUPS= (
# Configuration 'GRP_A' includes 'SALES' and 'HR'
(GROUP = (NAME=GRP_A)
(CONFIG_LIST=
(NAME=SALES)
(NAME=HR)))
# Configuration 'GRP_B' includes 'SALES' and 'CUSTOMER'
(GROUP = (NAME=GRP_B)
(CONFIG_LIST=
(NAME=SALES)
(NAME=CUSTOMER)))
)
```
由于broker配置 SALES 由三个数据库Boston、Chicago和Dallas组成,CONNECT_ID为SALES_P,因此必须定义SALES_P连接标识符,以便它可以访问配置中任何数据库的任何实例。
新的ConfigurationWideServiceName配置属性可用于简化设置此连接标识符。Data Guard broker在每个实例启动时发布该服务,并初始化实例的broker管理:
```
SALES_P = (DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS=(PROTOCOL=TCP)(HOST=boston-cluster)(PORT = 1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=chicago-cluster)(PORT = 1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=dallas-cluster)(PORT = 1521)))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=cfgSvc.us.example.com)))
```
# 10.在操作员运行且启用快速启动故障转移时修补环境
要修补运行观测器并启用快速启动故障切换的环境,请在应用修补程序之前遵循以下步骤。
1. 使用 Stop observer 命令停止observer。如果已经为配置启动了多个observer,那么请确保指定要修补其环境的observer的名称 (STOP OBSERVER observer-name)。主备用和目标备用必须具有连接,STOP OBSERVER 命令才能成功完成。
2. 使用 Disable fast_start failover 命令禁用快速启动故障转移。请注意,主备用和目标备用必须具有连接才能成功完成此命令。
注意:如果在要修补的环境中仅运行备份observer,而没有主observer,则没有必要禁用快速启动故障转移。
在修补程序成功应用于所有数据库后,采取以下步骤启用快速启动故障转移并启动observer。
1. 使用 Enable fast_start failover命令启用快速启动故障转移。主备用和目标备用必须具有连接,此命令才能成功完成。
2. 使用 Start observer 命令启动 observer。如果配置有多个 observer,请确保指定其环境刚刚修补的观测者的名称(START OBSERVER observer-name)。




