Oracle を実行しているAmazon Relational Database Service (Amazon RDS) DB インスタンスで sys.aud$ テーブルを削除するにはどうしたらいいですか?
解決方法
sys.aud$ テーブルを削除するには、マスターユーザーとして次のコマンドを実行します。
SQL> exec rdsadmin.rdsadmin_master_util.truncate_sys_aud_table;
このプロシージャーが正常に完了すると、次のような出力が表示されます。
PL/SQL procedure successfully completed.
SQL> select count(*) from sys.aud$;
COUNT(*)
----------
0
注: テーブルの削除には、RDS DB インスタンスで、TRUNCATE_SYS_AUD_TABLE プロシージャーをマスターユーザーとして実行する必要があります。この操作は、Oracle バージョン 12.1.0.2.v2 と 11.2.0.4.v6、および それ以降のバージョンでサポートされています。
前出のコマンドが失敗する場合は、AWS サポートにお問い合わせください。AWS がご提供すべきサポートの内容を確認するために、次のコマンドを実行し、その出力結果を記録しておいてください。
1. 次のコマンドを実行しTRUNCATE_SYS_AUD_TABLEプロシージャーが、ご使用の RDS DB インスタンスで利用可能かを確認してください。
SQL> desc rdsadmin.rdsadmin_master_util
RDS DB インスタンスにおいて
TRUNCATE_SYS_AUD_TABLE プロシージャーが有効な場合は、次のような出力結果が表示されます。
FUNCTION IS_DML_ENABLED RETURNS BOOLEAN
PROCEDURE TRUNCATE_SYS_AUD_TABLE
PROCEDURE TRUNCATE_SYS_FGA_LOG_TABLE
2. 次のコマンドを実行し、
RDS_MASTER_ROLE ロールが、ご使用の RDS DB インスタンスで利用可能かを確認してください。
SQL> select role from dba_roles where role='RDS_MASTER_ROLE';
RDS_MASTER_ROLE ロールが RDS DB インスタンスで利用可能な場合、次のような出力結果が表示されます。
ROLE
--------------------------------------------
RDS_MASTER_ROLE
3. 次のコマンドを実行し、マスターユーザーに TRUNCATE_SYS_AUD_TABLE プロシージャーを実行する権限があるか確認してください。
SQL> select granted_role, grantee, admin_option from dba_role_privs where granted_role='RDS_MASTER_ROLE';
マスターユーザーに TRUNCATE_SYS_AUD_TABLE プロシージャを実行する権限がある場合、次のような出力結果が表示されます。
GRANTED_ROLE GRANTEE ADM
-------------------- -------------------- ---
RDS_MASTER_ROLE SYS YES
RDS_MASTER_ROLE MASTER_USER NO
関連情報
「Amazon RDS での Oracle」
「Oracle DB インスタンスの一般的な DBA タスク」