• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    System表空间不足的报警问题浅析

    废话不多说了,具体代码如下所示:

    --SYSTEM表空间不足的报警 
    登录之后,查询,发现是sys.aud$占的地方太多。 
    SQL> select owner, segment_name, segment_type, sum(bytes)/1024/1024 space_m  
      from dba_segments  
      where tablespace_name = 'SYSTEM'  
    group by owner, segment_name, segment_type 
    having sum(bytes)/1024/1024 >= 20 
    order by space_m desc 
    ; 
     4  5  6  7  
    OWNER  SEGMENT_NAME   SEGMENT_TYPE SPACE_M 
    -------- ------------------------------- ------- 
    SYS   AUD$       TABLE      4480 
    SYS   IDL_UB1$     TABLE       272 
    SYS   SOURCE$      TABLE       72 
    SYS   IDL_UB2$     TABLE       32 
    SYS   C_OBJ#_INTCOL#  CLUSTER      27 
    SYS   C_TOID_VERSION#  CLUSTER      24 
    6 rows selected. 
    SQL> 
    查看是哪个记得比较多。 
    col userhost format a30 
    select userid, userhost, count(1) from sys.aud$  
    where ntimestamp# >=CAST(to_date('2014-03-01 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)  
    group by userid, userhost 
    having count(1) > 500 
    order by count(1) desc 
    ; 
    再继续找哪天比较多。 
    select to_char(ntimestamp#, 'YYYY-MM-DD') audit_date, count(1)  
    from sys.aud$  
    where ntimestamp# >=CAST(to_date('2014-03-01 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)  
    and userid = 'xxxx' and userhost = 'xxxx' 
    group by to_char(ntimestamp#, 'YYYY-MM-DD')  
    order by count(1) desc 
    ; 
    select spare1, count(1) from sys.aud$  
    where ntimestamp# between CAST(to_date('2014-03-10 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)  
    and CAST(to_date('2014-03-11 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP) 
    and userid = 'xxxx' and userhost = 'xxxx' 
    group by spare1 
    ; 
    select action#, count(1) from sys.aud$  
    where ntimestamp# between CAST(to_date('2014-03-10 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)  
    and CAST(to_date('2014-03-11 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP) 
    and userid = 'xxxx' and userhost = 'xxxx' 
    and spare1 = 'xxxx' 
    group by action# 
    order by count(1) desc 
    ; 
    结果如下: 
      ACTION#  COUNT(1) 
    ---------- ---------- 
        101   124043 
        100   124043 
    SQL> 
    其实是上次打开的audit一直没有关闭。 
    关闭: 
    SQL> noaudit session; 
    清空: 
    truncate table sys.aud$; 
    ------------------------------------------------------------------------ 
    实战 
    ------------------------------------------------------------------------ 
    --1,查询表空间占用情况 
    select dbf.tablespace_name as tablespace_name, 
         dbf.totalspace as totalspace, 
         dbf.totalblocks as totalblocks, 
         dfs.freespace freespace, 
         dfs.freeblocks freeblocks, 
         (dfs.freespace / dbf.totalspace) * 100 as freeRate  
         from (select t.tablespace_name, 
         sum(t.bytes) / 1024 / 1024 totalspace, 
         sum(t.blocks) totalblocks 
         from DBA_DATA_FILES t 
         group by t.tablespace_name) dbf, 
         (select tt.tablespace_name, 
         sum(tt.bytes) / 1024 / 1024 freespace, 
         sum(tt.blocks) freeblocks 
         from DBA_FREE_SPACE tt 
         group by tt.tablespace_name) dfs 
         where trim(dbf.tablespace_name) = trim(dfs.tablespace_name) 
    --2,查看哪里占的比较多 SYSTEM 为step1中查询 tablespace_name 内容 
    select owner, segment_name, segment_type, sum(bytes)/1024/1024 space_m  
      from dba_segments  
      where tablespace_name = 'SYSTEM'  
    group by owner, segment_name, segment_type 
    having sum(bytes)/1024/1024 >= 20 
    order by space_m desc 
    --3,查看是哪个记得比较多 count(1) 越大,说明占得比较多 
    select userid, userhost, count(1) from sys.aud$  
    where ntimestamp# >=CAST(to_date('2014-03-01 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)  
    group by userid, userhost 
    having count(1) > 500 
    order by count(1) desc 
    --4,再继续找哪天比较多 userid userhost 为上一步查询内容 
    select to_char(ntimestamp#, 'YYYY-MM-DD') audit_date, count(1)  
    from sys.aud$  
    where ntimestamp# >=CAST(to_date('2015-03-01 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)  
    and userid = 'userid' and userhost = 'userhost' 
    group by to_char(ntimestamp#, 'YYYY-MM-DD')  
    order by count(1) desc 
    ; 
    select spare1, count(1) from sys.aud$  
    where ntimestamp# between CAST(to_date('2016-03-10 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)  
    and CAST(to_date('2016-12-11 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP) 
    and userid = 'userid' and userhost = 'userhost' 
    group by spare1 
    ; 
    --spare1 为上一步查询内容 
    select action#, count(1) from sys.aud$  
    where ntimestamp# between CAST(to_date('2016-03-10 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)  
    and CAST(to_date('2016-12-11 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP) 
    and userid = 'userid' and userhost = 'userhost' 
    and spare1 = 'Administrator' 
    group by action# 
    order by count(1) desc 
    --5,关闭seeion 
    noaudit session; 
    --6,清空: 
    truncate table sys.aud$; 

    总结

    以上所述是小编给大家介绍的System表空间不足的报警,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    上一篇:SQL提取数据库表名及字段名等信息代码示例
    下一篇:SQLserver排序规则基本概念探索
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    System表空间不足的报警问题浅析 System,表,空间,不足,的,报警,