oracle 19c dg搭建duplicate過程中報錯

賀子_DBA時代發表於2020-06-26
oracle 19c搭建過程過程中,執行duplicate報錯,具體如下:
RMAN>duplicate target database for standby from active database nofilenamecheck;
input datafile file number=00001 name=/data/u01/app/oracle/oradata/BHDB/system01.dbf
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 06/26/2020 16:12:35
ORA-17628: Oracle error 19505 returned by remote Oracle server
ORA-19505: failed to identify file ""
channel ORA_DISK_1 disabled, job failed on it will be run on another channel
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 06/26/2020 16:12:35
RMAN-05501: aborting duplication of target database
RMAN-03015: error occurred in stored script Memory Script
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 06/26/2020 16:12:35
ORA-17628: Oracle error 19505 returned by remote Oracle server
ORA-19505: failed to identify file ""
問題原因:
一般遇到這個問題,都是引數db_file_name_convert和log_file_name_convert設定的轉換路徑的問題,可以檢查下從庫的相關目錄是否存在以及是否有許可權!
環境介紹:
主庫的資料檔案為如下所示,主要涉及到三個目錄:
/data/u01/app/oracle/oradata/BHDB/system01.dbf
/data/u01/app/oracle/oradata/BHDB/pdbseed/system01.dbf
/data/u01/app/oracle/oradata/BHDB/bhdb_pdb/sysaux01.dbf
於是想在從庫設定檔案轉換引數如下:(尋思想把涉及到的三個目錄都轉換成對應的dg庫目錄)
db_file_name_convert ='/data/u01/app/oracle/oradata/BHDB/pdbseed/', '/data/u01/app/oracle/oradata/BHDG/pdbseed/', '/data/u01/app/oracle/oradata/BHDB/bhdb_pdb/', '/data/u01/app/oracle/oradata/BHDB/bhdg_pdb/','/data/u01/app/oracle/oradata/BHDB/','/data/u01/app/oracle/oradata/BHDG/'
如上設定後,duplicate就一直報錯,我檢查了目錄和許可權都沒有問題,可是就有問題,於是檢視dg庫的告警日誌,如下所示:找不到目錄!!!
Errors in file /data/u01/app/oracle/diag/rdbms/bhdg/bhdg/trace/bhdg_mz00_119260.trc:
ORA-01110: data file 14: '/data/u01/app/oracle/oradata/BHDG/bhdb_pdb/kcas_bh02.dbf'
ORA-01565: error in identifying file '/data/u01/app/oracle/oradata/BHDG/bhdb_pdb/kcas_bh02.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
奇怪了,我明明已經設定了要把'/data/u01/app/oracle/oradata/BHDB/bhdb_pdb/',轉換成'/data/u01/app/oracle/oradata/BHDG/bhdg_pdb/',怎麼不在'/data/u01/app/oracle/oradata/BHDG/bhdg_pdb/'建立檔案?怎麼報錯了呢,怎麼去'/data/u01/app/oracle/oradata/BHDG/bhdb_pdb/'建立檔案呢?於是我再dg庫伺服器建立上了'/data/u01/app/oracle/oradata/BHDG/bhdb_pdb/'目錄,然後再次執行,果然不報錯了!
只能設定成,具體如下:
[oracle@ovy-01 admin]$ mkdir -p  /data/u01/app/oracle/oradata/BHDG/bhdb_pdb/
原來dg引數不能級聯轉換目錄,只能轉換上級目錄,或者只能轉換下級目錄,也就是說你只能轉換
'/data/u01/app/oracle/oradata/BHDB/' 到'/data/u01/app/oracle/oradata/BHDG/' ,然後子目錄預設,也就是說/data/u01/app/oracle/oradata/BHDB/bhdb_pdb/到dg庫轉換成了/data/u01/app/oracle/oradata/BHDG/bhdb_pdb/, 或者你也可以轉換/data/u01/app/oracle/oradata/BHDB/bhdb_pdb/ ------> /data/u01/app/oracle/oradata/BHDG/bhdg_pdb/ 但是前級目錄是不能轉換的,不管你是否設定了!
所以針對我的這種情況,只需要設定最前級目錄,然後後面的都預設即可!因為別的子級別目錄也不管用!具體如下:
SQL> alter system set db_file_name_convert ='/data/u01/app/oracle/oradata/BHDB/', '/data/u01/app/oracle/oradata/BHDG/' scope=spfile;

關於設定db_file_name_convert 引數的設定規則,否則都會報錯
1.不能把主庫的多個目錄,轉換到dg庫的同一個目錄
db_file_name_convert ='/data/u01/app/oracle/oradata/BHDB/', '/data/u01/app/oracle/oradata/BHDG/' ,'/data/u01/app/oracle/oradata/BHDB2/','/data/u01/app/oracle/oradata/BHDG/'

2.不能級聯轉換目錄,如本文介紹的,也可能是我不知道怎麼實現級聯設定,如果有大神知道,可以指正!

3.目錄一定要最後帶上‘’/‘’,也就是必須要db_file_name_convert ='/data/u01/app/oracle/oradata/BHDB/', 而不能db_file_name_convert ='/data/u01/app/oracle/oradata/BHDB'.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29654823/viewspace-2700690/,如需轉載,請註明出處,否則將追究法律責任。

相關文章