sql >> Databáze >  >> RDS >> Oracle

ORA-01111 v MRP v databázi fyzického pohotovostního režimu

Před časem selhalo MRP v pohotovostní databázi s  ORA-01111 s následující podrobnou  chybou v protokolu výstrah

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'

Důvod pro ORA-01111

Tato chyba ORA-01111 nastane, pokud přidáme datový soubor NEBO tabulkový prostor do PRIMÁRNÍ databáze, který nelze přeložit do pohotovostní databáze z těchto důvodů:

  • Správa Standy_file_management je nastavena na MANUAL
  • Primární a fyzický pohotovostní režim mají různé struktury souborů a DB_FILE_NAME_CONVERT není nastaven podle adresářových struktur v primárním a pohotovostním režimu
  • Nedostatek místa nebo nesprávná oprávnění v pohotovostní databázi k vytvoření datového souboru

Redo Log vygenerovaný z Primárního bude mít přidané informace o tabulkovém prostoru / datovém souboru, ale nemohlo být úspěšně vytvořeno ve fyzické pohotovostní databázi kvůli standby_file_management =MANUAL
nebo není schopen najít zadanou složku kvůli chybějícímu / nesprávná konverze názvu souboru. Položka souboru je přidána do Standby Controlfile jako „UNNAMED0000n“ ve složce /dbs nebo /database v závislosti na operačním systému a nakonec MRP skončí.

Řešení ORA-01111

Proveďte všechny uvedené kroky v pohotovostní databázi:

Krok 1: Ujistěte se, že standby_file_management =‚MANUAL‘

POZNÁMKA:Pro změnu parametru db_file_name_convert, pokud je povolen Data Guard Broker, upravte parametry pomocí Broker,

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

Standardně je StandbyFileManagement nastaveno na AUTO by broker.

Krok 2: Identifikujte soubor, který je „nepojmenovaný“

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

Krok 3: Přejmenujte/vytvořte datový soubor na správný název souboru

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;

Krok 4: Ověřte správnost názvu souboru

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


Krok 5: Změňte STANDBY_FILE_MANAGEMENT na AUTO

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


Krok 6: Spusťte MRP (používá se Real Time Apply)

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

Krok 7: Ověřte, že MRP běží podle očekávání

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

Krok 8: Ujistěte se, že jste opravili chybu, která způsobila selhání vytvoření souboru.

Musíme zajistit správnost parametrů STANDBY_FILE_MANAGEMENT a DB_FILE_CONVERT

Také čte
ORA-03113:konec souboru na komunikačním kanálu
ORA-00257:chyba archivátoru. Připojte pouze interní, dokud se neuvolní.
fyzická pohotovostní databáze
https://support.oracle.com/knowledge/Oracle%20Database%20Products/1416554_1.html


  1. Jak zálohujete a obnovujete databázi jako kopii na stejném serveru?

  2. Prevence útoků SQL Injection pomocí Pythonu

  3. Jak nastavit časový limit příkazu pro provedení dotazu

  4. 3 způsoby, jak vrátit časové pásmo z hodnoty Datetime v Oracle