前天在搭建物理standby時,前面步驟都沒錯(實際上是有錯),在驗證歸檔日誌是否同步到備庫時發現:
ORA-16047: DGID mismatch between destination setting and standby
我們的處理方案是:在主備同時設定log_archive_config
1. 備庫
idle> show parameter log_archive_config;NAME TYPE VALUE------------------------------------ ----------- ------------------------------log_archive_config string DG_CONFIG=(ORCL_PRY,ORCL_PHY)
2. 主庫
sys@ORCL> show parameter log_archive_config;NAME TYPE VALUE------------------------------------ ----------- ------------------------------log_archive_config string DG_CONFIG=(ORCL_PRY,ORCL_PHY)
什麼是log_archive_config?這裡只給出自己的理解,如果想深入的朋友,可看下官方文檔。
主要是針對redo log 傳送和接收的,在最大可用及最大保護模式下設定才會有影響,不設定在switchover切換時會報ORA-16047。
通過dg_config羅列DG環境所有db_unique_name:
主庫:
*.log_archive_config='dg_config=(master,stdby)'
備庫:
*.log_archive_config='dg_config=(stdby,master)'
設定時注意,我有一個原則:自己在前,別人在後。不過,這個參數是順序無關的 :-)
最後,也是很重要的一點,在故障診斷過程中,我學到一項很有用的技巧:利用tcpdump觀察網路流
例如在備庫上執行:
tcpdump -i eth1 port 1521
這個很有用,記錄下。
另外,配套的一個是tail -f 觀察警示日誌的刷出。
Good Luck!