本帖最后由 pzlzl 于 2011-04-02 12:37:14 编辑

解决方案 »

  1.   

    select s.username, s.sid, u.tablespace, u.contents, u.segtype,      
      round(u.blocks*8192/1024/1024,2) MB                                 
        from v$session s, v$sort_usage u                                    
          where s.saddr = u.session_addr                                     
     and u.contents = 'TEMPORARY'                                        
       order by MB DESC ; 用这个命令查看下你的临时表空间的适用情况
      

  2.   


    这是因为你用session作为关联条件 and su.session_addr = se.saddr
    你执行这个查询语句的时候,这个session的当前sql语句已经不是占用临时表空间的语句了,这种查询方法是不准确的,可以直接查询 v$sort_usage
    其中select 1 from dual 就是你出问题的session,又向数据库发送了一条探测消息(由应用服务器发出)
      

  3.   

    oracle 用完临时段后不是立即清理临时段,通过你的语言查询的是哪个session在整个运行过程中使用的最大临时空间.不一定是当前语句的.
    temp表空间的大小要满足你业务峰值的需要