oracle审计相关的表默认表空间是system,当业务增长过快,会导致数据库审计的相关日志数据等迅速增长,则可能会导致system表空间空间不够的问题。
对此,建议分离审计数据,将审计的相关表迁移到新的表空间:
1、建立新的表空间用于存储数据库审计相关数据 AUD
2、迁移表和数据
如上图所示,show parameter audit查看数据库审计功能是否打开;
audit_trail值为DB,说明数据库审计功能打开,审计策略也是打开;
audit_sys_operations为FALSE说明可以审计非sys/system用户的所有操作,想要审计sys/system的操作,需要手动打开audit_sys_operations参数,即alter system set audit_sys_operations=TRUE scope=spfile;然后再重启数据库。
迁移操作步骤:
1)检查审计表现在所在的表空间
SQL>select table_name,tablespace_name from dba_tables where table_name in ('AUD$','FAG_LOG$') order by table_name;
2)检查两个表现在的数据量
SQL>select segment_name,bytes/1024/1024 size_in_megabytes from dba_segments where segment_name in ('AUD$','FAG_LOG$');
3)创建表空间
SQL>create tablespace AUD datafile size 10m autoextend on next 100m maxsize 32767m;
4)迁移
BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_LOCATION(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,audit_trail_location_value => 'AUD');
END;
/
因为第3步,这块可能会报下面的错:
提示我们虽然表空间设置的是自动增长,但还是显示空间不足。
所以,在创建表空间时初始值设置成步骤2中所检查出的大小,如果数据过大,征求下客户意见,是不是可以truncate,然后再创建
5)检查迁移是否成功
SQL>select table_name,tablespace_name from dba_tables where table_name in ('AUD$','FAG_LOG$') order by table_name;
ok,就是这样~
本文分享自微信公众号 - DBA小白成长记,如有侵权,请联系 service001@enmotech.com 删除。