请教各位大师 ,ORACLE 11G LINUX 系统 ,数据库temp文件32G 了,但是能正常用,应该如何处理?

解决方案 »

  1.   

    检查下temp表空间是被啥用掉了,再分析处理。
    临时表空间使用率:
    SELECT a.tablespace_name,
           trunc(a.BYTES / 1024 / 1024 / 1024) totalG,
           trunc((a.bytes - nvl(b.bytes, 0)) / 1024 / 1024 / 1024) FREEG,
           trunc(nvl(b.bytes, 0) / 1024 / 1024 / 1024) usedG,
           trunc(nvl(b.bytes, 0) / a.BYTES * 100) as usedpercent
      FROM (SELECT tablespace_name, SUM(bytes) bytes
              FROM dba_temp_files
             GROUP BY tablespace_name) a,
           (SELECT tablespace_name, SUM(T.BYTES_USED) bytes
              FROM gv$temp_extent_pool T
             GROUP BY tablespace_name) b
     WHERE a.tablespace_name = b.tablespace_name(+);--临时表空间会话级详细占用情况(前10个占用最多的):
    select * from (
      SELECT se.INST_ID, 
            se.username,      --数据库用户名
            se.SID,           --SID
            se.serial#,       --serial#
            se.status,
            se.machine,       --会话来源主机
            se.program,       --连接会话使用的程序
            se.TADDR,
            p.spid,           --进程号
            su.SQL_ID,        --SQL_ID
            su.TABLESPACE,    --占用的表空间
            su.segtype,       --占用表空间的类型
            su.CONTENTS,      
            su.BLOCKS        --占用的块数,可以反映占用空间大小
       FROM gv$session se, gv$sort_usage su, gv$process p
      WHERE se.saddr = su.session_addr
        and se.INST_ID = su.INST_ID
        and se.INST_ID = p.INST_ID
        and se.PADDR = p.ADDR
      order by su.BLOCKS desc
    ) where rownum<=10;找出占用临时表空间的真实sql:
    select ktssosqlid from x$ktsso, v$session where ktssoses = v$session.saddr
        and ktssosno = v$session.serial#
    and v$session.sid=2111;  (2111根据查出的实际sid修改)
      

  2.   

    1. temp 文件32G 本身没有问题,temp 不使用会释放,但是大小不会变)1)查询sql 看temp的实际使用情况,2)看alert日志是否报大量temp不足,影响业务
    2. temp 文件32G,如果真的不够,可以往temp 表空间里面增加temp 文件
      

  3.   

    1、大量使用使用临时表,2、大数据的排序操作。以上两个因素,都会造成 TEMP 的爆涨。 
      

  4.   

    打开了自动扩展了吧?32G是8K数据块下数据文件最大的大小,猜测临时表空间应该曾经爆掉过。对于整套系统来讲,32G的临时表空间可能无法应对高峰,需要为临时表空间添加更多的临时文件来防止数据库在使用它的时候因为空间问题报错退出。
      

  5.   

    加temp文件