Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-01111 in MRP nel database Physical Standby

Qualche tempo fa,  MRP nel database di standby non è riuscito con  ORA-01111 con il seguente  errore dettagliato nel registro degli avvisi

Alert Log in Standby Shows MRP is terminated with below error
=================================================================
File #8 added to control file as 'UNNAMED00008' 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 1111
Thu Jan 08 11:02:35 2016
Errors in file /u01/oracle/product/11.2.0/diag/rdbms/TEST/test/trace/TEST_mrp0_6436.trc:
ORA-01111: name for data file 129 is unknown - rename to correct file
ORA-01111: name for data file 129 is unknown - rename to correct file
ORA-01110: data file 129: '/u01/oracle/product/11.2.0/dms/UNNAMED00008'

Motivo di ORA-01111

Questo errore ORA-01111 si verifica se aggiungiamo un file di dati OR Tablespace nel database PRIMARIO e che non è stato possibile tradurre nel database di standby a causa di questi motivi:

  • Standy_file_management è impostato su MANUAL
  • Primary &Physical Standby hanno strutture di file diverse e DB_FILE_NAME_CONVERT non è impostato secondo le strutture di directory in Primary e Standby
  • Spazio insufficiente o autorizzazioni errate sul database di standby per creare il file di dati

Il Redo Log generato da Primary avrà informazioni sul tablespace/file di dati aggiunti, tuttavia non è stato possibile crearlo correttamente nel database Physical Standby a causa di standby_file_management =MANUAL
o non è in grado di trovare la cartella specificata a causa di un / Conversione nome file errata. La voce del file viene aggiunta a Standby Controlfile come "UNNAMED0000n" nella cartella /dbs o /database dipende dal sistema operativo e alla fine l'MRP viene terminato.

Soluzione di ORA-01111

Esegui tutti i passaggi menzionati sul database di standby:

Passaggio 1: Assicurati che standby_file_management ='MANUALE'

NOTA :per il parametro db_file_name_convert, modifica se Data Guard Broker è abilitato, modifica i parametri utilizzando il Broker,

DGMGRL>edit database '<standby>' set property DbFileNameConvert='/u01','+DATA';
DGMGRL>edit database '<standby>' set property StandbyFileManagement=manual;

Per impostazione predefinita, StandbyFileManagement è AUTO per broker.

Passaggio 2: Identifica il file "senza nome"

SQL> select name from v$datafile;
NAME
---------------------------------------
+DATA/TEST/datafiles/SYSTEM.DBF
+DATA/TEST/datafiles/UNDO.DBF
+DATA/TEST/datafiles/SYSAUX.DBF
+DATA/TEST/datafiles/index1.DBF
/u01/oracle/product/11.2.0/dms/UNNAMED00008

Passaggio 3: Rinomina/crea il file di dati con il nome file corretto

SQL> alter database create datafile '/u01/oracle/product/11.2.0/dms/UNNAMED00008' as '+DATA/TEST/datafiles/appstex.dbf';
or
SQL>alter database create datafile '/u01/oracle/product/11.2.0/dms/UNNAMED00008' as new;

Passaggio 4: Verifica che il nome del file sia corretto

SQL> select name from v$datafile;
NAME
-------------------------------------------------
+DATA/TEST/datafiles/SYSTEM.DBF
+DATA/TEST/datafiles/UNDO.DBF
+DATA/TEST/datafiles/SYSAUX.DBF
+DATA/TEST/datafiles/index1.DBF
+DATA/TEST/datafiles/appstex.dbf


Passaggio 5: Cambia STANDBY_FILE_MANAGEMENT in AUTO

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


Passaggio 6: Avvia l'MRP (questo utilizza l'applicazione in tempo reale)

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

Passaggio 7: Verifica che l'MRP funzioni come previsto

SQL> select process, status , sequence# from v$managed_standby;
PROCESS STATUS SEQUENCE#
--------- ------------ ----------
ARCH CLOSING 1014
ARCH CLOSING 1013
MRP0 APPLYING_LOG 1001
RFS IDLE 0
RFS IDLE 0
RFS IDLE 1015

Passaggio 8: Assicurati di aver corretto l'errore che ha causato la mancata creazione del file.

Dobbiamo assicurarci che i parametri STANDBY_FILE_MANAGEMENT e DB_FILE_CONVERT siano corretti

Legge anche
ORA-03113:fine del file sul canale di comunicazione
ORA-00257:errore dell'archiviatore. Connetti solo internamente, fino a quando non viene liberato.
database di standby fisico
https://support.oracle.com/knowledge/Oracle%20Database%20Products/1416554_1.html