简介
本文档介绍通过从主数据库重建备用数据库来解决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中创建新文件