合 SYSAUX表空间占用过大情况下的处理(AWR信息过多)
SYSTEM和SYSAUX表空间存储的内容有哪些区别?若SYSAUX表空间占用过大则应该如何处理?
在一般情况下,企业产生的业务数据应该存放在单独的数据表空间,而不应该使用系统已存在的表空间,尤其不能将业务数据保存到SYSTEM和SYSAUX表空间中,所以,DBA需要着重关注SYSTEM和SYSAUX表空间的占用情况。
Oracle服务器使用SYSTEM表空间管理整个数据库。这个表空间包含系统的数据字典和关于数据库的管理信息,这些信息均包含在SYS方案中,只有SYS用户或者拥有所需权限的其它管理用户才可访问这些信息。SYSTEM表空间用于核心功能(例如数据字典表)。
SYSAUX是SYSTEM表空间的辅助表空间。Oracle DB早期版本中某些使用SYSTEM表空间或其本身表空间的组件和产品现在改为使用SYSAUX表空间。每个Oracle Database 10g(或更高版本)数据库都必须拥有SYSAUX表空间。辅助表空间SYSAUX用于附加的数据库组件,例如,OEM库(Oracle Enterprise Manager Repository)、AWR快照信息库、统计信息、审计信息等。
SYSTEM和SYSAUX表空间是在创建数据库时创建的必需存在的表空间。这些表空间必须联机。在OPEN状态下,SYSAUX表空间可以脱机以执行表空间恢复,而SYSTEM表空间则不能,这两种表空间都不能设置为只读状态。在MOUNT状态下,任何表空间都可以脱机。
SYSTEM表空间的大小一般变化不大,而SYSAUX表空间在默认条件下如果不做任何配置,那么随着时间的推移,会越来越大。所以,如果SYSAUX表空间过大,那么应该及时诊断清理该表空间。
对于SYSTEM表空间而言,如果占用过大,那么一般情况下是由于审计表(SYS.AUD$)过大引起的。需要将审计表移动到其它表空间中,然后再清理审计表(TRUNCATE TABLE SYS.AUD$)即可。需要注意的是,如果审计表过大,那么应该分部去清理审计表,详细步骤可以参考审计部分。
对于SYSAUX表空间而言,如果占用过大,那么一般情况下是由于AWR信息或对象统计信息没有及时清理引起的,具体原因可以通过如下的SQL语句查询:
1 2 3 4 5 6 7 | SELECT OCCUPANT_NAME "Item", SPACE_USAGE_KBYTES / 1048576 "Space Used (GB)", SCHEMA_NAME "Schema", MOVE_PROCEDURE "Move Procedure" FROM V$SYSAUX_OCCUPANTS WHERE SPACE_USAGE_KBYTES > 1048576 ORDER BY "Space Used (GB)" DESC; |
如果OCCUPANT_NAME列为SM/AWR(Server Manageability - Automatic Workload Repository),那么表示AWR信息占用过大;如果该列为SM/OPTSTAT(Server Manageability - Optimizer Statistics History),那么表示优化器统计信息占用过大;如果该列为AUDIT_TABLES,表示审计信息占用的空间大小;如果该列为LOGMNR,表示logminer产生的数据占用了表空间。
也可以直接查询DBA_SEGMENTS视图获取信息:
1 2 3 4 5 | SELECT D.SEGMENT_NAME, D.SEGMENT_TYPE,SUM(BYTES)/1024/1024 SIZE_M FROM DBA_SEGMENTS D WHERE D.TABLESPACE_NAME = 'SYSAUX' GROUP BY D.SEGMENT_NAME, D.SEGMENT_TYPE ORDER BY SIZE_M DESC; |
然后查询占用空间较大的表,即可得到占用空间较大的原因,下面分别讨论。
(一)AWR信息占用过大
如果确认是AWR信息占用空间过大,那么还可以使用如下的SQL脚本获取AWR占用信息的详细信息:
1 | sqlplus / as sysdba @$ORACLE_HOME/rdbms/admin/awrinfo.sql |
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | ######################################################## (I) AWR Snapshots Information ######################################################## ***************************************************** (1a) SYSAUX usage - Schema breakdown (dba_segments) ***************************************************** | | Total SYSAUX size 7,096.3 MB ( 43% of 16,384.0 MB MAX with AUTOEXTEND ON ) | | Schema SYS occupies 6,961.3 MB ( 98.1% ) | Schema XDB occupies 62.9 MB ( 0.9% ) | Schema AUDSYS occupies 50.3 MB ( 0.7% ) | Schema SYSTEM occupies 12.6 MB ( 0.2% ) | Schema WMSYS occupies 6.6 MB ( 0.1% ) | Schema GSMADMIN_INT occupies 1.4 MB ( 0.0% ) | Schema DBSNMP occupies 1.2 MB ( 0.0% ) | ******************************************************** (1b) SYSAUX occupants space usage (v$sysaux_occupants) ******************************************************** | | Occupant Name Schema Name Space Usage | -------------------- -------------------- ---------------- | SM/AWR SYS 5,137.9 MB | AUDIT_TABLES SYS 1,262.0 MB | XDB XDB 62.9 MB | AUDSYS AUDSYS 50.3 MB | SM/OTHER SYS 49.9 MB | SM/ADVISOR SYS 48.2 MB | SM/OPTSTAT SYS 14.8 MB | LOGMNR SYSTEM 10.8 MB | JOB_SCHEDULER SYS 8.9 MB | WM WMSYS 6.6 MB | SMON_SCN_TIME SYS 3.3 MB | PL/SCOPE SYS 2.9 MB | SQL_MANAGEMENT_BASE SYS 2.7 MB | AO SYS 1.9 MB | STREAMS SYS 1.7 MB | LOGSTDBY SYSTEM 1.6 MB | EM_MONITORING_USER DBSNMP 1.2 MB | AUTO_TASK SYS 0.6 MB | EM SYSMAN 0.0 MB | EXPRESSION_FILTER EXFSYS 0.0 MB | ORDIM ORDSYS 0.0 MB | ORDIM/ORDDATA ORDDATA 0.0 MB | ORDIM/ORDPLUGINS ORDPLUGINS 0.0 MB | ORDIM/SI_INFORMTN_SC SI_INFORMTN_SCHEMA 0.0 MB | SDO MDSYS 0.0 MB | STATSPACK PERFSTAT 0.0 MB | TEXT CTXSYS 0.0 MB | TSM TSMSYS 0.0 MB | ULTRASEARCH WKSYS 0.0 MB | ULTRASEARCH_DEMO_USE WK_TEST 0.0 MB | XSAMD OLAPSYS 0.0 MB | XSOQHIST SYS 0.0 MB | | Others (Unaccounted space) 428.3 MB | ****************************************** (1c) SYSAUX usage - Unregistered Schemas ****************************************** | This section displays schemas that are not registered | in V$SYSAUX_OCCUPANTS | | Schema GSMADMIN_INT occupies 1.4 MB | | Total space 1.4 MB | ************************************************************* (1d) SYSAUX usage - Unaccounted space in registered schemas ************************************************************* | | This section displays unaccounted space in the registered | schemas of V$SYSAUX_OCCUPANTS. | | Unaccounted space in SYS/SYSTEM 426.9 MB | | Total space 426.9 MB | ************************************* (2) Size estimates for AWR snapshots ************************************* | | Estimates based on 30 mins snapshot INTERVAL: | AWR size/day 168.6 MB (3,596 K/snap * 48 snaps/day) | AWR size/wk 1,180.0 MB (size_per_day * 7) per instance | | Estimates based on 48 snaps in past 24 hours: | AWR size/day 168.6 MB (3,596 K/snap and 48 snaps in past 24 hours) | AWR size/wk 1,180.0 MB (size_per_day * 7) per instance | ********************************** (3a) Space usage by AWR components (per database) ********************************** COMPONENT MB % AWR KB_PER_SNAP MB_PER_DAY MB_PER_WEEK TABLE% : INDEX% --------- --------- ------ ------------ ---------- ----------- ---------------- ASH 1,400.3 27.3 980 45.9 321.6 87% : 13% FIXED 1,348.6 26.2 944 44.2 309.7 45% : 55% EVENTS 455.8 8.9 319 15.0 104.7 42% : 58% SQLPLAN 392.0 7.6 274 12.9 90.0 65% : 35% SQLBIND 240.0 4.7 168 7.9 55.1 50% : 50% SQL 100.7 2.0 70 3.3 23.1 66% : 34% SPACE 86.3 1.7 60 2.8 19.8 63% : 37% SQLTEXT 16.9 0.3 12 0.6 3.9 94% : 6% RAC 0.6 0.0 0 0.0 0.1 50% : 50% ********************************** (3b) Space usage within AWR Components (> 500K) ********************************** COMPONENT MB SEGMENT_NAME - % SPACE_USED SEGMENT_TYPE --------- --------- --------------------------------------------------------------------- --------------- ASH 265.0 WRH$_ACTIVE_SESSION_HISTORY.WRH$_ACTIVE_SESSION_HISTORY_37363 - 99% TABLE PARTITION ASH 257.0 WRH$_ACTIVE_SESSION_HISTORY.WRH$_ACTIVE_SESSION_HISTORY_37363 - 97% TABLE PARTITION .......................................................... |
如果AWR信息占用过大,那么可以通过设置AWR的保留时间来减小AWR信息的存储空间。通过如下的SQL语句可以获取AWR的保留时间:
1 | SELECT * FROM DBA_HIST_WR_CONTROL; |
通过如下的SQL语句可以设置AWR信息的保留时间为7天(72460),每隔1小时收集一次AWR信息:
1 | EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(INTERVAL=>60, RETENTION=>7*24*60); |
需要注意的是,在Oracle 10g中,AWR默认保留7天,在Oracle 11g中,AWR默认保留8天。
在以上设置完成后,可以删除不需要的AWR快照信息,从而释放SYSAUX表空间,相关SQL语句如下所示: