Oracle 在添加一个数据文件后后台媒体恢复中止显示ORA-1274

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected].

 

ORA-01274

oerr ora 1274
01274, 0000, "cannot add datafile '%s' - file could not be created"
// *Cause: Automated standby file management was disabled, so an added file
// could not automatically be created on the standby.
// The error from the creation attempt is displayed in another message.
// The control file file entry for the file is 'UNNAMEDnnnnn'.
// *Action: Use the ALTER DATABASE CREATE DATAFILE statement to create the
// file, or set STANDBY_FILE_MANAGEMENT to AUTO and restart
// standby recovery.



适用于:

Oracle Database – Enterprise Edition – 版本 9.2.0.1 到 12.1.0.1 [Release 9.2 到 12.1]
本文信息适用于任何平台。
*** 26-Sep-2012检查相关性***
*** 8-Jul-2015检查相关性***

症状

在主数据库中添加一个表空间/数据文件导致物理备用数据库中的MRP中止显示以下错误。备用数据库中设置了STANDBY_FILE_MANAGEMENT = MANUAL 。

MRP0: Background Media Recovery terminated with error 1274
ORA-01274: cannot add datafile ‘…dbf’ – file could not be created
在Unix 环境中,当尝试重启MRP时你会得到以下信息
ORA-01111: name for data file 163 is unknown – rename to correct file

最佳实践,

 

保持STANDBY_FILE_MANAGEMENT 处于 AUTO。

原因
如果我们在主数据库中添加一个数据文件或表空间,其由于以下原因无法被转换为备用数据库时,该错误会发生:

  • Standy_file_management被设为MANUAL
  • 主&物理备用有不同的文件结构且根据Primary 和Standby 中的目录结构DB_FILE_NAME_CONVERT未被设置
  • 在创建数据文件的备用数据库上空间不足或错误权限

从Primary 生成的重做日志会有关于被添加的表空间/数据文件的信息,但是由于standby_file_management = MANUAL 它无法被成功创建,或由于丢失/错误的文件名转换无法找到指定的文件夹。
文件条目被添加到备用控制文件作为”UNNAMED0000n” ,在/dbs 或/database 文件夹取决于操作系统,且最终MRP 中止。

在Standby中的警报日志显示MRP 被终止,显示以下错误
=================================================================
File #5 added to control file as ‘UNNAMED00005’ because
the parameter STANDBY_FILE_MANAGEMENT is set to MANUAL
The file should be manually created to continue.
MRP0: Background Media Recovery terminated with error 1274
Thu Sep 25 19:02:35 2008
Errors in file c:\oracle\product\10.2.0\admin\mystd\bdump\mystd_mrp0_3436.trc:
ORA-01274: cannot add datafile ‘D:\ORADATA\PRIM\SALES01.DBF’ – file could not be created

默认下,它是AUTO by broker。

解决方案

在备用数据库上执行所有提到的步骤:

步骤1:确保standby_file_management = ‘MANUAL’

注 : 对于参数db_file_name_convert 的更改,如果Data Guard Broker被启用,则使用Broker编辑参数,

DGMGRL>edit database ‘<standby>’ set property DbFileNameConvert='<>’,'<>’;
DGMGRL>edit database ‘<standby>’ set property StandbyFileManagement=manual;
默认下StandbyFileManagement is AUTO by broker。

步骤 2: 识别”unnamedn”的文件

SQL> select name from v$datafile;
NAME
——————————————————————————–
D:\ORADATA\MYSTD\SYSTEM.DBF
D:\ORADATA\MYSTD\UNDO.DBF
D:\ORADATA\MYSTD\SYSAUX.DBF
D:\ORADATA\MYSTD\SERVICE01.DBF
C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00005

步骤3:重命名/创建数据文件为正确的文件名

SQL> alter database create datafile ‘C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00005’ as ‘D:\oradata\mystd\sales01.dbf’;
如果standby 处于ASM + OMF 则使用以下命令,

SQL> alter database create datafile ‘/oracle/product/GSIPRDGB/dbs/UNNAMED00210’ as <‘+ASMDISKGROUPNAME’> size <specify the size of datafile>;

SQL>alter database create datafile ‘/oracle/product/GSIPRDGB/dbs/UNNAMED00210’ as new;

步骤4: 验证文件名为正确

SQL> select name from v$datafile;
NAME
——————————————————————————–
D:\ORADATA\MYSTD\SYSTEM.DBF
D:\ORADATA\MYSTD\UNDO.DBF
D:\ORADATA\MYSTD\SYSAUX.DBF
D:\ORADATA\MYSTD\SERVICE01.DBF
D:\ORADATA\MYSTD\SALES01.DBF

步骤5:更改STANDBY_FILE_MANAGEMENT为AUTO

SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO scope=both;

步骤6:启动MRP (这使用Real Time Apply)

SQL> alter database recover managed standby database using current logfile disconnect;

Database altered.

步骤7: 验证MRP如预期运行

SQL> select process, status , sequence# from v$managed_standby;

 PROCESS STATUS SEQUENCE# 
 --------- ------------ ---------- 
 ARCH CLOSING 99 
 ARCH CLOSING 103 
 MRP0 APPLYING_LOG 104 
 RFS IDLE 0 
 RFS IDLE 0 
 RFS IDLE 104

Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *