«ORA-03113: fin de fichier sur le canal de communication» au démarrage


22

J'ai lu des articles ici, sur le support Oracle, et partout où je peux trouver ces trois derniers jours et j'ai abandonné ce problème ...

Une base de données Oracle s'est bloquée. L'arrêt de la base de données a duré quelques heures, puis il s'est arrêté. Cela ne redémarrerait pas. Le serveur a été redémarré. Oracle a été redémarré. Aller étape par étape: le démarrage nomount fonctionne, modifier la base de données fonctionne, modifier la base de données ouverte renvoie ORA-03113. Tout cela est sur localhost - pas sur le réseau. La machine n'a aucun pare-feu en cours d'exécution.

Une idée de comment surmonter cette erreur ORA-03113? Je suis au téléphone avec support en Inde depuis 4,5 heures et je n'ai encore trouvé personne utile.


1
Poster un extrait du journal des alertes avec ALTER DATABASE OPENet des erreurs après cela.
Mindaugas Riauba

1
Recherchez (grep) tous les journaux d'alertes entre le dernier démarrage réussi et le démarrage échoué actuel et recherchez ALTER SYSTEM SET pendant tout ce laps de temps. Peut-être que quelqu'un a changé un paramètre d'instance d'une manière non standard.
kubanczyk

Réponses:


35

Après des heures de mauvaise orientation du support officiel d'Oracle, je me suis plongé dans ce problème par moi-même et l'ai résolu. Je le documente ici au cas où quelqu'un d'autre aurait ce problème.

Pour ce faire, vous devez être l'utilisateur oracle:

$ su - oracle

Étape 1: vous devez consulter le journal des alertes. Ce n'est pas dans / var / log comme prévu. Vous devez exécuter un programme de lecture des journaux 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>

Remarquez la base ADR. Ce n'est pas l'installation. Vous devez voir les maisons pour pouvoir vous connecter à celle que vous utilisez.

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

CCI est la maison. Réglez ça.

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

Maintenant, vous pouvez consulter les journaux d'alertes. Ce serait très bien s'ils étaient dans / var / log afin que vous puissiez facilement analyser les journaux. Arrêtez de vouloir et traitez cette interface. Au moins, vous pouvez suivre (et j'espère que vous avez un tampon de défilement):

adrci> show alert -tail 100

Faites défiler jusqu'à ce que vous voyiez des erreurs. Vous voulez la PREMIÈRE erreur. Toute erreur après la première erreur est probablement due à la première erreur. Dans mon cas, la première erreur a été:

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

Cela est dû aux transactions. Oracle n'est pas conçu pour être utilisé. Si vous y insérez beaucoup de données, il enregistre les journaux de transactions. Ceux-ci vont dans la zone du fichier de récupération. Une fois que c'est plein (50 Go plein dans ce cas). Ensuite, Oracle meurt. Par conception, si quelque chose est gâché, Oracle répondra en s'arrêtant.

Il existe deux solutions, la bonne et la rapide et sale. Le plus rapide et le plus sale consiste à augmenter db_recovery_file_dest_size. Tout d'abord, quittez adrci.

adrci> exit

Maintenant, allez dans sqlplus sans ouvrir la base de données, juste en la montant (vous pouvez peut-être le faire sans monter la base de données, mais je la monte quand même).

$ 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

Maintenant, vous pouvez augmenter votre db_recovery_file_dest_size actuelle, augmentée à 75G dans mon cas:

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

Maintenant, vous pouvez à nouveau arrêter et redémarrer et cette erreur précédente devrait avoir disparu.

La solution appropriée consiste à se débarrasser des fichiers de récupération. Pour ce faire, utilisez RMAN, pas SQLPLUS ou 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;

Si vous en avez RMAN-06171: not connected to target database, essayez d'utiliser rman target /au lieu de simplementrman

Attendez longtemps et votre archivelog (qui utilisait tout cet espace) aura disparu. Ainsi, vous pouvez arrêter / démarrer votre base de données et reprendre votre activité.


Je ne trouve pas la commande adrci sur mon serveur Linux Oracle. Comment l'installer? Merci.

3
Merci! Ça marche. Mais la commande correcte pour rman est: export ORACLE_SID=my_oracle//rman target /

Pour ajouter mes 2 cents - vous pouvez consulter cet article ici, qui a une commande avec laquelle vous pouvez utiliser RMAN, afin d'effacer la zone d'archives, ainsi que d'autres choses. Attention, car il effacera
g00dy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.