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$ ;

  • 相关阅读:
    BadUSB 利用
    java 将函数作为参数传递
    odoo12 修行提升篇之 常用的高阶函数 (二)
    odoo12 修行提升篇之 异步定时任务 (一)
    odoo12 修行基础篇之 利用kanban做分析 点击跳转分析模型列表 (九)
    odoo12 修行基础篇之 kanban (八)
    odoo12 修行基础篇之 记录批处理 (七)
    odoo12 修行基础篇之 列表的筛选和分组 (六)
    odoo12 修行基础篇之 添加记录编码 (五)
    odoo12 修行基础篇之 添加工作流和操作记录 (四)
  • 原文地址:https://www.cnblogs.com/lishoubin/p/3325579.html
Copyright © 2011-2022 走看看