oracle删除临时表空间语句,Oracle中临时表空间的清理

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

索引create或rebuild

Order by 或 group by

Distinct 操作

Union 或 intersect 或 minus

Sort-merge joins

analyze

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

033ba4e3616f058a2dfab9d1768a0e2b.png

为了防止临时表空间无限制的增加,我采用隔一段时间就重建临时表空间的方法,为了方便,我保留两组语句,轮流执行即可,假定现在临时表空间名称是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表空间,即:

b063eb72c1899acf7d3b220d7a3e50d4.png

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;

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值