Case 1 - STANDBY_FILE_MANAGEMENT set to MANUAL at standby database
In this case, an UNNAMED file will be created at $ORACLE_HOME/dbs, we need to issue 'ALTER DATABASE CREATE DATAFILE AS' to fix it.
(1) At primary:
alter tablespace dbaets_data add datafile '/db2/u01/oradata/ettdb/dbaets_data_02.dbf' size 500M;
(2) At standby, query v$datafile
NAME SIZE_M
------------------------------------------------- -------
/db2st2/u01/oradata/etsdb/system01.dbf 500
/db2st2/u01/oradata/etsdb/sysaux01.dbf 2048
/db2st2/u01/oradata/etsdb/undotbs01.dbf 271
/db2st2/u01/oradata/etsdb/users01.dbf 500
/db2st2/u01/oradata/etsdb/xdb01.dbf 1024
/db2st2/u01/oradata/etsdb/dbaets_data_01.dbf 500
/apps/opt/oracle/product/11.2.0/dbs/UNNAMED00007 0
(3) At standby, issue 'ALTER DATABAE CREATE DATAFILE AS'
ALTER DATABASE CREATE DATAFILE '/apps/opt/oracle/product/11.2.0/dbs/UNNAMED00007' AS '/db2st2/u01/oradata/etsdb/dbaets_data_02.dbf';
(4) At standby, query v$datafile again:
NAME SIZE_M
-------------------------------------------------- ----------
/db2st2/u01/oradata/etsdb/system01.dbf 500
/db2st2/u01/oradata/etsdb/sysaux01.dbf 2048
/db2st2/u01/oradata/etsdb/undotbs01.dbf 271
/db2st2/u01/oradata/etsdb/users01.dbf 500
/db2st2/u01/oradata/etsdb/xdb01.dbf 1024
/db2st2/u01/oradata/etsdb/dbaets_data_01.dbf 500
/db2st2/u01/oradata/etsdb/dbaets_data_02.dbf 500
Case 2 - STANDBY_FILE_MANAGEMENT set to AUTO, but file cannot be created due to other error
At standby, initially I have DB_FILE_NAMEC_CONVERT set as folllow:
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_file_name_convert string /db2st2/u01/oradata/etsdb, /db 2/u01/oradata/ettdbThis is not in the correct order as at standby site the path is '/db2st2/u01/oradata/etsdb' whereas '/db2/u01' does not exist.
At primary, I added another datafile:
ops$oracle@ETSDB> alter tablespace dbaets_data add datafile '/db2/u01/oradata/ettdb/dbaets_data_03.dbf' size 100M; Tablespace altered.In the alert log file of the standby database, it can be seen the file is not created and managed recovery process (MRP0) is terminated:
Media Recovery Log /db2st2/arch/1_1115_790089239.dbf WARNING: File being created with same name as in Primary Existing file may be overwritten Errors in file /apps/opt/oracle/admin/etsdb/diag/rdbms/etsdb/etsdb/trace/etsdb_pr00_8554.trc: ORA-01119: error in creating database file '/db2/u01/oradata/ettdb/dbaets_data_03.dbf' ORA-27054: NFS file system where the file is created or resides is not mounted with correct options SVR4 Error: 13: Permission denied File #8 added to control file as 'UNNAMED00008'. Originally created as: '/db2/u01/oradata/ettdb/dbaets_data_03.dbf' Recovery was unable to create the file as: '/db2/u01/oradata/ettdb/dbaets_data_03.dbf' MRP0: Background Media Recovery terminated with error 1274 Errors in file /apps/opt/oracle/admin/etsdb/diag/rdbms/etsdb/etsdb/trace/etsdb_pr00_8554.trc: ORA-01274: cannot add datafile '/db2/u01/oradata/ettdb/dbaets_data_03.dbf' - file could not be created Managed Standby Recovery not using Real Time Apply Recovery interrupted! Recovery stopped due to failure in applying recovery marker (opcode 17.30). Datafiles are recovered to a consistent state at change 12910838021570 but controlfile could be ahead of datafiles.
I reset the the db_file_name_covert to be '/db2/u01/oradata/ettdb','/db2st2/u01/oradata/etsdb' and restarted the MRP0, in the alert log I saw:
MRP0: Background Managed Standby Recovery process started (etsdb) started logmerger process Tue Apr 08 16:43:35 2014 Managed Standby Recovery starting Real Time Apply MRP0: Background Media Recovery terminated with error 1111 Errors in file /apps/opt/oracle/admin/etsdb/diag/rdbms/etsdb/etsdb/trace/etsdb_pr00_10330.trc: ORA-01111: name for data file 8 is unknown - rename to correct file ORA-01110: data file 8: '/apps/opt/oracle/product/11.2.0/dbs/UNNAMED00008' ORA-01157: cannot identify/lock data file 8 - see DBWR trace file ORA-01111: name for data file 8 is unknown - rename to correct file ORA-01110: data file 8: '/apps/opt/oracle/product/11.2.0/dbs/UNNAMED00008' Managed Standby Recovery not using Real Time Apply Recovery Slave PR00 previously exited with exception 1111 MRP0: Background Media Recovery process shutdown (etsdb) Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT
So an UNNAMED file is created at $ORACLE_HOME/dbs and MRP0 is stopped again. To fix:
SQL> alter system set standby_file_management=manual; System altered. SQL> alter database create datafile '/apps/opt/oracle/product/11.2.0/dbs/UNNAMED00008' as '/db2st2/u01/oradata/etsdb/dbaets_data_03.dbf'; Database altered. SQL> alter system set standby_file_management=auto; System altered.Case 3 STANDBY_FILE_MANAGEMENT set to AUTO and DB_FILE_NAME_CONVERT is correct
No issue as expected:
At primary:
ops$oracle@ETSDB> alter tablespace dbaets_data add datafile '/db2/u01/oradata/ettdb/dbaets_data_04.dbf' size 100M; Tablespace altered.
At standby, the alert log shows the datafile is added with the converted file name:
Tue Apr 08 16:56:22 2014
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT
Attempt to start background Managed Standby Recovery process (etsdb)
Tue Apr 08 16:56:22 2014
MRP0 started with pid=33, OS id=12229
MRP0: Background Managed Standby Recovery process started (etsdb)
started logmerger process
Tue Apr 08 16:56:27 2014
Managed Standby Recovery starting Real Time Apply
Parallel Media Recovery started with 4 slaves
Waiting for all non-current ORLs to be archived...
All non-current ORLs have been archived.
Media Recovery Log /db2st2/arch/1_1115_790089239.dbf
Media Recovery Log /db2st2/arch/1_1116_790089239.dbf
Media Recovery Log /db2st2/arch/1_1117_790089239.dbf
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT
Recovery created file /db2st2/u01/oradata/etsdb/dbaets_data_04.dbf
Successfully added datafile 9 to media recovery
Datafile #9: '/db2st2/u01/oradata/etsdb/dbaets_data_04.dbf'
Note: The testing dataguard environment is the same as the one that is described in the previous post. However, I did a switchover, so in today's testing, ettdb is primary and etsdb is standby.
No comments:
Post a Comment