2023年11月26日 星期日

從 NFS restore control file 失敗

Oracle 版本: 19.15

OS 版本: AIX 7.2


問題描述:

從 NFS 執行 restore controlfile 發生 RMAN-06172 錯誤 :

RMAN> restore controlfile from '/backup/rman/ORCL_0h1d5s04_1_1.ctl';


Starting restore at 19-NOV-2022 00:32:30

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=600 device type=DISK


RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of restore command at 11/19/2022 00:32:31

RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece


問題分析:

將備份檔 ORCL_0h1d5s04_1_1.ctl 複製到 local directory 並嘗試 restore controlfile 是可以成功 :

RMAN> restore controlfile from '/u01/app/backup/ORCL_0h1d5s04_1_1.ctl';


Starting restore at 19-NOV-2022 00:50:21

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=120 device type=DISK


channel ORA_DISK_1: restoring control file

channel ORA_DISK_1: restore complete, elapsed time: 00:00:02

output filename=/u01/oradata/orcl/control01.ctl

output filename=/u01/oradata/orcl/control02.ctl

Finished restore at 19-NOV-2022


由此驗證問題是出在 NFS 的 mount option 上,檢查發現 NFS 沒有調整任何的 mount option :

# mount |grep backup

172.26.18.110 /backup/rman   /backup  nfs3


解決方法:

使用正確的 mount option 重新 mount NFS 即可 :

# mount 172.26.18.110:/backup /backup/rman –o cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600


如果是 Linux 系統,則使用以下 options :

rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=3,timeo=600



RMAN 產生 ENQ: CF - CONTENTION 等待案例

Oracle 版本: 19.14

OS 版本: Linux 7.9


問題描述:

DB 在 RMAN 執行備份時段發生 hang 的情況,約有 2 分鐘無法進行任何操作與連線,此時 RMAN 正好在執行 rman delete obsolete 。


問題分析:

由 ASH 分析在事件時段存在著 ENQ: CF – CONTENTION 與 CONTROL FILE PARALLEL WRITE 等待事件 :


這個現象與 Bug 33727983 所描述的情況相符,原因在於需要 delete obsolete 的物件過多,需要花費較長的時間掃描 control file ,在多個 channel 同時作用下,便產生了 control file 爭用的情況發生。由 RMAN 的 log 可以看到 delete 超過萬個 obsolete 物件 :


解決方法:

Bug 33727983 於 19.17 之後的版本修復,將 DB apply RU 至 19.17 之後的版本,或者是單獨 apply 33727983 的 one-off patch 。暫時的 workaround 可以只使用單一個 channel 執行 delete obsolete ,這樣就可以避免多個 channel 執行同一個操作而造成 control file 爭用。