主库是RAC环境,使用asm存放数据文件,备库是操作系统本地文件系统存放数据文件。
在主库执行以下操作:
SQL> alter tablespace ysdv add datafile '+data' size 1024m autoextend on next 100m maxsize 10240m;
备库的alert日志报以下错误:
Mon Jul 31 13:00:59 2017 Errors in file /d01/app/oracle/diag/rdbms/dvstby/dvstby/trace/dvstby_pr00_3809.trc: ORA-01119: error in creating database file '+DATA' ORA-17502: ksfdcre:4 Failed to create file +DATA ORA-15001: diskgroup "DATA" does not exist or is not mounted ORA-15077: could not locate ASM instance serving a required diskgroup ORA-29701: unable to connect to Cluster Synchronization Service File #7 added to control file as 'UNNAMED00007'. Originally created as: '+DATA/dv/datafile/dv.328.950783567' Recovery was unable to create the file as a new OMF file. Errors with log /d01/app/oracle/arch/2_1729_930568019.dbf MRP0: Background Media Recovery terminated with error 1274 Errors in file /d01/app/oracle/diag/rdbms/dvstby/dvstby/trace/dvstby_pr00_3809.trc: ORA-01274: cannot add datafile '+DATA/dv/datafile/dv.328.950783567' - file could not be created Mon Jul 31 13:02:12 2017 Recovery interrupted! Recovery stopped due to failure in applying recovery marker (opcode 17.30). Datafiles are recovered to a consistent state at change 172502737 but controlfile could be ahead of datafiles. Mon Jul 31 13:02:13 2017 MRP0: Background Media Recovery process shutdown (dvstby)
查看备库参数设置:
SQL> show parameter convert NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_file_name_convert string +DATA/dv/DATAFILE/, /d01/app /oracle/oradata/dvstby/dataf ile/, +DATA/dv/TEMPFILE/, /s 01/app/oracle/oradata/dvstby /tempfile/ log_file_name_convert string +DATA/dv/ONLINELOG/, /d01/ap p/oracle/oradata/dvstby/onli nelog/ SQL> show parameter standby_file_management NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ standby_file_management string AUTO SQL>
原因是主备库的文件路径不一样,备库在自动转换文件名称时失败。
修改方案:
1.将stndby_file_management设置为manual
SQL> show parameter standby_file_management NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ standby_file_management string AUTO SQL> alter system set standby_file_management='MANUAL';
2.找出unname的数据文件
SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- /d01/app/oracle/oradata/dvstby/datafile/system.293.930567941 /d01/app/oracle/oradata/dvstby/datafile/sysaux.294.930567941 /d01/app/oracle/oradata/dvstby/datafile/undotbs1.323.937148625 /d01/app/oracle/oradata/dvstby/datafile/users.296.930567941 /d01/app/oracle/oradata/dvstby/datafile/undotbs2.324.937148779 /d01/app/oracle/oradata/dvstby/datafile/dv.306.930571875 /d01/app/oracle/dvuct/11.2.0/dbhome_1/dbs/UNNAMED00007 /d01/app/oracle/oradata/dvstby/datafile/dv.325.931996247 /d01/app/oracle/oradata/dvstby/datafile/dv.326.931996261 /d01/app/oracle/oradata/dvstby/datafile/dv.327.931996267 10 rows selected.
3.重命名/重建数据文件,指定正确的名称
SQL> alter database create datafile '/d01/app/oracle/dvuct/11.2.0/dbhome_1/dbs/UNNAMED00007' as '/d01/app/oracle/oradata/dvstby/datafile/dv.328.950783567';
4.再次查看
SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- /d01/app/oracle/oradata/dvstby/datafile/system.293.930567941 /d01/app/oracle/oradata/dvstby/datafile/sysaux.294.930567941 /d01/app/oracle/oradata/dvstby/datafile/undotbs1.323.937148625 /d01/app/oracle/oradata/dvstby/datafile/users.296.930567941 /d01/app/oracle/oradata/dvstby/datafile/undotbs2.324.937148779 /d01/app/oracle/oradata/dvstby/datafile/dv.306.930571875 /d01/app/oracle/oradata/dvstby/datafile/dv.328.950783567 /d01/app/oracle/oradata/dvstby/datafile/dv.325.931996247 /d01/app/oracle/oradata/dvstby/datafile/dv.326.931996261 /d01/app/oracle/oradata/dvstby/datafile/dv.327.931996267 10 rows selected.
5.将stndby_file_management设置为auto
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO scope=both;
6.开启mrp
SQL> alter database recover managed standby database using current logfile disconnect;
7.验证mrp已经启动
SQL> select process, status , sequence# from v$managed_standby; PROCESS STATUS SEQUENCE# --------- ------------ ---------- ARCH CLOSING 3231 ARCH CONNECTED 0 ARCH CLOSING 1791 ARCH CLOSING 3232 ARCH CLOSING 1792 MRP0 APPLYING_LOG 3166 RFS IDLE 0 RFS IDLE 0 RFS IDLE 0 RFS IDLE 0 RFS IDLE 1793 RFS IDLE 0 RFS IDLE 0 RFS IDLE 3233 14 rows selected. SQL>