今天有套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中作相应的改变