适用情况:
临时表空间已经扩展到比较大的情况下,还是会出现临时表空间满的情况。可以查看是哪个或哪些sql语句占用较大临时表空间。
1.只查看临时表空间的情况(比较准确)
select TABLESPACE_NAME,
TABLESPACE_SIZE / 1024 / 1024 / 1024 "TABLESPACE_SIZE_gByte",
ALLOCATED_SPACE / 1024 / 1024 / 1024 "ALLOCATED_SPACE_SIZE_gByte",
FREE_SPACE / 1024 / 1024 / 1024 "FREE_GByte"
from DBA_temp_FREE_SPACE;
2.临时表空间占用(可以看到更为详细的sql信息,SQL_FULLTEXT那一列)
b.b.blocks*8/1024/1024那一列的单位是Gb,oracle中一个block块是8k
select
b.tablespace
,b.segfile#
,b.segblk#
,b.blocks
,b.blocks*8/1024/1024
,a.sid
,a.serial#
,a.username
,a.osuser
,a.status
,c.sql_text,d.SQL_FULLTEXT,b.contents
,a.PROGRAM
from gv$session a, gv$sort_usage b, gv$sql c,gv$sqlarea d
where a.saddr = b.session_addr
and a.sql_address = c.address(+) and c.SQL_ID=d.SQL_ID
order by b.blocks desc
;