今天有套DG环境主库在添加表空间的时候,备库报错

 

Fri Sep 23 19:03:13 2011

File #10 added to control file as 'UNNAMED00010' 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

Fri Sep 23 19:03:13 2011

Errors in file /u01/oracle/admin/dict/bdump/dict_mrp0_17853.trc:

ORA-01274: cannot add datafile '/u01/oracle/oradata/dict/tbs_dict_dat0010.dbf' - file could not be created

Managed Standby Recovery not using Real Time Apply

Some recovered datafiles maybe left media fuzzy

Media recovery may continue but open resetlogs may fail

Fri Sep 23 19:03:16 2011

Errors in file /u01/oracle/admin/dict/bdump/dict_mrp0_17853.trc:

ORA-01274: cannot add datafile '/u01/oracle/oradata/dict/tbs_dict_dat0010.dbf' - file could not be created


看了一下参数,不知道什么原因,STANDBY_FILE_MANAGEMENT被设置成MANAUAL.当然有可能这套环境当初在搭建时就是这么设的

SQL> show parameter standby_file_management

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

standby_file_management              string     MANAUAL

这种情况下只能手动添加对应的数据文件

SQL> select file#,name from v$datafile;

找到异常的datafile name为

 

 

/u01/oracle/oradata/dict/tbs_UNNAMED0010

 

 

并去主库查询对应file#所对应的name为

 

 

/u01/oracle/oradata/dict/tbs_dict_dat0010.dbf

 

 

然后备库执行

alter database create datafile as重建数据文件

之后设置standby_file_management为AUTO

SQL>alter system set standby_file_management = auto ;

PS:

 

 

对于物理的standby db而言,如果在参数文件中配置了standby_file_management=auto 那么一些操作也会出现错误如:

alter database rename
alter database add/drop logfile
alter database add/drop standby logfile member
alter database create datafile as
 将会出现如下错误
ERROR at line 1:
ORA-01511: error in renaming log/datafiles
ORA-01270: RENAME operation is not allowed if STANDBY_FILE_MANAGEMENT is auto

standby_file_management=auto,则在primary db 创建的数据文件也会自动地在standby db中创建。如果配置standby_file_management为mananul,则如果在主库中创建数据文件,必须手动地将该数据文件拷贝到standby db.

如果从另外一个数据库拷贝了一个数据文件到主库,那么无论standby_file_management配置为auto还是mananul,都必须copy该数据文件到standby db 并且重新创建standby db 的控制文件。(相同目录结构与不同目录结构下的创建方式不同)

配置standby_file_management=auto,创建数据文件或者新的表空间的时候,如果数据库使用的是文件系统,那么不需要任何人为的干预,但是如果使用的是raw device,则必须先在primary db 和standby db上创建裸设备。当删除数据文件的时候,先确认standby db 正常工作,查询v$datafile确认数据字典中数据文件已经顺利删除,最好先删除standby db的数据文件,然后删除primary db的数据文件。

如果在primary db中重命名数据文件,那么这个操作将不会反应到standby db 中。正确的步骤是

1  alter tablespace/datafile offline; 

2  使用操作系统命令来拷贝

3  alter databaser rename datafile '....' to '...' 

4  确认STANDBY DB中所有归档已经apply,

5  alter database recover managed standby database cancel停止redo apply 

6  shutdown standby db 

7  拷贝并重命名数据文件 

8 startup mount (standby database)

9  alter database rename file '...' to '....';

10  alter databas recover managed standby database disconnect from session. 

11  alter tablespace/datafile online;

如果在在主库中创建或者删除在线日志组。可以不管standby db,然而,为了switch over的方便,最好还是primary db中的动作在standby db中作相应的改变