Oracle中临时表空间的清理

Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。临时表空间的主要作用:

索引create或rebuild
Order by 或 group by
distinct 操作
Union 或 intersect 或 minus
Sort-merge joins
analyze


重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长。即使重建了临时表空间,过一段时间后,临时表空间的使用率就达到99%,然后,表空间就开始增长,直到耗尽硬盘空间。如下图所示临时表空间,刚建立时是8G,现在已到32G:



为了防止临时表空间无限制的增加,我采用隔一段时间就重建临时表空间的方法,为了方便,我保留两组语句,轮流执行即可,假定现在临时表空间名称是temp,新建一个tempa表空间,删除temp表空间,方法如下:

create temporary tablespace TEMPA TEMPFILE '/opt/app/oracle/oradata/orcl/tempa01.dbf ' SIZE 8192M REUSE AUTOEXTEND ON NEXT 1024K MAXSIZE UNLIMITED; --创建中转临时表空间
alter database default temporary tablespace tempa; --改变缺省临时表空间

drop tablespace temp including contents and datafiles; --删除原来临时表空间

新建的临时表空间如下图所示:

过一段时间,当临时表空间增长到一定的程度,再新建一个temp表空间,删除tempa表空间,即:

create temporary tablespace TEMP TEMPFILE '/opt/app/oracle/oradata/orcl/temp01.dbf ' SIZE 8192M REUSE AUTOEXTEND ON NEXT 1024K MAXSIZE UNLIMITED; --创建中转临时表空间
alter database default temporary tablespace temp; --改变缺省临时表空间
drop tablespace tempa including contents and datafiles; --删除原来临时表空间

这样就可以保证临时表空间不至于过大,防止过多的占用有限的硬盘空间。

=====================================================

用下面语句可查看当前临时表空间使用空间大小与正在占用临时表空间的sql语句:

select sess.SID,segtype,blocks * 8 / 1000 "MB",sql_text
from v$sort_usage sort,v$session sess,v$sql sql
where sort.SESSION_ADDR = sess.SADDR
and sql.ADDRESS = sess.sql_ADDRESS
order by blocks desc;

下面语句查询临时表空间的空闲程度:

select 'the ' || name || ' temp tablespaces ' || tablespace_name || ' idle ' || round(100 - (s.tot_used_blocks / s.total_blocks) * 100,3) || '% at ' || to_char(sysdate,'yyyymmddhh24miss') from (select d.tablespace_name tablespace_name,nvl(sum(used_blocks),0) tot_used_blocks,sum(blocks) total_blocks from v$sort_segment v,dba_temp_files d where d.tablespace_name = v.tablespace_name(+) group by d.tablespace_name) s,v$database;

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...