oracle dg库数据文件创建失败ORA-01111

来源:这里教程网 时间:2026-03-03 12:10:16 作者:

具体报错如下 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数据库,如果主库更换了数据文件的目录,需要从新配置从库的db_file_name_convert参数,否则,备库会无法创建相应的数据文件的。

相关推荐