Setelah beberapa jam salah arah dari dukungan resmi Oracle, saya terjun sendiri dan memperbaikinya. Saya mendokumentasikannya di sini kalau-kalau ada orang lain yang memiliki masalah ini.
Untuk melakukan semua ini, Anda harus menjadi pengguna oracle:
$ su - oracle
Langkah 1: Anda perlu melihat log peringatan. Itu tidak ada di / var / log seperti yang diharapkan. Anda harus menjalankan program membaca 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>
Perhatikan basis ADR. Itu bukan instal. Anda perlu melihat rumah sehingga Anda dapat terhubung ke rumah yang Anda gunakan.
adrci> show homes
ADR Homes:
diag/rdbms/cci/CCI
diag/tnslsnr/cci/listener
diag/tnslsnr/cci/start
diag/tnslsnr/cci/reload
CCI adalah rumah. Atur itu.
adrci> set home diag/rdbms/cci/CCI
adrci>
Sekarang, Anda dapat melihat log peringatan. Akan sangat bagus jika mereka berada di / var / log sehingga Anda dapat dengan mudah menguraikan log. Berhentilah menginginkan dan berurusan dengan antarmuka ini. Setidaknya Anda dapat mengekor (dan saya harap Anda memiliki buffer scrollback):
adrci> show alert -tail 100
Gulir ke belakang sampai Anda melihat kesalahan. Anda ingin kesalahan PERTAMA. Kesalahan apa pun setelah kesalahan pertama kemungkinan disebabkan oleh kesalahan pertama. Dalam kasus saya, kesalahan pertama adalah:
ORA-19815: WARNING: db_recovery_file_dest_size of 53687091200 bytes is 100.00% used, and has 0 remaining bytes available.
Ini disebabkan oleh transaksi. Oracle tidak dirancang untuk digunakan. Jika Anda memasukkan banyak data ke dalamnya, ia menyimpan log transaksi. Itu masuk ke area file pemulihan. Setelah itu penuh (50GB penuh dalam hal ini). Kemudian, Oracle mati. Secara desain, jika ada masalah, Oracle akan merespons dengan mematikan.
Ada dua solusi, yang tepat dan yang cepat dan kotor. Yang cepat dan kotor adalah meningkatkan db_recovery_file_dest_size. Pertama, keluar dari adrci.
adrci> exit
Sekarang, masuklah ke sqlplus tanpa membuka basis data, cukup memasangnya (Anda mungkin bisa melakukan ini tanpa memasang basis data, tapi saya tetap memasangnya).
$ 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
Sekarang, Anda dapat meningkatkan db_recovery_file_dest_size Anda saat ini, meningkat menjadi 75G dalam kasus saya:
SQL> alter system set db_recovery_file_dest_size = 75G scope=both
Sekarang, Anda dapat mematikan dan memulai lagi dan kesalahan sebelumnya harus hilang.
Perbaikan yang tepat adalah menyingkirkan file pemulihan. Anda melakukannya menggunakan RMAN, bukan SQLPLUS atau 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;
Jika sudah RMAN-06171: not connected to target database
, daripada mencoba menggunakannya, rman target /
bukan hanyarman
Tunggu lama dan archivelog Anda (yang menggunakan semua ruang itu) akan hilang. Jadi, Anda dapat mematikan / memulai database Anda dan kembali berbisnis.
ALTER DATABASE OPEN
dan kesalahan setelah itu.