Temporary表空间100%解决方案

来源:这里教程网 时间:2026-02-27 14:00:59 作者:

在完成Select语句、create index等一些使用TEMP表空间的排序操作后,Oracle是会自动释放临时段。但有些有侯我们则会遇到临时段没

查看临时表空间的使用情况(gv_$temp_space_header视图必须在sys用户下才能查询)
gv_$temp_space_header视图记录了临时表空间的使用大小与未使用的大小
dba_temp_files视图的bytes字段记录的是临时表空间的总大小
select temp_used.tablespace_name,
       total - used as "free",
       total as "total",
       round(nvl(total - used, 0) * 100 / total, 3) "free percent"
  from (select tablespace_name, sum(bytes_used) / 1024 / 1024 used
          from gv_$temp_space_header
         group by tablespace_name) temp_used,
       (select tablespace_name, sum(bytes) / 1024 / 1024 total
          from dba_temp_files
         group by tablespace_name) temp_total
 where temp_used.tablespace_name = temp_total.tablespace_name

查找比较消耗临时表空间资源的sql语句
Select se.username,
       se.sid,
       su.extents,
       su.blocks * to_number(rtrim(p.value)) as Space,
       tablespace,
       segtype,
       sql_text
  from v$sort_usage su, v$parameter p, v$session se, v$sql s
 where p.name = 'db_block_size'
   and su.session_addr = se.saddr
   and s.hash_value = su.sqlhash
   and s.address = su.sqladdr
 order by se.username, se.sid

具体可参见

相关推荐