Amazon RDS for Oracle を使用するときに「ORA-01653: テーブルスペース SYSTEM のテーブル SYS.AUD $ or FGA_LOG $を拡張できません」というエラーを回避する方法を教えてください。

最終更新日: 2019 年 4 月 18 日

Amazon Relational Database Service (Amazon RDS) データベースの Oracle 監査機能を有効にして、データベース監査テーブルにイベントをログ記録しました。しかし、SYSTEM のテーブルスペースが予想以上に大きくなっている、つまり次のようなエラーメッセージが表示されます。

"ORA-01653: unable to extend table..." for SYS.AUD$ or FGA_LOG$ in the tablespace SYSTEM."

どうすればこのエラーを解決できますか?

簡単な説明

ORA-01653 エラーは、SYSTEM テーブルスペースの SYS.AUD テーブルに空き領域がないために発生します。ここでは、Oracle 監査テーブル AUD $ および FGA_LOG $ がデフォルトで定義されています。追加のデータに対応するためにテーブルが自動拡張しようとしたときにエラーが発生しましたが、テーブルが拡張できません。テーブルスペースがいっぱいになる可能性がある監査アクションの詳細については、Oracle のドキュメント「Configuring and Administering Auditing」を参照してください。

注: Amazon RDS for Oracle で AUDIT_SYS_OPERATIONS はデフォルトで有効となっており、無効にすることはできません。

解決方法

この問題を解決するには、以下の解決方法のうち 1 つ以上検討してください。

専用のテーブルスペースに AUDIT テーブルを移行する

監査テーブルは DELETE ステートメントを使用した手動または自動のパージの日常手順が、レコードをクリーンアップするまで無期限に増大します。空きスペースは影響を受けるセグメントにのみ再利用されるため、SYSTEM テーブルスペース内のテーブルを消去しても、AUD $ と FGA_LOG $ のテーブルサイズに機能上の変更はなく、断片化の問題が発生する可能性があります。

AUDIT テーブルを SYSTEM テーブルスペースから別のテーブルスペースに移行すると、DB インスタンスの監査テーブルのサイズをより細かく制御できます。テーブルを自分で移行することも、RDS インスタンスで Oracle 11g R2 を実行している場合は DBMS_AUDIT_MGMT パッケージを使用することもできます。

手動でテーブルを移行するには、次の手順に従います。

1.    次のようなコマンドを実行して、新しいテーブルスペースを作成します。

CREATE TABLESPACE <name>;

注: AUTOEXTENSIBLE セグメントスペース管理 (新しいテーブルスペースではデフォルトで有効) を使用してテーブルスペースを作成すると、後でテーブルのサイズを簡単に変更できます。

2.    次のようなコマンドを実行して、AUD $ テーブルを新しいテーブルスペースに移行します。

BEGIN
SYS.DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
audit_trail_location_value => '<name>');
END;
/

3.    次のようなコマンドを実行して、FGA_LOG $ テーブルを新しいテーブルスペースに移行します。

BEGIN
SYS.DBMS_AUDIT_MGMT.set_audit_trail_location(audit_trail_type => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD, audit_trail_location_value => 'BIGFILETEST');
END;
/

注: テーブルのサイズによっては、この操作の完了に時間がかかることがあります。大規模または頻繁にアクセスされるテーブルがある場合は、デッドロックエラーが発生することもあります。デッドロックエラーを解決するには、一時的に DB_AUDIT_TRAILNONE に設定し、データベースを再起動してから操作を再試行します。プロセスが完了したら、DB_AUDIT_TRAIL を元に戻すことができます。

監査テーブルのベストプラクティスに従う

管理可能な監査テーブルを維持するために、監査テーブルが消費するスペースを減らします。最小限の関連アクションを監査することでも、ORA-01653 エラーの発生を最小限に抑えることが可能です。最後に、監査証跡レコードを頻繁にアーカイブおよびパージします。詳細については、一般的なデータベースアクティビティの監査のガイドラインに関する Oracle Database のドキュメントを参照してください。

SYSTEM テーブルスペースの AUTOEXTEND をオンにする

Oracle を実行する DB インスタンスの場合、SYSTEM テーブルスペースの AUTOEXTEND はデフォルトで ON に設定されています。AUTOEXTEND を手動でオフにすると、データベースが SYSTEM テーブルスペースに追加するスペースをプロビジョニングする能力に影響がある可能性があります。SYSTEM テーブルスペースのこの設定を有効にするには、ALTER TABLESPACE コマンドを実行します。

ALTER TABLESPACE SYSTEM AUTOEXTEND ON;

詳細については、Oracle のドキュメント「Changing Datafile Size」を参照してください。

SYSTEM テーブルスペースの MAXSZE をより大きな値に設定する

MAXBYTES または MAXBLOCKS の SYSTEM テーブルスペースの設定が低すぎる場合は、SYSTEM テーブルスペースの MAXSIZE をより大きな値に設定してください。

以下のようなコマンドを実行して、SYSTEM テーブルスペースの最大サイズに対する制限を削除することもできます。

ALTER TABLESPACE SYSTEM AUTOEXTEND ON MAXSIZE UNLIMITED;