查看一下谁在用临时段
SELECT se.username,
sid,
serial#,
sql_address,
machine,
program,
tablespace,
segtype,
contents
FROM v$session se,
v$sort_usage su
WHERE se.saddr=su.session_addr;
SELECT se.username,
sid,
serial#,
se.sql_id,
sa.sql_fulltext,
machine,
program,
tablespace,
segtype,
contents
FROM
v$sort_usage su inner join v$session se on (se.saddr=su.session_addr)
left join v$sqlarea sa on (se.sql_id=sa.sql_id);
--查哪个sql用的临时表空间多
select sess.username,sql.sql_text,sort1.blocks from v$session sess,v$sqlarea sql,v$sort_usage sort1 where sess.serial#=sort1.session_num and sort1.sqladdr=sql.address and sort1.sqlhash=sql.hash_value and sort1.blocks>200;
--杀掉会话
alter system kill session 'sid,serial#' immediate;
解决办法:1、收缩整个表空间
--收缩表空间 其中KEEP {nnnn} M 可省略
语法:alter tablespace temp shrink space KEEP {nnnn} M;
--把temp表空间收缩一下
收缩步骤:alter tablespace temp shrink space ;
参数说明:
tablespace_name是临时表空间的名称,{nnnn}是指定要保留的M字节空间。这将释放临时段空间中不再使用的空间。