创建一个新的空的数据文件来代替老的使用的数据文件,来创建没有备份的数据文件,前提是数据库开启归档模式且保留数据文件创建以来的可用的归档日志
这种通常用在数据文件损坏,但是没有备份(数据文件)的情况下,但是有归档日志,可以通过归档日志来恢复数据文件!也就是说产生一个新的,这个适合数据文件所在的磁盘损坏,不能恢复到原来的目录,而在其他路径下产生一个新的数据文件。
当然也适用于由于 ADG 备库参数错误导致主库新加的数据文件无法同步至备库的情况。
案 例:
备库由于参数 db_create_file_dest 指定错误导致不同步。
在主库新添加的数据文件由于此参数问题无法同步到备库,导致备库不同步。
控制文件中存在但实际不存在新加的数据文件。

生产环境实际为 +JIEKEXu_DATA 但由于此磁盘组当时新建时使用添加删除磁盘的方式将其 +DATA 磁盘组中的数据迁移到 ‘+JIEKEXu_DATA’ 下,但参数中还未修改,导致后期主库添加的数据文件均没有同步到备库中。

/app/product/11.2.0/db/dbs 目录下也并没有实际生成 UNNAME 相关数据文件,只是记录在控制文件中。

那么,首先修改参数 db_create_file_dest 为正确的磁盘组,然后使用 “alter database create datafile …… as …… size ……” 命令修改数据文件路径为正确的磁盘组即可。
前提是备库的归档日志还保留着,修改完参数然后便可以自动同步剩下的数据文件了。

如下是当时的步骤,特此记录一下。
alter system set db_create_file_dest='+JIEKEXU_DATA' scope=both sid='*';
alter system set standby_file_management=manual scope=memory;
alter database create datafile '/app/product/11.2.0/db/dbs/UNNAMED01357' as '+JIEKEXU_DATA' size 32212254720;
alter database recover managed standby database using current logfile disconnect;
alter system set standby_file_management=auto scope=memory;
SQL> select file_name,file_id,bytes from dba_data_files where file_id=1357;
FILE_NAME
--------------------------------------------------------------------------------
FILE_ID BYTES
---------- ----------
+JIEKEXU_DATA/prod/datafile/mmrpto.1735.1067271281
1357 3.2212E+10
SQL> alter system set standby_file_management=manual scope=memory;
System altered.
SQL> alter database create datafile '/app/product/11.2.0/db/dbs/UNNAMED01358' as '+JIEKEXU_DATA' size 32212254720;
Database altered.
SQL> alter database recover managed standby database using current logfile disconnect;
Database altered.
SQL> alter system set standby_file_management=auto scope=memory;
System altered.
SQL> select file_name,file_id,bytes from dba_data_files where file_id=1358;
FILE_NAME
--------------------------------------------------------------------------------
FILE_ID BYTES
---------- ----------
+JIEKEXU_DATA/prod/datafile/mmrpto.1736.1067271807
1358 3.2212E+10
SQL> select name,file# from v$datafile where file#=1358;
NAME
--------------------------------------------------------------------------------
FILE#
----------
+JIEKEXU_DATA/prod/datafile/mmrpto.1736.1067271807
1358
以上,特此记录之。
————————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
腾讯云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————





