使用 Amazon RDS for Oracle 时,如何避免“ORA-01653: unable to extend table SYS.AUD$ or FGA_LOG$ in tablespace SYSTEM(ORA-01653:无法扩展表空间 SYSTEM 中的表 SYS.AUD$ 或 FGA_LOG$)”错误?

2 分钟阅读
0

我在 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;

相关信息

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

Oracle 数据库实例的常见 DBA 数据库任务

Oracle 数据库实例的常见 DBA 日志任务

Oracle 数据库日志文件

AWS 官方
AWS 官方已更新 4 年前