目錄

簡介

必要條件

需求

採用元件

背景資訊

問題

疑難排解

解決方案

驗證

簡介

本文檔介紹通過從主資料庫重建備用資料庫來解決Prime網路中的資料庫複製或同步問題的逐步過程。

必要條件

需求

思科建議您瞭解以下主題：

- 僅當主資料庫的SWITCHOVER_STATUS為UNRESOLVABLE GAP時，才使用此過程重建輔助資料庫。

- 確保主資料庫處於READ WRITE中，輔助資料庫處於READ ONLY或READ ONLY WITH APPLYmode。

- 確保識別正確的主和輔助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系統和/或資料庫角色狀態損壞（主或雙待機），然後您需要根據上次主用/備用狀態重建主或輔助。

附註：對於所有其他情況，請使用Cisco TAC開啟SR以解決資料庫複製問題。

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網路網關之間的網路連線和/或延遲相關問題。

2.檢查主資料庫上的此資料庫日誌，查詢任何與資料庫相關的ORA錯誤：

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

3. 檢查Primary和Secondary資料庫上的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資料庫之間的網路通訊問題、資料庫損壞或類似的資料庫相關錯誤。

解決方案

步驟1.驗證主和輔助網關/資料庫上的ORACLE_SID。

在主網關/資料庫上ORACLE_SID = primedb

在輔助網關/資料庫中ORACLE_SID = primdtdb

如果主網關或輔助網關上的ORACLE_SID沒有前面提到的那樣，請使用此命令配置正確的SID:

setenv ORACLE_SID = <value>

附註：此處 <value > = primedb或primstdb基於主資料庫或輔助資料庫。

步驟2.在活動和備用資料庫上以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上重建備用資料庫。使用這些引數並運行步驟3中提到的指令碼。在HA2上。

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上重建備用資料庫。使用這些引數並運行步驟3中提到的指令碼。在HA1上。

PRIMARY = primedb

STANDBY = 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;&rsquo ORACLE_DATA_FILES_LOCATION = 'select name from v$datafile;&rsquo REDO_LOG_LOCATION = 'select member from 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 EncodeDecode解密90f8006cd6bc0dde。

- Prime Central返回在步驟4中用作SYSTEM_PASSWD的輸出字串。

驗證

主和輔助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.驗證Active資料庫的open_mode為READ WRITE和READ ONLY WITH APPLY on Standby資料庫。

sqlplus / as sysdba

SQL>select open_mode from v$database;

6.驗證Active的switchover_status是否為STANDBY，並且在Standby資料庫上是否允許：

sqlplus / as sysdba

SQL>select switchover_status from v$database;

7.驗證歸檔日誌是否已傳輸：

在ActiveDatabase上：

SQL> alter system switch logfile;

在備用資料庫上：

檢查以確保在~/arch中建立新檔案