我在 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 表空间设置的 MAXBYTES 或 MAXBLOCKS 设置过低,请将 SYSTEM 表空间的 MAXSIZE 设置为较大的值。
通过运行与如下类似命令,您还可以删除 SYSTEM 表空间的最大大小限制:
ALTER TABLESPACE SYSTEM AUTOEXTEND ON MAXSIZE UNLIMITED;
相关信息
我如何在运行 Oracle 的 Amazon RDS 实例上截断 sys.aud$ 表?
Oracle 数据库实例的常见 DBA 数据库任务
Oracle 数据库实例的常见 DBA 日志任务
Oracle 数据库日志文件