"ORA-03113: fine del file sul canale di comunicazione" all'avvio


22

Ho letto i post qui, sul supporto Oracle e in qualsiasi altro luogo che posso trovare negli ultimi tre giorni e ho rinunciato a questo problema ...

Un database Oracle bloccato. L'arresto del database è rimasto sospeso per alcune ore e poi si è chiuso. Non si riavvierebbe. Il server è stato riavviato. Oracle è stato riavviato. Andando passo dopo passo: l'avvio non funziona, altera il montaggio del database, cambia il database aperto restituisce ORA-03113. Questo è tutto su localhost, non sulla rete. La macchina non ha firewall di alcun tipo in esecuzione.

Hai idea di come superare questo errore ORA-03113? Sono stato al telefono con supporto in India nelle ultime 4,5 ore e non ho ancora trovato nessuno utile.


1
Pubblica estratto dal registro degli avvisi con ALTER DATABASE OPENe dopo gli errori.
Mindaugas Riauba,

1
Cerca (grep) tutti i registri degli avvisi tra l'ultimo avvio riuscito e l'attuale avvio non riuscito e cerca ALTER SYSTEM SET per tutto questo periodo di tempo. Forse qualcuno ha cambiato alcuni parametri dell'istanza in un modo non standard.
kubanczyk,

Risposte:


35

Dopo ore di errata direzione dal supporto ufficiale Oracle, mi sono immerso in questo da solo e l'ho risolto. Lo sto documentando qui nel caso in cui qualcun altro abbia questo problema.

Per fare ciò, devi essere l'utente di Oracle:

$ su - oracle

Passaggio 1: è necessario esaminare il registro degli avvisi. Non è in / var / log come previsto. Devi eseguire un programma di lettura log Oracle:

$ adrci
ADRCI: Release 11.2.0.1.0 - Production on Wed Sep 11 18:27:56 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
ADR base = "/u01/app/oracle"
adrci>

Notare la base ADR. Questa non è l'installazione. Devi vedere le case in modo da poterti connettere a quella che usi.

adrci> show homes
ADR Homes:
diag/rdbms/cci/CCI
diag/tnslsnr/cci/listener
diag/tnslsnr/cci/start
diag/tnslsnr/cci/reload

CCI è la casa. Imposta quello.

adrci> set home diag/rdbms/cci/CCI
adrci>

Ora puoi guardare i log degli avvisi. Sarebbe molto bello se fossero in / var / log in modo da poter analizzare facilmente i registri. Basta smettere di volere e gestire questa interfaccia. Almeno puoi fare la coda (e spero che tu abbia un buffer di scrollback):

adrci> show alert -tail 100

Scorri indietro fino a visualizzare errori. Vuoi il PRIMO errore. Eventuali errori dopo il primo errore sono probabilmente causati dal primo errore. Nel mio caso, il primo errore è stato:

ORA-19815: WARNING: db_recovery_file_dest_size of 53687091200 bytes is 100.00% used, and has 0 remaining bytes available.

Ciò è causato dalle transazioni. Oracle non è progettato per essere utilizzato. Se si inseriscono molti dati, vengono salvati i registri delle transazioni. Quelli vanno nell'area del file di ripristino. Una volta che è pieno (50 GB pieno in questo caso). Quindi, Oracle muore. In base alla progettazione, se qualcosa è incasinato, Oracle risponderà spegnendo.

Esistono due soluzioni, quella corretta e quella rapida e sporca. Quello rapido e sporco è aumentare db_recovery_file_dest_size. Innanzitutto, esci da Adrci.

adrci> exit

Ora, vai su sqlplus senza aprire il database, semplicemente montandolo (potresti essere in grado di farlo senza montare il database, ma lo monto comunque).

$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 11 18:40:25 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> startup mount

Ora, puoi aumentare il tuo attuale db_recovery_file_dest_size, aumentato a 75G nel mio caso:

SQL> alter system set db_recovery_file_dest_size = 75G scope=both

Ora puoi chiudere e riavviare e l'errore precedente dovrebbe essere sparito.

La soluzione corretta è eliminare i file di ripristino. Puoi farlo usando RMAN, non SQLPLUS o ADRCI.

$ rman
Recovery Manager: Release 11.2.0.1.0 - Production on Wed Sep 11 18:45:11 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
RMAN> backup archivelog all delete input;

Se hai RMAN-06171: not connected to target database, prova a usare rman target /invece di solorman

Attendi molto tempo e il tuo archivio (che stava esaurendo tutto quello spazio) sparirà. Quindi, è possibile arrestare / avviare il database ed essere di nuovo in affari.


Non trovo il comando adrci nel mio server Oracle Oracle. Come posso installarlo? Grazie.

3
Grazie! Funziona. Ma il comando corretto per rman è: export ORACLE_SID=my_oracle//rman target /

Per aggiungere i miei 2 centesimi, puoi controllare questo articolo qui, che ha un comando che puoi usare con RMAN, al fine di cancellare l'area dell'archivio, così come alcune altre cose. Attenzione, poiché cancellerà anche i punti di ripristino se il DB è aperto per qualche motivo (l'ultimo bit): the1403.github.io/RMAN-cleanup-logs
g00dy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.