起動時の「ORA-03113:通信チャネルのファイルの終わり」


22

私はここ、オラクルのサポートに関する記事を読んでおり、過去3日間、他のどこでも見つけることができ、この問題をあきらめました...

Oracleデータベースがハングしました。データベースのシャットダウンが数時間続いた後、終了しました。再起動しません。サーバーが再起動されました。Oracleが再起動されました。段階的に進む:起動時にnomountが機能し、データベースのマウントが機能し、データベースのオープンが変更されるとORA-03113が返されます。これはすべてローカルホスト上にあり、ネットワーク経由ではありません。マシンには実行中のファイアウォールはありません。

このORA-03113エラーを回避する方法はありますか?私は過去4.5時間インドでサポートを受けて電話をかけてきましたが、まだ誰も役に立たなかった。


1
アラートログからの抜粋ALTER DATABASE OPENとその後のエラーを投稿します。
ミンダウガスリアウバ

1
最後の正常な起動と現在の失敗した起動の間のすべてのアラートログを検索(grep)し、このすべての期間でALTER SYSTEM SETを検索します。誰かがいくつかのインスタンスパラメータを非標準的な方法で変更した可能性があります。
クバンチク

回答:


35

オラクルの公式サポートから数時間にわたって誤った指示を受けた後、私は自分でこれを調べて修正しました。他の誰かがこの問題を抱えている場合に備えて、ここで文書化しています。

これを行うには、oracleユーザーである必要があります。

$ su - oracle

ステップ1:アラートログを確認する必要があります。期待どおり/ var / 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>

ADRベースに注目してください。それはインストールではありません。あなたが使用しているものに接続できるように、あなたは家を見る必要があります。

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

CCIはホームです。それを設定します。

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

これで、アラートログを確認できます。それらが/ var / logにあれば、ログを簡単に解析できるので非常に便利です。ただ欲しがるのをやめて、このインターフェースに対処してください。少なくとも尾を引くことができます(そしてスクロールバックバッファーがあることを願っています)。

adrci> show alert -tail 100

エラーが表示されるまでスクロールバックします。最初のエラーが必要です。最初のエラーの後のエラーは、最初のエラーが原因である可能性があります。私の場合、最初のエラーは次のとおりです。

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

これはトランザクションが原因です。Oracleは使用するように設計されていません。大量のデータをそこにプッシュすると、トランザクションログが保存されます。それらはリカバリファイル領域に入ります。それがいっぱいになると(この場合は50GBいっぱい)。その後、Oracleは死にます。設計上、何かがめちゃくちゃになった場合、Oracleはシャットダウンして対応します。

適切な解決策と、迅速で汚れた解決策の2つの解決策があります。手っ取り早い方法は、db_recovery_file_dest_sizeを増やすことです。まず、adrciを終了します。

adrci> exit

ここで、データベースを開かずにsqlplusに移動し、マウントするだけです(データベースをマウントせずにこれを行うことができますが、とにかくマウントします)。

$ 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

これで、現在のdb_recovery_file_dest_sizeを増やすことができ、私の場合は75Gに増やしました。

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

これで、シャットダウンして再起動できるようになり、以前のエラーは解消されるはずです。

適切な修正は、回復ファイルを取り除くことです。これは、SQLPLUSまたはADRCIではなく、RMANを使用して行います。

$ 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;

持っている場合はRMAN-06171: not connected to target databaserman target /ただの代わりに使用してみてくださいrman

しばらく待つと、アーカイブログ(すべてのスペースを使い果たしていた)はなくなります。したがって、データベースをシャットダウン/起動して、ビジネスに戻ることができます。


Oracle Linuxサーバーにコマンドadrciが見つかりません。どうすればインストールできますか?ありがとう。

3
ありがとう!できます。しかし、RMANへの正しいコマンドは次のとおりですexport ORACLE_SID=my_oracle。//rman target /

私の2セントを追加するには、こちらの記事をご覧ください。この記事には、で使用できるコマンドがありRMAN、アーカイブ領域などをクリアするために使用できます。DBが何らかの理由(最後のビット)で開いている場合にも復元ポイントをクリアするため、注意:the1403.github.io/RMAN-cleanup-logs
g00dy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.