深圳網(wǎng)站制作公司咨詢小紅書搜索關鍵詞排名
? ? ? ?最近遇到了復制數(shù)據(jù)(DUPLICATE TARGET DATABASE TO xxx)的時候 Oracle 源和目標庫目錄不一致的問題,比較初級但也踩到一些坑,整理記錄一下。主從庫搭建的時候注意事項其實也類似,而且更通用,所以標題寫的是主從庫目錄。
一、?參數(shù)含義
- db_create_file_dest:設置后開啟OMF,創(chuàng)建數(shù)據(jù)文件、redo文件時不需手動指定路徑
- db_file_name_convert:主、從庫數(shù)據(jù)文件目錄轉(zhuǎn)換對應,如果有多個,需要逐一指明。建議直接指定到數(shù)據(jù)文件上一層目錄,否則其中子目錄必須在從庫中存在(參考后面案例)。
- log_file_name_convert:主、從庫redo文件目錄轉(zhuǎn)換對應,如果有多個,需要逐一指明。注意事項同上。
優(yōu)先級:
db_create_file_dest >?db_file_name_convert 與?log_file_name_convert > 不設置
二、 設置效果
為方便理解,從庫以下面參數(shù)配置為例:
db_create_file_dest='/u01/erpuat/db/apps_st/data/'
db_file_name_convert='/u01/erpdev/db/apps_st/data/erpdev/datafile/','/u01/erpuat/db/apps_st/data/erpuat/datafile/','/u01/erpdev/db/apps_st_02/data/erpdev/datafile/','/u01/erpuat/db/apps_st_02/data/erpuat/datafile/'
log_file_name_convert ='/oracle/fra/erpdev/onlinelog','/oracle/fra/erpuat/onlinelog','/u01/erpdev/db/apps_st/data/erpdev/onlinelog','/u01/erpuat/db/apps_st/data/erpuat/onlinelog'
1. 設置db_create_file_dest
? ? ? ?無論是否設置convert參數(shù),數(shù)據(jù)文件、redo文件均放在db_create_file_dest目錄下(會自動創(chuàng)建子目錄)。如果主庫數(shù)據(jù)文件分在多個目錄,從庫會合并放在該目錄,但要特別注意空間問題。
數(shù)據(jù)文件、redo文件:/u01/erpuat/db/apps_st/data/
2. 僅設置db_file_name_convert
數(shù)據(jù)文件按指定路徑替換,redo文件按照主庫目錄。如果有不存在的,會遇到報錯。
數(shù)據(jù)文件:/u01/erpuat/db/apps_st/data/erpuat/datafile/ 與?/u01/erpuat/db/apps_st_02/data/erpuat/datafile/
redo文件:/oracle/fra/erpdev/onlinelog 與?/u01/erpdev/db/apps_st/data/erpdev/onlinelog
目錄不存在報錯如下
注意它沒有直接報目錄不存在,但寫出了報錯的數(shù)據(jù)文件路徑,可以自己在從庫檢查。
input datafile file number=00003 name=/u01/erpdev/db/apps_st/data/erpdev/datafile/o1_mf_test_da_os0rabc9_.dbf
RMAN-03009: failure of backup command on c8 channel at 08/18/2023 15:20:40
ORA-17628: Oracle error 19505 returned by remote Oracle server
continuing other job steps, job failed will not be re-run
3.?僅設置log_file_name_convert
redo文件按指定路徑替換,數(shù)據(jù)文件按照主庫目錄。如果有不存在的,會遇到報錯。
數(shù)據(jù)文件:/u01/erpdev/db/apps_st/data/erpdev/datafile/ 與?/u01/erpdev/db/apps_st_02/data/erpdev/datafile/
redo文件:/oracle/fra/erpuat/onlinelog 與?/u01/erpuat/db/apps_st/data/erpuat/onlinelog
目錄不存在報錯如下
這個倒是直接報目錄不存在,但它是在所有數(shù)據(jù)文件復制完成后,重建控制文件時報的。如果數(shù)據(jù)量很大,會經(jīng)過漫長等待之后卡在這步報錯然后要重來,尷尬...
RMAN-06136: ORACLE error from auxiliary database: ORA-01503: CREATE CONTROLFILE failed
ORA-00349: failure obtaining block size for '/oracle/fra/erpdev/onlinelog/o1_mf_1_k5abdh25_.log'ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9
4.?db_file_name_convert和log_file_name_convert都設置
數(shù)據(jù)文件、redo文件都按指定路徑替換。如果有不存在的,會遇到報錯。
數(shù)據(jù)文件:/u01/erpuat/db/apps_st/data/erpuat/datafile/ 與?/u01/erpuat/db/apps_st_02/data/erpuat/datafile/
redo文件:/oracle/fra/erpuat/onlinelog 與?/u01/erpuat/db/apps_st/data/erpuat/onlinelog
5.?db_file_name_convert和log_file_name_convert都不設置
數(shù)據(jù)文件、redo文件都按照主庫目錄。如果有不存在的,會遇到報錯。
數(shù)據(jù)文件:/u01/erpdev/db/apps_st/data/erpdev/datafile/ 與?/u01/erpdev/db/apps_st_02/data/erpdev/datafile/
redo文件:/oracle/fra/erpdev/onlinelog 與?/u01/erpdev/db/apps_st/data/erpdev/onlinelog
6. 特別注意,未設子目錄的效果
兩個convert參數(shù)效果都是一樣的,這里以?db_file_name_convert 為例。
假如目錄結(jié)構(gòu)是這樣的
- 主庫:/u01/erpdev/db/apps_st/data/erpdev/datafile/
- 從庫:/u01/erpuat/db/apps_st/data/erpuat/datafile/
但我是這么設置的(只寫到了data目錄那級)
db_file_name_convert='/u01/erpdev/db/apps_st/data/','/u01/erpuat/db/apps_st/data/'
同步的時候會不會報錯?
? ? ? ?答案是會的,因為轉(zhuǎn)換后從庫找的是?/u01/erpuat/db/apps_st/data/erpdev/datafile/,由于子目錄沒有設置轉(zhuǎn)換,它還是會按照原來的erpdev。而從庫實際是沒有這個目錄的,因此會遇到報錯。
參考
DATAGUARD中db_file_name_convert和db_create_file_dest_51CTO博客_dataguard_status
https://www.cnblogs.com/xqzt/p/5089826.html
Multiple Standby Databases Dataguard Oracle - EasyOraDBA
RMAN Duplicate failing with RMAN-06136, ORA-01503, ORA-00349 (Doc ID 2206423.1)