ORACLE下回收TEMP表空间

Posted runingli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE下回收TEMP表空间相关的知识,希望对你有一定的参考价值。

释放临时表空间

alter tablespace temp shrink space;

  

--确定TEMP表空间的ts#

SELECT TS#, NAME FROM SYS.TS$;

  

--执行清理操作 temp表空间的TS# 为 3*, So TS#+ 1= 4

BEGIN
FOR CUR IN 1 .. 10 
LOOP 
EXECUTE IMMEDIATE ‘alter session set events ‘‘immediate trace name DROP_SEGMENTS level 4‘‘‘;
END LOOP;
END;
/

  

查看占用temp表空间对象;

set lines 200
col username for a20
col b.BYTES_USED/1024/1024/1024||‘G‘ for a30
SELECT a.username,a.sql_id,a.SEGTYPE,b.BYTES_USED/1024/1024/1024||‘G‘,b.BYTES_FREE/1024/1024/1024 
FROM V$TEMPSEG_USAGE a 
JOIN V$TEMP_SPACE_HEADER b 
ON a.TABLESPACE=b.tablespace_name;


set line 232
set pagesize 49999
set wrap off
col USERNAME for a8
col tablespace for a10
col sql_text for a60
Select se.username,se.sid,se.serial#,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;

  

TEMP临时表空间的数据文件使用情况

SELECT file_id,TABLESPACE_NAME AS TABLESPACE_NAME,BYTES_USED/1024/1024/1024 AS TABLESAPCE_USED_GB,
BYTES_FREE/1024/1024/1024 AS TABLESAPCE_FREE_GB 
FROM V$TEMP_SPACE_HEADER 
ORDER BY 1 DESC;

  

删除临时表空间文件

ALTER TABLESPACE TEMP DROP TEMPFILE ‘/u01/app/oracle/oradata/GSP/temp02.dbf‘;

  

以上是关于ORACLE下回收TEMP表空间的主要内容,如果未能解决你的问题,请参考以下文章

如何处理Oracle中TEMP表空间满的问题

oracle 数据库怎么查看temp表空间使用情况

oracle如何查看temp表空间建立在哪个文件上在

oracle中如何对system表空间进行清理?

如何排查Oracle表空间不足问题

oracle 怎么授权用户 只能在指定的表空间中 创建表