目录

简介

先决条件

要求

使用的组件

背景信息

问题

故障排除

解决方案

验证

简介

本文档介绍通过从主数据库重建备用数据库来解决Prime网络中数据库复制或同步问题的分步过程。

先决条件

要求

Cisco 建议您了解以下主题：

- 仅当主数据库的SWITCHOVER_STATUS转换为UNRESOLVABLE GAP时，才使用此过程重建辅助数据库。

- 确保主数据库处于READ WRITE模式，辅助数据库处于READ ONLY或READ ONLY WITH APPLY模式。

- 确保确定正确的主Prime中心网关和辅助Prime中心网关/数据库。

使用的组件

本文档中的信息基于以下软件和硬件版本：

- Prime Central版本1.2及更高版本

- Oracle Database 11G版本

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

背景信息

1.使用此命令可了解主数据库的switchover_status:

SQL> select switchover_status from v$database

SWITCHOVER_STATUS

--------------------

UNRESOLVABLE GAP

注意：Prime Central Geo HA切换失败，突然使Prime Central GEO HA系统和/或数据库角色状态损坏（主要或两者都处于备用状态），然后您需要根据上次主用/备用状态重建主或辅助。

注意：对于所有其他情况，请打开SR与Cisco TAC以解决数据库复制问题。

2. 使用此命令可了解主数据库和辅助数据库的当前模式：

SQL> select open_mode from v$database;

3. 使用此命令可了解主数据库和辅助数据库的ORACLE_SID:

在Oracle用户的主网关上：

echo $ORACLE_SID -> output should be “primedb”

在Oracle用户的辅助网关上：

echo $ORACLE_SID -> output should be “primstdb”

问题

当主用和备用数据库彼此不同步时，Prime Central GEO HA交换机和/或故障切换/故障恢复过程失败。这会导致主数据库和备用数据库同时变为主用数据库或备用数据库。

故障排除

在遵循解决方案之前，您可以执行基本的故障排除步骤：

1.检查主Prime网关和辅助Prime网关之间的网络连接和/或延迟相关问题。

2.在主数据库上检查此数据库日志，以查找任何与数据库相关的ORA错误：

<database_home_directory>/diag/rdbms/anadb/anadb/trace/alert_anadb.log

3. 在主数据库和辅助数据库上检查open_mode、current_scn和切换状态。

SQL> select open_mode from v$database

SQL> select current_scn from v$database

SQL> select switchover_status from v$database;

4.数据库复制的根本原因主要可能是主Prime Central数据库和辅助Prime Central数据库之间的网络通信问题、损坏的数据库或类似的数据库相关错误。

解决方案

步骤1.检验主网关/数据库和辅助网关/数据库上的ORACLE_SID。

在主网关/数据库上ORACLE_SID = primedb

在辅助网关/数据库上ORACLE_SID = primdtdb

如果主网关或辅助网关中的ORACLE_SID与前面提到的不同，请使用此命令配置正确的SID:

setenv ORACLE_SID = <value>

注意：此处<value > = primedb或primstdb基于主或辅助。

步骤2.在Active和Standby数据库上，以sysdba身份登录，并找到数据文件的目录路径以及重做日志和归档日志文件。

使用以下命令：

要查找数据文件，请执行以下操作：

SQL> select name from v$datafile;

要查找重做日志文件，请执行以下操作：

SQL> select member from v$logfile;

要查找存档日志，请执行以下操作：

SQL> show parameter log_archive_dest_1;

步骤3.要重建数据库，请在确定步骤4中描述的正确方案后以正确的语法运行此脚本。

sh PCoracleADG.ksh [PRIMARY] [STANDBY] [DB_TO_BE_DROPPED] [SYSTEM_PASSWD] [ORACLE_BASE]

[ORACLE_USER] [ARCHIVED_LOG_LOCATION] [ORACLE_DATA_FILES_LOCATION] [REDO_LOG_LOCATION]

注意：脚本复制在$ORACLE_BASE/standby文件夹下，需要以Oracle用户身份运行。

步骤4.确定当前设置状态的任何场景，并相应地继续：

注意：例如，假设HA1是主网关/数据库，而HA2是辅助网关/数据库

情形 1：HA1处于活动状态，需要在HA2上重建备用数据库。请使用这些参数并在HA2上运行步骤3中提到的脚本。

PRIMARY = primedb

STANDBY = primstdb

DB_TO_BE_DROPPED = primstdb

SYSTEM_PASSWD = use Step 5

ORACLE_BASE = /orahome/oracle

ORACLE_USER = oracle

ARCHIVED_LOG_LOCATION = output of ‘show parameter log_archive_dest_1;&rsquo

ORACLE_DATA_FILES_LOCATION = output of ‘select name from v$datafile;&rsquo

REDO_LOG_LOCATION = output of ‘select member from v$logfile;’

方案 2：HA2处于活动状态，需要在HA1上重建备用数据库。请使用这些参数并在HA1上运行步骤3.中提到的脚本。

PRIMARY = primedb

备用= primstdb DB_TO_BE_DROPPED = primedb SYSTEM_PASSWD =使用步骤5 ORACLE_BASE = /orahome/oracle ORACLE_USER = oracle ARCHIVED_LOG_LOCATION = 'show parameter log_archive_dest_1;&rest_1;&rsus&rstFILES_LOCATION = '从v$datafile中选择名称；&rsquo REDO_LOG_LOCATION = '从v$logfile中选择成员；'的输出

步骤5.使用此步骤了解<SYSTEM_PASSWD>:

su - HA1或HA2上的prime

grep Embedded_SYSTEM_PASS= install/conf/.db.conf

例如，如果它有Embedded_SYSTEM_PASS=90f8006cd6bc0dde，则：

- java -cp install/utils/encryptionUtil.jar EncodeDecrypt 90f8006cd6bc0dde。

- Prime Central返回在步骤4中用作SYSTEM_PASSWD的输出字符串。

验证

主Prime和辅助Prime网络网关上的数据库验证：

1.验证主用和备用数据库上重做日志文件的编号和名称是否相同。

2.验证主用和备用数据库上的数据文件的数量和大小是否相同。

3.在主用数据库和备用数据库上使用此命令，以显示备用数据库上的当前SCN可以跟上主数据库上的scn:

sqlplus / as sysdba

SQL>select current_scn from v$database;

4.验证主用数据库的database_role是否为PRIMARY，备用数据库是否为LOGICAL_STANDBY。

sqlplus / as sysdba

SQL>select database_role from v$database;

5.验证活动数据库的open_mode是READ WRITE和READ ONLY WITH APPLY ON Standby数据库。

sqlplus / as sysdba

SQL>select open_mode from v$database;

6.验证主用数据库的switchover_status为TO STANDBY，并且在备用数据库上不允许：

sqlplus / as sysdba

SQL>select switchover_status from v$database;

7.验证是否传输了存档日志：

在ActiveDatabase上：

SQL> alter system switch logfile;

在备用数据库上：

检查以确保在~/arch中创建新文件