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

上次更新时间:2019 年 4 月 17 日

我如何在运行 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

注意:截断要求您的数据库实例可以以主用户身份运行 TRUNCATE_SYS_AUD_TABLE 程序的表格。Oracle 版本 12.1.0.2.v2 和 11.2.0.4.v6 以及后续版本支持此操作。

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

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

SQL> desc rdsadmin.rdsadmin_master_util

如果您的数据库实例具有 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 角色是否可用于您的数据库实例:

SQL> select role from dba_roles where role='RDS_MASTER_ROLE';

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

ROLE
--------------------------------------------
RDS_MASTER_ROLE

3.    通过按顺序运行以下命令,验证主用户具有运行 TRUNCATE_SYS_AUD_TABLE 程序的权限:

SQL> select grantee 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

这篇文章对您有帮助吗?

您觉得我们哪些地方需要改进?


需要更多帮助?