您好,登錄后才能下訂單哦!
小編給大家分享一下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怎么辦”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。