一个守望数据库的老菜鸟
分类: Oracle
2016-10-13 17:30:56
由上图知道:
System表空间为12个G的使用空间;
检查system表空间的数据库对象大小,发现表fga_log$的大小为10g,如下图:
这是和oracle审计相关的表,还有个表是日志表aud$。
如果业务的高峰或者陡增,会带来数据库审计的相关日志数据和审计策略数据迅速增长,进而会导致数据库system表空间的增长,以及段自动扩展带来的IO等待。
2.1临时解决方案
增加system表空间的数据文件大小,扩展为24G甚至更大;
Alter datebase datafile ‘数据文件名’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个表的现在数据量:
select
segment_name,bytes/1024/1024 size_in_megabytes from dba_segments where
segment_name in ('AUD$','FGA_LOG$');
SEGMENT_NAME SIZE_IN_MEGABYTES
------------------- -----------------------------
FGA_LOG$ 10380
AUD$ .6875
3) 创建新表空间
SQL>create
tablespace audit_tbs datafile size 100M
autoextend 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 table
AUD$
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 table
FGA_LOG$
audit_trail_location_value => 'AUDIT_TBS');
END;
/
PL/SQL procedure successfully completed.
4) 检查迁移结果:
SQL> SELECT
table_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