共計 4270 個字符,預計需要花費 11 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 oracle dg 庫數據文件創建失敗 ORA-01111 怎么辦,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
具體報錯如下
SQL alter database open read only ;
alter database open read only
*
ERROR at line 1:
ORA-10458: standby database requires recovery
ORA-01157: cannot identify/lock data file 24 – see DBWR trace file
ORA-01111: name for data file 24 is unknown – rename to correct file
ORA-01110: data file 24:
/data/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00024
剛剛在主庫添加了數據文件:
SQL alter tablespace MODEL_BH add datafile /data2/oradata/datafile/bapp/MODEL_BH010.dbf size 31g;
然后查看下發現 24 號數據文件就是剛才添加的那文件:
SQL set line 1000
SQL set pagesize 1000
SQL col name for a60
SQL col status for a20
SQL select FILE#,name from v$datafile where file#=24;
FILE# NAME
———- ————————————————————
24 /data2/oradata/datafile/bapp/MODEL_BH010.dbf
也就是說出庫的這個文件,沒有同步到從庫,突然想到,今天這個文件的目錄放到的一個新的掛載點上了 /data2(由于空間不足,新添加的掛在點 )。壞了因為從庫的 db_file_name_convert 文件沒有配置傳喚 /data2/oradata/datafile/bapp/ 的路徑,具體如下:
SQL show parameter convert
NAME TYPE VALUE
———————————— ———– ——————————
db_file_name_convert string /data/app/oracle/oradata/dataf
ile/bapp/, /data/u01/app/dataf
ile/
然后我搭建的 datagurd 一般都是把備庫的參數配置 STANDBY_FILE_MANAGEMENT 為 auto, 如下所示:
SQL show parameter STANDBY_FILE_MANAGEMENT;
NAME TYPE VALUE
———————————— ———– ——————————
standby_file_management string AUTO
1)STANDBY_FILE_MANAGEMENT=AUTO 的情況下,如果從庫的 db_file_name_convert 參數設置的正確了,那么主庫創建的數據文件在備份端應用日志時會自動創建,從庫會根據 convert 參數在備庫創建相對應的數據文件;
2)STANDBY_FILE_MANAGEMENT=AUTO 的情況下,但是如果主庫創建在其他路徑的數據文件,也就是說如果從庫的 db_file_name_convert 參數沒有正確設置(就像我前面的,主庫的 /data2 下的路徑沒有設置對應的轉換路徑,那么這時候從庫就會創建到 $ORACLE_HOME/dbs 下(注意只是控制文件中有這個以 UNNAMED 開頭命名的文件信息,但是不會真正的創建,同樣如果主庫是 drop,備庫也會 drop。
我的情況正是 STANDBY_FILE_MANAGEMENT=AUTO,然后從庫的 db_file_name_convert 參數沒有正確設置,
在從庫查看文件狀態為 recover 的,表示從庫沒有創建成功
SQL select file#,name ,status from v$datafile where status= RECOVER
FILE# NAME status
———- ——————————————————————————————————-
24 /data/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00024 RECOVER
下面展示修復過程:
1. 在從庫修改參數 db_file_name_convert;
如下所示,添加上 /data2/oradata/datafile/bapp/ 的轉換路徑
SQL show parameter convert
NAME TYPE VALUE
———————————— ———– ——————————
db_file_name_convert string /data/app/oracle/oradata/dataf
ile/bapp/, /data/u01/app/dataf
ile/, /data2/oradata/datafile/
bapp/, /data/u01/app/datafile/
2. 重啟從庫
SQL shu immediate
SQL startup mount
3. 修改從庫的參數 standby_file_management=manual
SQL alter system set standby_file_management= manual
System altered.
注釋:standby_file_management 為 manual,那么當主庫添加了文件,從庫需要手工創建上,并且如果 standby_file_management=auto,備庫是不允許手工創建文件的!!
4. 在備庫創建上那個文件,如下所示!!!
SQL alter database create datafile /data/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00024 as /data/u01/app/datafile/MODEL_BH010.dbf
此時再查看這個 24 號文件,發現名字已經變回來了
SQL select name ,file# from v$datafile where file#=24;
NAME
——————————————————————————–
FILE#
———-
/data/u01/app/datafile/MODEL_BH010.dbf
24
但是此時候查看依舊是 recover 的狀態:
SQL select file#,name ,status from v$datafile where status= RECOVER
FILE# NAME status
———- ——————————————————————————————————-
24 /data/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00024 RECOVER
需要打開 mrp 進程,應用日志,恢復下備庫!注意不要先 read only open!
alter database recover managed standby database using current logfile disconnect from session;
再次查看這個這個文件,發現已經不在是 recover 狀態了,為 online 的了,這時候才是真的恢復成功了!
SQL select name ,status from v$datafile where file#=24;
NAME STATUS
——————————————————————————–
/data/u01/app/datafile/MODEL_BH010.dbf
ONLINE
7. 以 read only 方式開啟數據庫
需要先關閉 mrp 進程,然后才能以 read only 方式打開數據,否則報錯!
SQL alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-10456: cannot open standby database; media recovery session may be in
progress
關閉 mrp 進程:
SQL ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
Database altered.
然后開啟數據庫
SQL alter database open read only;
Database altered.
再次開啟 mrp 進程
alter database recover managed standby database using current logfile disconnect from session;
8. 修改從庫的參數 standby_file_management=auto
SQL alter system set standby_file_management= auto
經驗證數據同步正常
9. 最后最好重啟下備庫!!!!然后別忘記啟動 mrp 進程!
看完了這篇文章,相信你對“oracle dg 庫數據文件創建失敗 ORA-01111 怎么辦”有了一定的了解,如果想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!