「データベースの接続に失敗しました。」とエラーが発生します。(Oracle版)
カテゴリ:パッケージ版の運用・管理:運用・管理
該当製品:パッケージ版
質問ID:NEO-T0231
対象:全バージョン(Oracle版のみ)
Oracle版においてエラーが発生した場合について説明します。
エラーメッセージ
データベースの接続に失敗しました。データベースが起動していない可能性があります。
OracleのSYSTEM表領域が一杯になり、接続できない状況になっている可能性があります。Oracleアラートログ(alert<SID>.log)に、以下が記録されていないかを確認してください。
ログ
ORA-00604: error occurred at recursive SQL level 1
ORA-01653: unable to extend table SYS.AUD$ by 8192 in tablespace SYSTEM
ORA-02002: error while writing to audit trail
ORA-00604: error occurred at recursive SQL level 1
ORA-01653: unable to extend table S]
Oracleの監査設定(AUDIT_TRAIL)により、SYS.AUD$テーブルにログが記録され、SYSTEM表領域を圧迫しているために発生しています。
※Oracleの11gより、監査設定(AUDIT_TRAIL)がデフォルトでONになっています。
AUD$テーブルのデータを定期的に削除するか、監査が不要の場合は監査設定(AUDIT_TRAIL)をOFFにすることで回避できます。
以下に設定のOFFおよびテーブル削除の例を記載します。
ただし、監査設定のON/OFFおよびデータ削除の詳細な方法は、Oracleのマニュアルをご確認ください。
例)
1. メンテモードで接続します。
コマンド
sqlplus / as sysdba
2. 設定がONであることを確認します。
コマンド
SQL> show parameter audit_trail
NAME TYPE VALUE
—————————————————————————
audit_trail string DB
3. 設定をOFFにします。
コマンド
SQL> alter system set AUDIT_TRAIL = none scope = spfile;
4. DBを再起動します。
コマンド
SQL> shutdown immediate
SQL> startup
5. 設定がOFFであることを確認します。
コマンド
SQL> show parameter audit_trail
NAME TYPE VALUE
—————————————————————————
audit_trail string NONE
6. AUD$データを削除します。
コマンド
SQL>truncate table SYS.AUD$