dataguard歸檔路徑的問題
最近處理了一起看似比較奇怪的dataguard歸檔路徑問題。
問題的背景是這樣的。
有一套一主兩備的環境,備庫1和主庫在同一個機房,可以嘗試在failover的時候切換備庫IP為主庫IP。另外還有一臺伺服器是作為異地災備。
最近有一臺伺服器出現了當機,然後做了災難切換,類似下面的情況。
當然,災備的重要性在某一天觸發。然後做了failover,就近的伺服器由備庫變為主庫。
這個時候如果備庫1這臺伺服器再出問題,那麼就只能切換到異地機房,同時應用端就需要修改IP地址了。當然這也是預案。
在此期間,主庫也在嘗試進行修復,然後過了些天之後,這臺伺服器就修復了。
所以現在的工作是搭建第二個備庫,當然搭建這個備庫為了減少主庫的壓力,是直接透過在第一個備庫中進行rman備份,然後複製到備庫2,再做恢復。
這種情況下對於主庫的壓力最小。只需要主庫在最後的dg broker驗證階段建立主備的關係即可。問題就發生在這個備庫的搭建過程中。
其實配置這些都做了檢查,也都沒有問題,但是備庫搭建好之後,配置dg broker開始應用日誌的時候,發現備庫的歸檔接收地址竟然是$ORACLE_HOME/dbs這個目錄。
當然從接收歸檔的角度而言,這個對於dataguard是沒有影響的,但是我再三做了檢查,快速閃回區,歸檔路徑都配置了。歸檔就是在$ORACLE_HOME/dbs這個路徑下面。
生成的歸檔檔案類似下面的格式。
-rw-r----- 1 oracle oinstall 469527552 Jan 31 00:23 dgsby_stestdb31_603_901350450.arc
-rw-r----- 1 oracle oinstall 196185600 Jan 31 00:23 dgsby_stestdb31_604_901350450.arc
-rw-r----- 1 oracle oinstall 195798528 Jan 31 00:24 dgsby_stestdb31_605_901350450.arc
-rw-r----- 1 oracle oinstall 195805184 Jan 31 00:25 dgsby_stestdb31_606_901350450.arc
-rw-r----- 1 oracle oinstall 506630656 Jan 31 00:25 dgsby_stestdb31_607_901350450.arc
-rw-r----- 1 oracle oinstall 196911616 Jan 31 00:25 dgsby_stestdb31_608_901350450.arc
-rw-r----- 1 oracle oinstall 196895744 Jan 31 00:25 dgsby_stestdb31_609_901350450.arc
-rw-r----- 1 oracle oinstall 507368960 Jan 31 00:27 dgsby_stestdb31_610_901350450.arc
dg broker也沒有任何錯誤,使用verbose檢視備庫的明細資訊:
HostName = 'testcenter.test.com'
SidName = 'testdb'
LocalListenerAddress = '(ADDRESS=(PROTOCOL=TCP)(HOST=10.xxxxx)(PORT=1539))'
StandbyArchiveLocation = 'dgsby_testdb'
AlternateLocation = ''
LogArchiveTrace = '0'
LogArchiveFormat = '%t_%s_%r.arc'
LatestLog = '(monitor)'
TopWaitEvents = '(monitor)'
備庫的歸檔設定是一個別名,而不是一個路徑
對於這種情況感覺非常彆扭,就希望儘快把這個問題弄明白。然後手工修改歸檔路徑,閃回區設定還是無濟於事。
這種情況越是奇怪,越是引起了我的好奇,然後就開始認真檢視日誌。發現了這麼一段內容。
ARC0: Thread not mounted
Sat Jan 30 23:07:26 2016
Errors in file /U01/app/oracle/admin/testdb/udump/testdb_ora_15343.trc:
ORA-19816: WARNING: Files may exist in db_recovery_file_dest that are not known to database.
Sat Jan 30 23:07:26 2016
trace日誌的詳細內容為:
/U01/app/oracle/admin/testdb/udump/testdb_ora_15343.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning and Data Mining options
ORACLE_HOME = /U01/app/oracle/product/10.2
System name: SunOS
Node name: stestdb3.test.com
Release: 5.10
Version: Generic_137111-06
Machine: sun4v
Instance name: testdb
Redo thread mounted by this instance: 0 <none>
Oracle process number: 21
Unix process pid: 15343, image: oracle@stestdb3.test.com (TNS V1-V3)
*** 2016-01-30 23:07:22.206
*** ACTION NAME:(0000010 FINISHED129) 2016-01-30 23:07:22.205
*** SERVICE NAME:() 2016-01-30 23:07:22.205
*** SESSION ID:(5270.9) 2016-01-30 23:07:22.205
kccsga_update_ckpt: num_1 = 8, num_2 = 0, num_3 = 0, lbn_2 = 0, lbn_3 = 0
ORA-19816: WARNING: Files may exist in db_recovery_file_dest that are not known to database.
*** 2016-01-30 23:07:26.436
*************************************************************
WARNING: Files created after time 01/30/2016 11:17:41 may exist in
db_recovery_file_dest that is not known to the database.
Use the RMAN command CATALOG RECOVERY AREA to re-catalog
any such files. This is most likely the result of a crash
during file creation.
********************************************
對於這個問題其實還沒怎麼看明白,歸檔路徑還有什麼特殊的設定。
使用rman crosscheck archivelog all的時候,發現這個歸檔路徑下面竟然有2014年的一些歸檔日誌。
archive log filename=/U01/app/oracle/flash_recovery_area/Stestdb3/archivelog/2014_05_15/o1_mf_1_208468_9q788hoo_.arc recid=1 stamp=902531829
validation failed for archived log
archive log filename=/U01/app/oracle/flash_recovery_area/Stestdb3/archivelog/2014_05_15/o1_mf_1_208469_9q79r89t_.arc recid=2 stamp=902531829
validation failed for archived log
archive log filename=/U01/app/oracle/flash_recovery_area/Stestdb3/archivelog/2014_05_15/o1_mf_1_208470_9q79v2y3_.arc recid=3 stamp=902531829
而且這些歸檔日誌檔案是很早以前的,不知道什麼原因竟然保留了下來,可見就是這些過舊的歸檔檔案造成了干擾。
這麼陳舊的歸檔檔案確實不需要確認,直接刪除即可。這就是前人留下的一個坑。
然後刪除之後,dg broker就需要重新配置了。
DGMGRL> edit database stestdb3 set property StandbyArchiveLocation='location=use_db_recovery_file_dest';
Property "standbyarchivelocation" updated
然後再次從主庫切換歸檔,就可以看到在新的目錄下生成了得到了最新的歸檔日誌檔案。
drwxr-x--- 3 oracle oinstall 15872 Jan 31 01:03 archivelog
drwxr-x--- 2 oracle oinstall 512 Mar 6 2012 onlinelog
-bash-3.1$ cd archivelog/
-bash-3.1$ ls -R
total 2
drwxr-x--- 2 oracle oinstall 512 Jan 31 01:03 2016_01_31
total 18512
-rw-r----- 1 oracle oinstall 209715712 Jan 31 01:04 o1_mf_1_637_cbsv6p84_.arc
所以對於資料庫中的過舊的歸檔檔案也需要格外主要,如果不加以注意,很可能在以後會被很多資訊所干擾。
問題的背景是這樣的。
有一套一主兩備的環境,備庫1和主庫在同一個機房,可以嘗試在failover的時候切換備庫IP為主庫IP。另外還有一臺伺服器是作為異地災備。
最近有一臺伺服器出現了當機,然後做了災難切換,類似下面的情況。
當然,災備的重要性在某一天觸發。然後做了failover,就近的伺服器由備庫變為主庫。
這個時候如果備庫1這臺伺服器再出問題,那麼就只能切換到異地機房,同時應用端就需要修改IP地址了。當然這也是預案。
在此期間,主庫也在嘗試進行修復,然後過了些天之後,這臺伺服器就修復了。
所以現在的工作是搭建第二個備庫,當然搭建這個備庫為了減少主庫的壓力,是直接透過在第一個備庫中進行rman備份,然後複製到備庫2,再做恢復。
這種情況下對於主庫的壓力最小。只需要主庫在最後的dg broker驗證階段建立主備的關係即可。問題就發生在這個備庫的搭建過程中。
其實配置這些都做了檢查,也都沒有問題,但是備庫搭建好之後,配置dg broker開始應用日誌的時候,發現備庫的歸檔接收地址竟然是$ORACLE_HOME/dbs這個目錄。
當然從接收歸檔的角度而言,這個對於dataguard是沒有影響的,但是我再三做了檢查,快速閃回區,歸檔路徑都配置了。歸檔就是在$ORACLE_HOME/dbs這個路徑下面。
生成的歸檔檔案類似下面的格式。
-rw-r----- 1 oracle oinstall 469527552 Jan 31 00:23 dgsby_stestdb31_603_901350450.arc
-rw-r----- 1 oracle oinstall 196185600 Jan 31 00:23 dgsby_stestdb31_604_901350450.arc
-rw-r----- 1 oracle oinstall 195798528 Jan 31 00:24 dgsby_stestdb31_605_901350450.arc
-rw-r----- 1 oracle oinstall 195805184 Jan 31 00:25 dgsby_stestdb31_606_901350450.arc
-rw-r----- 1 oracle oinstall 506630656 Jan 31 00:25 dgsby_stestdb31_607_901350450.arc
-rw-r----- 1 oracle oinstall 196911616 Jan 31 00:25 dgsby_stestdb31_608_901350450.arc
-rw-r----- 1 oracle oinstall 196895744 Jan 31 00:25 dgsby_stestdb31_609_901350450.arc
-rw-r----- 1 oracle oinstall 507368960 Jan 31 00:27 dgsby_stestdb31_610_901350450.arc
dg broker也沒有任何錯誤,使用verbose檢視備庫的明細資訊:
HostName = 'testcenter.test.com'
SidName = 'testdb'
LocalListenerAddress = '(ADDRESS=(PROTOCOL=TCP)(HOST=10.xxxxx)(PORT=1539))'
StandbyArchiveLocation = 'dgsby_testdb'
AlternateLocation = ''
LogArchiveTrace = '0'
LogArchiveFormat = '%t_%s_%r.arc'
LatestLog = '(monitor)'
TopWaitEvents = '(monitor)'
備庫的歸檔設定是一個別名,而不是一個路徑
對於這種情況感覺非常彆扭,就希望儘快把這個問題弄明白。然後手工修改歸檔路徑,閃回區設定還是無濟於事。
這種情況越是奇怪,越是引起了我的好奇,然後就開始認真檢視日誌。發現了這麼一段內容。
ARC0: Thread not mounted
Sat Jan 30 23:07:26 2016
Errors in file /U01/app/oracle/admin/testdb/udump/testdb_ora_15343.trc:
ORA-19816: WARNING: Files may exist in db_recovery_file_dest that are not known to database.
Sat Jan 30 23:07:26 2016
trace日誌的詳細內容為:
/U01/app/oracle/admin/testdb/udump/testdb_ora_15343.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning and Data Mining options
ORACLE_HOME = /U01/app/oracle/product/10.2
System name: SunOS
Node name: stestdb3.test.com
Release: 5.10
Version: Generic_137111-06
Machine: sun4v
Instance name: testdb
Redo thread mounted by this instance: 0 <none>
Oracle process number: 21
Unix process pid: 15343, image: oracle@stestdb3.test.com (TNS V1-V3)
*** 2016-01-30 23:07:22.206
*** ACTION NAME:(0000010 FINISHED129) 2016-01-30 23:07:22.205
*** SERVICE NAME:() 2016-01-30 23:07:22.205
*** SESSION ID:(5270.9) 2016-01-30 23:07:22.205
kccsga_update_ckpt: num_1 = 8, num_2 = 0, num_3 = 0, lbn_2 = 0, lbn_3 = 0
ORA-19816: WARNING: Files may exist in db_recovery_file_dest that are not known to database.
*** 2016-01-30 23:07:26.436
*************************************************************
WARNING: Files created after time 01/30/2016 11:17:41 may exist in
db_recovery_file_dest that is not known to the database.
Use the RMAN command CATALOG RECOVERY AREA to re-catalog
any such files. This is most likely the result of a crash
during file creation.
********************************************
對於這個問題其實還沒怎麼看明白,歸檔路徑還有什麼特殊的設定。
使用rman crosscheck archivelog all的時候,發現這個歸檔路徑下面竟然有2014年的一些歸檔日誌。
archive log filename=/U01/app/oracle/flash_recovery_area/Stestdb3/archivelog/2014_05_15/o1_mf_1_208468_9q788hoo_.arc recid=1 stamp=902531829
validation failed for archived log
archive log filename=/U01/app/oracle/flash_recovery_area/Stestdb3/archivelog/2014_05_15/o1_mf_1_208469_9q79r89t_.arc recid=2 stamp=902531829
validation failed for archived log
archive log filename=/U01/app/oracle/flash_recovery_area/Stestdb3/archivelog/2014_05_15/o1_mf_1_208470_9q79v2y3_.arc recid=3 stamp=902531829
而且這些歸檔日誌檔案是很早以前的,不知道什麼原因竟然保留了下來,可見就是這些過舊的歸檔檔案造成了干擾。
這麼陳舊的歸檔檔案確實不需要確認,直接刪除即可。這就是前人留下的一個坑。
然後刪除之後,dg broker就需要重新配置了。
DGMGRL> edit database stestdb3 set property StandbyArchiveLocation='location=use_db_recovery_file_dest';
Property "standbyarchivelocation" updated
然後再次從主庫切換歸檔,就可以看到在新的目錄下生成了得到了最新的歸檔日誌檔案。
drwxr-x--- 3 oracle oinstall 15872 Jan 31 01:03 archivelog
drwxr-x--- 2 oracle oinstall 512 Mar 6 2012 onlinelog
-bash-3.1$ cd archivelog/
-bash-3.1$ ls -R
total 2
drwxr-x--- 2 oracle oinstall 512 Jan 31 01:03 2016_01_31
total 18512
-rw-r----- 1 oracle oinstall 209715712 Jan 31 01:04 o1_mf_1_637_cbsv6p84_.arc
所以對於資料庫中的過舊的歸檔檔案也需要格外主要,如果不加以注意,很可能在以後會被很多資訊所干擾。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1986554/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【archive_dest】歸檔的路徑問題Hive
- 10g修改歸檔日誌路徑的問題
- 歸檔日誌多歸檔路徑 duplex
- 更改ORACLE歸檔路徑及歸檔模式Oracle模式
- 改變歸檔檔案路徑
- 檔案路徑問題( ./ 和 ../ 和 @/ )
- 修改歸檔日誌路徑
- 更改archive log 歸檔路徑和歸檔檔名稱Hive
- 更改oracle10g的歸檔模式和歸檔路徑Oracle模式
- 修改db2的歸檔路徑DB2
- 由於歸檔路徑設定不當,系統無法響應的問題
- 【Django】檔案讀取時路徑問題Django
- oracle單機改變歸檔路徑Oracle
- oracle資料庫更改歸檔路徑Oracle資料庫
- [Archive]更改ORACLE預設歸檔路徑HiveOracle
- 非歸檔模式下的資料檔案路徑修改模式
- oracle 10g rac+asm 歸檔路徑磁碟組空間滿問題處理Oracle 10gASM
- standby庫歸檔日誌路徑小節
- 歸檔路徑與FRA實驗過程
- ORA-00257 (線上更改歸檔路徑,刪除歸檔日誌)
- oracle歸檔日誌儲存路徑的設定Oracle
- 【Oracle】歸檔日誌管理-設定歸檔日誌路徑以及歸檔日誌冗餘Oracle
- 遞迴路徑問題遞迴
- 資源路徑問題
- 上傳檔案時路徑總是C:\fakepath\的問題
- JavaWeb中讀取【專案路徑下檔案】的路徑問題:this.getServletContext().getRealPath()JavaWebServletContext
- 【實驗】【Archived Log】歸檔日誌格式和歸檔路徑之change趣談Hive
- web專案絕對路徑與相對路徑的問題Web
- django建立的專案路徑問題Django
- web應用中的路徑問題Web
- DWR中引用JS的路徑問題JS
- 演算法——路徑問題演算法
- Java 專案讀取 resource 資原始檔路徑問題Java
- 奇葩網路問題歸總
- 程式設計中對於檔案路徑應該注意的問題程式設計
- 遷移Qt專案的路徑問題QT
- python中的路徑問題彙總Python
- vue 關於圖片路徑的問題Vue