1.查看当前数据库默认的临时表空间
SELECT * FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';
2.修改数据库默认的临时表空间
alter database default temporary tablespace temp1;
3.查看临时表空间对应的文件
SELECT a.name temp_file_name, b.name, a.bytes
FROM v$tempfile a, v$tablespace b
WHERE a.ts# = b.ts#;
4.查看临时表空间的使用情况
SELECT A.tablespace_name tablespace,
D.mb_total,
SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_used,
D.mb_total - SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_free,
ROUND (
(SUM (A.used_blocks * D.block_size) / 1024 / 1024) / D.mb_total,
5)
* 100
"使用率 %"
FROM v$sort_segment A,
( SELECT B.name, C.block_size, SUM (C.bytes) / 1024 / 1024 mb_total
FROM v$tablespace B, v$tempfile C
WHERE B.ts# = C.ts#
GROUP BY B.name, C.block_size) D
WHERE A.tablespace_name = D.name
GROUP BY A.tablespace_name, D.mb_total;
5.查看session使用临时表空间的大小情况
SELECT S.sid || ',' || S.serial# sid_serial,
S.username,
S.osuser,
P.spid,
S.module,
P.program,
SUM (T.blocks) * TBS.block_size / 1024 / 1024 mb_used,
T.tablespace,
COUNT (*) statements
FROM v$sort_usage T,
v$session S,
dba_tablespaces TBS,
v$process P
WHERE T.session_addr = S.saddr
AND S.paddr = P.addr
AND T.tablespace = TBS.tablespace_name
GROUP BY S.sid,
S.serial#,
S.username,
S.osuser,
P.spid,
S.module,
P.program,
TBS.block_size,
T.tablespace
ORDER BY sid_serial;
6.看哪些sql在使用临时表空间
SELECT a.username,
a.sid,
a.serial#,
a.osuser,
b.tablespace,
b.blocks,
c.sql_text
FROM v$session a, v$tempseg_usage b, v$sqlarea c
WHERE a.saddr = b.session_addr
AND c.address = a.sql_address
AND c.hash_value = a.sql_hash_value
ORDER BY b.tablespace, b.blocks;