sql >> Databasteknik >  >> RDS >> Oracle

ORA-01111 i MRP i fysisk standby-databas

För en tid sedan misslyckades  MRP i standby-databasen med  ORA-01111 med följande detaljerade  fel i varningsloggen

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'

Orsak till ORA-01111

Det här felet ORA-01111 uppstår om vi lägger till en datafil ELLER tabellutrymme i PRIMÄR databas och som inte kunde översättas till standbydatabasen på grund av dessa skäl:

  • Standy_file_management är inställt på MANUAL
  • Primärt och fysiskt vänteläge har olika filstrukturer och DB_FILE_NAME_CONVERT är inte inställt enligt katalogstrukturerna i primär och vänteläge
  • Otillräckligt utrymme eller felaktiga behörigheter i standbydatabasen för att skapa datafilen

Redo-loggen som genereras från Primär kommer att ha information om tabellutrymmet/datafilen tillagd, men den kunde inte skapas framgångsrikt i Physical Standby Database på grund av standby_file_management =MANUAL
eller kan inte hitta den angivna mappen på grund av en saknad / felaktig filnamnskonvertering. Filposten läggs till i Standby Controlfile som "UNNAMED0000n" i /dbs eller /databasmappen beror på operativsystemet och så småningom avslutas MRP.

Lösning för ORA-01111

Utför alla nämnda steg i Standby-databasen:

Steg 1: Se till att standby_file_management ='MANUELL'

OBS:För parametern db_file_name_convert ändra om Data Guard Broker är aktiverad och redigera parametrarna med hjälp av Broker,

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

Som standard är StandbyFileManagement AUTO av mäklare.

Steg 2: Identifiera filen som är "unnamedn"

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

Steg 3: Byt namn på/skapa datafilen till korrekt filnamn

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;

Steg 4: Kontrollera att filnamnet är korrekt

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


Steg 5: Ändra STANDBY_FILE_MANAGEMENT till AUTO

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


Steg 6: Starta MRP (detta använder Real Time Apply)

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

Steg 7: Kontrollera att MRP körs som förväntat

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

Steg 8: Se till att du korrigerade felet som orsakade misslyckande med att skapa filen.

Vi måste se till att parametern STANDBY_FILE_MANAGEMENT och DB_FILE_CONVERT är korrekta

Läser också
ORA-03113:slutet av filen på kommunikationskanalen
ORA-00257:arkiveringsfel. Anslut endast internt, tills det frigörs.
fysisk standby-databas
https://support.oracle.com/knowledge/Oracle%20Database%20Products/1416554_1.html


  1. Ansluter till SQL Server 2012 med sqlalchemy och pyodbc

  2. SQL aritmetiska operatörer

  3. Hur man infogar en sträng i en annan sträng i SQL Server med STUFF()

  4. Generera DEFAULT-värden i en CTE UPSERT med PostgreSQL 9.3