通过以下sql可得到临时表空间曾经最大使用情况:
select d.tablespace_name,space "sum_space(m)",blocks sum_blocks,used_space "used_space(m)", round(nvl(used_space, 0) / space * 100, 2) "used_rate(%)",nvl(free_space, 0) "free_space(m)"
from (select tablespace_name,round(sum(bytes) / (1024 * 1024), 2) space,sum(blocks) blocks
from dba_temp_files group by tablespace_name) d,
(select tablespace_name,round(sum(bytes_used) / (1024 * 1024), 2) used_space, round(sum(bytes_free) / (1024 * 1024), 2) free_space
from v$temp_space_header group by tablespace_name) f
where d.tablespace_name = f.tablespace_name(+)
但这种情况并不能表示目前临时表空间的使用情况,比如某临时表空间已经使用了100%,该操作完毕后,临时表空间的HWM标志没有被回收,所以如果想知道当前的临时表空间使用,需要通过v$sort_usgae来确定:
select sum(blocks*8192)/1024/1024 from v$sort_usage;
看看谁正在做什么:
SQL> select username,session_addr,sqladdr,sqlhash from v$sort_usage;
未选定行。
无人使用,再看v$sort_segment可以看temp的比较详细的使用情况,证实下
KS
------------------------------- ------------- ------------ ----------- ---------
--
TEMP 0 0 0
0
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;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8558647/viewspace-898775/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8558647/viewspace-898775/