目录

简介

先决条件

要求

使用的组件

背景信息

问题

故障排除

解决方案

简介

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

先决条件

要求

Cisco 建议您了解以下主题：

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

- 确保主数据库处于“读写”模式，辅助数据库处于“只读”或“只读”模式，且处于“应用”模式。

使用的组件

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

- Prime Network 3.9及更高版本

- 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;

问题

Prime网络数据库复制失败。

Prime Network应用程序创建通知此类故障的系统事件，这些事件在Event Vision GUI客户端中可用。

故障排除

在解决方案之前，执行基本故障排除步骤，如：

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网关和辅助Prime网关之间的网络通信问题、数据库损坏或类似的数据库相关错误。

解决方案

在主Prime和辅助Prime网络网关上执行数据库恢复过程：

步骤1.当前的定时备份作业在文件系统中保留几天的存档日志文件。为避免从要删除的存档日志文件中删除，对backupdaily.sh、backuphighdaily.sh、backupweekly.sh和backuphighweekly.sh中的此行进行注释：

将delete noprompt archivelog更改为noprompt archivelog，直到时间……更改为#delete noprompt archivelog，直到时间……

注意：这些“.sh”脚本由oracle用户所有，可在$ORACLE_HOME/ana_scripts目录中找到。

步骤2.在主数据库上，以sysdba身份登录，通过查找系统上的重做文件数并执行以下命令：

SQL> select member from v$logfile;

对于每个日志，请执行此命令。因此，如果上一命令返回6行，则执行下一命令6次。

SQL>alter system switch logfile;

步骤3.在备用数据库上，以sysdba身份登录，然后从spfile创建pfile:

SQL>create pfile='$ORACLE_HOME/dbs/ana_sb_init.ora' from spfile;

步骤4.在备用数据库上以sysdba身份登录，并找到数据文件、备份片段、重做日志和归档日志文件的目录路径。这可以通过以下命令完成：

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

SQL> select name from v$datafile;

要查找备份文件，请执行以下操作：

rman target /

RMAN> list backup;

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

SQL> select member from v$logfile;

要查找archiveLog，请执行以下操作：

SQL> show parameter log_archive_dest_1;

关闭数据库：

sqlplus / as sysdba

SQL> shutdown immediate;

步骤5.从相应目录中删除所有数据文件、备份片段、重做日志文件和归档日志文件（在步骤4中找到路径）。

然后，使用步骤3中创建的文件重新启动nomount:

sqlplus / as sysdba

SQL>startup nomount pfile='$ORACLE_HOME/dbs/ana_sb_init.ora;

步骤6.在主数据库上，复制备份文件夹中的所有原始备份片段并将其存储在其他位置。

步骤7.在主数据库上，连接到RMAN并使用delete backup从文件系统中删除所有物理备份片段。

#rman target /

RMAN>delete backup;

步骤8.在主数据库上，按此顺序连接到RMAN并对数据库、备用控制文件和归档进行完全备份。执行以下命令：

#rman target /

RMAN>backup database;

RMAN>backup format '$BACKUP_DIR/Control%U' current controlfile for Standby;

RMAN>backup archivelog all;

注意：$BACKUP_DIR是以前使用列表备份找到的当前备份文件夹，该文件将在将来称为Control%U。它不是变量。

步骤9.在主数据库上，连接到RMAN并使用列表备份查找在步骤8中创建的备用控制字段的ckp scn。查找名称格式为$BACKUP_DIR/Control%U的文件。

BS密钥类型LV大小设备类型已用时间完成时间

— — —

2358满1090000磁盘00:00:04 2014年1月21日

BP密钥：2358状态：可用压缩：是标记：TAG20140121T162311

条目名称：/export/home/oracle/backup/Control9nouks3f_1_1

包含的备用控制文件：电路SCN:164541747电路时间：2014年1月21日

注意：在本示例中，备用控制文件备份是/export/home/oracle/backup/Control9nouks3f_1_1。在此文件名下的一行中，您会看到“Ckp SCN:164541747”。 我们将在步骤13的复制运行块中使用编号“164541747”。

步骤10.在主数据库上，将第8步中创建的所有备份片段tar化。作为根用户，将tar文件SCP到备用数据库的备份文件夹。

步骤11.在备用数据库上，以根用户身份登录，并使用chown将tar文件的文件所有权更改为oracle:dba。然后将用户切换回oracle(su - oracle)并解压缩tar文件。

步骤12.在主网关上，以主网络用户身份登录并cd到~/Main目录，然后运行以下命令以获取系统密码：

./runRegTool.sh –gs 127.0.0.1 get 127.0.0.1 persistency/general/EmbeddedDBSystemPass

注意：在下一步中，将使用返回的系统密码从主数据库连接到备用数据库。

步骤13.在主数据库上，连接到目标数据库（主数据库），然后连接到辅助数据库（备用数据库）。 然后运行重复的运行块以创建备用数据库：

#rman target /

RMAN>connect auxiliary sys/$sys_pwd@ANADB_SB

RMAN>run {

set until scn $SCN_NUMBER;

duplicate target database

for Standby

dorecover

spfile

set "db_unique_name"="anadb_sb"

set LOG_ARCHIVE_DEST_2="Service=anadb ASYNC LGWR VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

database_unique_name=anadb"

set FAL_CLIENT="anadb_sb"

set FAL_SERVER="anadb"

set log_file_name_convert="$REDO","$REDO"

nofilenamecheck;

}

注意：$sys_pwd是您在步骤12中获得的系统密码。例如，在步骤9中，运行块中的$SCN_NUMBER。$REDO是重做日志位置，后跟/。

步骤14.在步骤13.中的运行块完成后，以sysdba身份在备用数据库上登录并运行以下命令以在只读模式下启动备用数据库，然后在应用模式下以只读模式启动：

sqlplus / as sysdba

SQL>shutdown immediate;

SQL>startup nomount;

SQL>alter database mount Standby database;

SQL>recover managed Standby database using current logfile disconnect from session;

SQL>recover managed Standby database cancel;

SQL>alter database open read only;

SQL>recover managed Standby database using current logfile disconnect from session;

步骤15.在主数据库上进行验证后，取消对backup_daily.sh、backup_high_daily.sh、backup_weekly.sh和backup_high_weekly.sh中此行的注释：

更改#delete noprompt archivelog直到时间……，以删除noprompt archivelog直到时间……

验证

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

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

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

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

sqlplus / as sysdba

SQL>select current_scn from v$database;

4.验证主数据库的open_mode是READ WRITE和READ ONLY WITH APPLY ON Standby数据库。

sqlplus / as sysdba

SQL>select open_mode from v$database;

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

sqlplus / as sysdba

SQL>select switchover_status from v$database;

6.验证是否正在传输存档日志

在主数据库上：

SQL> alter system switch logfile;

在辅助数据库上：

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

7.确认您不会在Event Vision GUI中看到数据库复制失败，从现在开始（在接下来的20分钟内）。