如何在运行 Oracle 的 Amazon RDS 数据库实例上截断 sys.aud$ 表?

上次更新时间:2020 年 9 月 25 日

我如何在运行 Oracle 的 Amazon Relational Database Service (Amazon RDS) 数据库实例上截断 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 数据库实例可以以主用户身份运行 TRUNCATE_SYS_AUD_TABLE 程序的表格。Oracle 版本 12.1.0.2.v2 和 11.2.0.4.v6 以及后续版本支持此操作。

如果上述命令不成功,则联系 AWS Support 寻求帮助。要确定 AWS Support 需要提供哪种类型的帮助,请运行以下命令并记录它们的输出:

1.    运行以下命令以确定 TRUNCATE_SYS_AUD_TABLE 程序是否可用于您的 RDS 数据库实例:

SQL> desc rdsadmin.rdsadmin_master_util
如果您的 RDS 数据库实例具有 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 数据库实例:
SQL> select role from dba_roles where role='RDS_MASTER_ROLE';

如果 RDS_MASTER_ROLE 角色可用于您的 RDS 数据库实例,您会收到以下类似输出:

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

这篇文章对您有帮助吗?


您是否需要账单或技术支持?