使用 Amazon RDS for Oracle 时,如何避免“ORA-01653: unable to extend table SYS.AUD$ or FGA_LOG$ in tablespace SYSTEM”错误?

上次更新时间:2020 年 6 月 24 日

我在 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 文档以了解配置和管理审计

注意:AUDIT_SYS_OPERATIONS 默认在 Amazon RDS for Oracle 上已启用。

解决方法

要解决此问题,请考虑以下一个或多个解决方法:

将 AUDIT 表迁移到专用表空间

审计表会无限增长,直到使用 DELETE 语句的手动或自动清除例程清除记录。由于可用空间仅回收到受影响的段,因此清除 SYSTEM 表空间中的表不会导致 AUD$FGA_LOG$ 表的大小发生功能性变化。这可能会导致碎片问题。

AUDIT 表从 SYSTEM 表空间迁移到其他表空间,可以更好地控制 RDS 数据库实例审计表的大小。您可以自行迁移表,或者如果在 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 => '<name>');
END;
/

注意:根据表的大小,此操作可能需要一些时间才能完成。如果您有大型或经常访问的表,可能还会遇到死锁错误。要解决死锁错误,请将 DB_AUDIT_TRAIL 暂时设置为 NONE,重新启动数据库,然后再次尝试操作。您可在该过程完成后恢复 DB_AUDIT_TRAIL

遵循审计表的最佳实践

要维护可管理的审计表,请减少审计表所消耗的空间。此外,通过审计最小的相关操作集,最大限度地减少 ORA-01653 错误的发生。最后,定期存档并清除审计跟踪记录。有关更多信息,请参阅 Oracle Database 文档中的审计典型数据库活动的指导原则

为 SYSTEM 表空间打开 AUTOEXTEND

对于运行 Oracle 的 RDS 数据库实例,SYSTEM 表空间的 AUTOEXTEND 默认设置为。如果手动关闭 AUTOEXTEND,则可能会影响数据库为 SYSTEM 表空间预置额外空间的能力。您可以通过运行 ALTER TABLESPACE 命令为 SYSTEM 表空间启用此设置:

ALTER TABLESPACE SYSTEM AUTOEXTEND ON;

有关更多信息,请参阅 创建和调整表空间

将 SYSTEM 表空间的 MAXSIZE 设置为较大的值

如果 SYSTEM 表空间设置的 MAXBYTESMAXBLOCKS 设置过低,请将 SYSTEM 表空间的 MAXSIZE 设置为较大的值。

通过运行与以下内容类似的命令,您还可以删除 SYSTEM 表空间的最大大小限制:

ALTER TABLESPACE SYSTEM AUTOEXTEND ON MAXSIZE UNLIMITED;