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é.
ALTER DATABASE OPEN
et des erreurs après cela.