博客文章除注明转载外,均为原创。转载请注明出处。
本文链接地址:http://blog.chinaunix.net/uid-31396856-id-5753298.html


一、问题

某数据库system表空间增长比较快

Oracle审计日志和审计策略数据表迁移到新表空间-LMLPHP


由上图知道:

System表空间为12个G的使用空间;

检查system表空间的数据库对象大小,发现表fga_log$的大小为10g,如下图:

Oracle审计日志和审计策略数据表迁移到新表空间-LMLPHP

这是和oracle审计相关的表,还有个表是日志表aud$。

 

如果业务的高峰或者陡增,会带来数据库审计的相关日志数据和审计策略数据迅速增长,进而会导致数据库system表空间的增长,以及段自动扩展带来的IO等待。

二、解决方案

2.1临时解决方案

增加system表空间的数据文件大小,扩展为24G甚至更大;

Alter datebasedatafile ‘数据文件名’resize 24G;

2.2解决方案

建议方案1:

关闭审计。操作如下:

Alter  system set audit_trail=none scope=spfile;

然后重启数据库。

建议方案2:

分离审计数据,将审计的相关表迁移到新的表空间。思路如下:

1、建立新的表空间用于存储数据库审计相关数据:audit_tbs

2、迁移表和数据。

 

三、迁移操作步骤

1) 检查审计表现在所在表空间

CONN / AS SYSDBA

SQL> SELECT table_name, tablespace_name FROM dba_tables
WHERE table_name IN ('AUD$', 'FGA_LOG$') ORDER BY table_name; 2

TABLE_NAME                    TABLESPACE_NAME
------------------------------ ----

--------------------------
AUD$                          SYSTEM
FGA_LOG$                      SYSTEM


2)检查2个表的现在数据量: 

selectsegment_name,bytes/1024/1024 size_in_megabytes from dba_segments wheresegment_name in ('AUD$','FGA_LOG$');

SEGMENT_NAME         SIZE_IN_MEGABYTES
-------------------  -----------------------------
FGA_LOG$                   10380

AUD$                       .6875



3) 创建新表空间 

SQL>createtablespace audit_tbs datafile  size 100Mautoextend on; 

Tablespace created.



4) 迁移存储表

使用存储过程:DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION.

迁移aud$

SQL> BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,--this moves tableAUD$
audit_trail_location_value => 'AUDIT_TBS');
END;
/
PL/SQL procedure successfully completed.

迁移FGA_LOG$表
SQL> BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,--this moves tableFGA_LOG$
audit_trail_location_value => 'AUDIT_TBS');
END;
/
PL/SQL procedure successfully completed.



4) 检查迁移结果: 

SQL> SELECTtable_name, tablespace_name FROM dba_tables
         WHERE table_name IN ('AUD$','FGA_LOG$') ORDER BY table_name;

TABLE_NAME             TABLESPACE_NAME
----------------------- ------------------------------
AUD$                    AUDIT_TBS
FGA_LOG$                AUDIT_TBS

 ---the end

10-09 07:57