Oracle

故障轉移後複製 Oracle 數據庫時出錯,使用 11.2.0.4

  • November 26, 2014

我最近將 oracle 從版本更新11.2.0.1到了11.2.0.4,我的冗餘系統不再能夠從故障轉移中恢復。

我在主節點和備用節點上都使用腳本來恢復到可以再次將它們安裝為冗餘系統的狀態。

執行故障轉移後,可以在所有狀態下一遍又一遍地執行重置腳本。唯一的變化是它的升級11.2.0.4.就像一個魅力11.2.0.1

我正在使用 Data Guard Broker 來維護冗餘。

設置過程很複雜,在這裡很難解釋,所以我只是問是否有人遇到過同樣的錯誤,並且可能有解決方案如何從這種情況中恢復。

至少,這是失敗的輸出:(備份步驟在重複操作之前執行)

2014-11-14 17:08:55 : Recovery Manager: Release 11.2.0.4.0 - Production on Fri Nov 14 17:08:48 2014
2014-11-14 17:08:55 : Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
2014-11-14 17:08:55 : connected to target database: REF15 (DBID=276671931)
2014-11-14 17:08:55 : RMAN> CONNECT AUXILIARY *
2014-11-14 17:08:55 : 2> RUN {
2014-11-14 17:08:55 : 3> SET UNTIL sequence = 159 thread = 1;
2014-11-14 17:08:55 : 4> ALLOCATE AUXILIARY CHANNEL CH1 TYPE DISK;
2014-11-14 17:08:55 : 5> DUPLICATE TARGET DATABASE FOR STANDBY NOFILENAMECHECK DORECOVER;
2014-11-14 17:08:56 : 6> RELEASE CHANNEL CH1;
2014-11-14 17:08:56 : 7> }
2014-11-14 17:08:56 : 8> exit;
2014-11-14 17:08:56 : connected to auxiliary database: REF15 (not mounted)
2014-11-14 17:08:56 : executing command: SET until clause
2014-11-14 17:08:56 : using target database control file instead of recovery catalog
2014-11-14 17:08:56 : allocated channel: CH1
2014-11-14 17:08:56 : channel CH1: SID=25 device type=DISK
2014-11-14 17:08:56 : Starting Duplicate Db at 14-NOV-14
2014-11-14 17:08:56 : released channel: CH1
2014-11-14 17:08:56 : RMAN-00571: ===========================================================
2014-11-14 17:08:56 : RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
2014-11-14 17:08:56 : RMAN-00571: ===========================================================
2014-11-14 17:08:56 : RMAN-03002: failure of Duplicate Db command at 11/14/2014 17:08:51
2014-11-14 17:08:56 : RMAN-05501: aborting duplication of target database
2014-11-14 17:08:56 : RMAN-20206: log sequence not found in the repository
2014-11-14 17:08:56 : Recovery Manager complete.

更新:從以下查詢中獲取日誌序列號(在本例中:159):

從 v$archived_log 中選擇 max(sequence#);

謝謝(最初發佈在標準堆棧交換中)

該消息表明目前版本中不存在具有此序列的歸檔日誌。

故障轉移開始一個新的化身,日誌序列再次從 1 開始。假設您的數據庫現在處於序列 10,而故障轉移之前的日誌序列是 159。此時的 V$ARCHIVED_LOG 仍然包含有關先前化身的條目,因此上述查詢將返回 159,因為它不考慮新化身(resetlogs)的開始。

對於此類查詢,請始終檢查 resetlogs_change# 或 resetlogs_time,例如:

select max(sequence#) from v$archived_log join v$database using (resetlogs_change#);

修復此問題並再次嘗試複製。或者只是跳過 UNTIL 子句,讓日誌傳送處理歸檔日誌。

引用自:https://dba.stackexchange.com/questions/83704