目錄

簡介

必要條件

需求

採用元件

背景資訊

問題

疑難排解

解決方案

簡介

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

必要條件

需求

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

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

- 確保主資料庫處於讀寫狀態，輔助資料庫處於只讀或只讀（使用APPLY模式）。

採用元件

本文中的資訊係根據以下軟體和硬體版本：

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

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

2.使用此命令瞭解主資料庫和輔助資料庫的當前模式：

SQL> select open_mode from v$database;

問題

Prime網路資料庫複製失敗。

Prime Network應用程式建立通知此類故障的系統事件，這些事件在Event Vision GUI客戶端中可用。

疑難排解

在解決方案出現之前，請執行以下基本故障排除步驟：

1.檢查主和輔助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網路網關上執行資料庫還原過程：

步驟1.當前的定時備份作業會在檔案系統中保留數天的歸檔日誌檔案。要避免從要刪除的歸檔日誌檔案中刪除，請將backup_daily.sh 、 backup_high_daily.sh 、 backup_weekly.sh和backup_high_weekly.sh中的以下行註釋掉：

將delete noprompt archivelog until time ...更改為#delete archivelog until time ...

附註：這些「.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中建立的pfile重新啟動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全1.09米磁碟00:00:04 21-JAN-14

BP金鑰：2358狀態：可用壓縮：是標籤：TAG20140121T162311

片名：/export/home/oracle/backup/Control9nouks3f_1_1

包含備用控制檔案：Ckp SCN:164541747 Ckp時間：2014年1月21日

附註：在此示例中，備用控制檔案備份是/export/home/oracle/backup/Control9nouks3f_1_1。在此檔名下面的行中，您將看到「Ckp SCN:164541747」。 在第13步中，我們將在複製運行塊中使用數字「164541747」。

步驟10.在主資料庫上tar將在步驟8中建立的所有備份條目。以root使用者身份SCP tar檔案到備用資料庫的備份資料夾。

步驟11.在備用資料庫上以root使用者身份登入，並使用chown將tar檔案的檔案所有權更改為oracle:dba。然後將使用者切換回oracle(su - oracle)並取消tar檔案。

步驟12.在主網關上，以prime網路使用者和cd的身份登入~/Main目錄，然後運行以下命令以獲取sys密碼：

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

附註：返回的sys口令在下一步用於從主資料庫連線到備用資料庫。

步驟13.在主資料庫上連線到目標資料庫（主資料庫），然後連線到輔助資料庫（備用）。 然後運行duplicate運行塊以建立備用資料庫：

#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中獲得的sys密碼。運行塊中的$SCN_NUMBER是在步驟9獲得的。作為示例。$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 archivelog更改為time ...以刪除noprompt archivelog until time ...

驗證

主和輔助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 database。

sqlplus / as sysdba

SQL>select open_mode from v$database;

5.驗證主資料庫的switchover_status是否為STANDBY和NOT ALLOWED:

sqlplus / as sysdba

SQL>select switchover_status from v$database;

6.驗證歸檔日誌是否正在傳輸

在Primarydatabase上：

SQL> alter system switch logfile;

在輔助資料庫中：

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

7.確認從現在起（在接下來20分鐘內）您在Event Vision GUI中不會看到資料庫複製失敗。