zoukankan      html  css  js  c++  java
  • SYSTEM表空间使用率高的问处理

    oracle SYS表空间 AUD表

    SYSTEM表空间使用率达到了85%,查出是用来记录审计记录的aud$表占用了很大的空间。

    备份后truncate掉AUD$,问题临时解决。记得oracle11.2可以把aud$迁移到普通的表空

    间。于是试了一把,果然ok。


    1.检查SYSTEM表空间使用情况

    1. SQL*Plus: Release 11.2.0.3.0 Production on Mon Mar 26 11:21:18 2012  
    2. Copyright (c) 1982, 2011, Oracle.  All rights reserved.  
    3. Connected to:  
    4. Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production  
    5. With the Partitioning, Data Mining and Real Application Testing options  
    6.   
    7.   
    8. SQL>  select    
    9.   2   b.tablespace_name "表空间",  
    10.   3  b.bytes/1024/1024 "大小M",  
    11.   4  (b.bytes-sum(nvl(a.bytes,0)))/1024/1024 "已使用M",  
    12.   5  substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) "利用率"  
    13.   6  from dba_free_space a,dba_data_files b  
    14.   7  where a.file_id=b.file_id  
    15.   8    and b.tablespace_name='SYSTEM'  
    16.   9  group by b.tablespace_name,b.file_name,b.bytes  
    17.   10  order by b.tablespace_name;  
    18.    
    19. 表空间                 大小M       已使用M   利用率  
    20. ------------------- ---------- ----------- ----------  
    21. SYSTEM                    4096   3485.9375    85.10  

    2.从dba_segments中找出占用SYSTEM表空间中排名前10位的大对象。

    1. SQL> col segment_name for a15;  
    2. SQL> SELECT *  
    3.   2    FROM (SELECT SEGMENT_NAME, SUM(BYTES) / 1024 / 1024 MB  
    4.   3            FROM DBA_SEGMENTS  
    5.   4           WHERE TABLESPACE_NAME = 'SYSTEM'  
    6.   5           GROUP BY SEGMENT_NAME  
    7.   6           ORDER BY 2 DESC)  
    8.   7   WHERE ROWNUM < 10;  
    9.    
    10. 查出aud$占用的很大的空间。  

    3.准备truncate aud$表

    1. SQL> show parameter AUDIT_TRAIL  
    2.   
    3. NAME            TYPE        VALUE      
    4. --------------- ----------- ---------  
    5. audit_trail     string      DB  
    6.   
    7. <span style="color: rgb(255, 0, 0);">-- truncate aud$ 表需要有相关的权限。</span>  
    8. SQL> truncate table aud$;  
    9. Table truncated  

    4.truncate后检查system表空间使用情况,发现使用率由85%降低到29.44%

    1. SQL> ANALYZE TABLE aud$  COMPUTE STATISTICS;  
    2. Table analyzed.   
    3.   
    4. SQL>  select    
    5.  2    b.tablespace_name "表空间",  
    6.  3    b.bytes/1024/1024 "大小M",  
    7.  4    (b.bytes-sum(nvl(a.bytes,0)))/1024/1024 "已使用M",  
    8.  5    substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) "利用率"  
    9.  6    from dba_free_space a,dba_data_files b  
    10.  7    where a.file_id=b.file_id  
    11.  8     and b.tablespace_name='SYSTEM'  
    12.  9    group by b.tablespace_name,b.file_name,b.bytes  
    13. 10   order by b.tablespace_name;  
    14.    
    15. 表空间                大小M    已使用M   利用率  
    16. ---------------- ---------- ----------   ----------  
    17. SYSTEM                 4096       1206   29.44  


    5.为了避免system表空间爆满对数据的影响,把aud$从system表空间迁移到普通表空间AUD_FILE

    1. SQL>  BEGIN  
    2.   2   DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(  
    3.   3   AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,   
    4.   4   AUDIT_TRAIL_LOCATION_VALUE => 'AUD_FILE');  
    5.   5   END;  
    6.   6  /  
    7.   
    8. SQL> col owner for a5;  
    9. SQL> SELECT OWNER, TABLE_NAME, TABLESPACE_NAME  
    10.   2    FROM DBA_TABLES  
    11.   3   WHERE TABLE_NAME = 'AUD$'  
    12.   4     AND OWNER = 'SYS';  
    13.   
    14. OWNER TABLE_NAME    TABLESPACE_NAME  
    15. ----- ------------------------------ ------------------------------  
    16. SYS   AUD$                           TD_FILB    

    本文转自lwei_998的专栏


    http://blog.csdn.net/lwei_998/article/details/7394638

    以下步骤可以参考:

    1.查找AUD$表大小
    select OWNER,SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME,BYTES/1024/1024 MB from dba_segments where SEGMENT_TYPE='TABLE' and SEGMENT_NAME='AUD$';

    2.查找AUD$是否有索引

    select di.table_name, di.index_name from dba_indexes di where di.table_name='AUD$';
      
    3. 关闭审计
    SQL> noaudit connect;   

    4.统计AUD$表记录(多统计几次,确认审计是否关闭)
      SQL> select count(*) from AUD$ ;

    5. 备份AUD$表

    exp "'/ as sysdba'" tables=SYS.AUD$ file=/opt/oracle/aud.dmp  log=/opt/oracle/aud.log buffer=1024000

    6. 清理AUD$
    truncate table AUD$;

    7.检查AUD$表
    select count(*) from AUD$ ;

    8. 开启审计
      audit connect;

    9.检查AUD$表是否正常.
    select count(*) from AUD$ ;

  • 相关阅读:
    回答自己的提问
    <构建之法>13——17章的读后感
    <构建之法>10,11,12章的读后感
    <构建之法>8,9,10章的读后感
    作业5.2
    【作业报告】作业5 四则运算 测试与封装 5.1 改进版
    作业 5.1
    阅读
    做汉堡
    阅读《构建之法》
  • 原文地址:https://www.cnblogs.com/lishoubin/p/3325579.html
Copyright © 2011-2022 走看看