temp tablespace监控

  TEMPORARY表空间是用来排序操作的,比如你操作几个大表,ORACLE没有足够的内存(sort_area_size)来排序,那么ORACLE就会分配TEMPORARY表空间来排序。一些涉及排序的操作有CREATE INDEX, ANALYZE, Select DISTINCT, ORDER BY, GROUP BY, UNION, INTERSECT, MINUS, Sort-Merge joins等。在创建索引或做大的排序操作时,监控v$sort_usage动态性能视图是必需的,否则如果temp表空间空间不足将会导致排序操作失败;在数据库的日常维护中,也需要对temp表空间的使用情况进行监控,有利于对系统中的异常排序有所防范。。。[@more@]

  通过以下sql可得到临时表空间曾经最大使用情况:

select d.tablespace_name,space "sum_space(m)",blocks sum_blocks,used_space "used_space(m)", round(nvl(used_space, 0) / space * 100, 2) "used_rate(%)",nvl(free_space, 0) "free_space(m)"
from (select tablespace_name,round(sum(bytes) / (1024 * 1024), 2) space,sum(blocks) blocks
from dba_temp_files group by tablespace_name) d,
(select tablespace_name,round(sum(bytes_used) / (1024 * 1024), 2) used_space, round(sum(bytes_free) / (1024 * 1024), 2) free_space
from v$temp_space_header group by tablespace_name) f
where d.tablespace_name = f.tablespace_name(+)

  但这种情况并不能表示目前临时表空间的使用情况,比如某临时表空间已经使用了100%,该操作完毕后,临时表空间的HWM标志没有被回收,所以如果想知道当前的临时表空间使用,需要通过v$sort_usgae来确定:

select sum(blocks*8192)/1024/1024 from v$sort_usage;

  看看谁正在做什么:

SQL> select username,session_addr,sqladdr,sqlhash from v$sort_usage;

未选定行。

无人使用,再看v$sort_segment可以看temp的比较详细的使用情况,证实

SQL> select tablespace_name,current_users,total_blocks,used_blocks,free_blocks from v$sort_segment;
TABLESPACE_NAME CURRENT_USERS TOTAL_BLOCKS USED_BLOCKS FREE_BLOC
KS
------------------------------- ------------- ------------ ----------- ---------
--
TEMP 0 0 0
0
也可以多表连接来找出用TEMPORARY SQLSESSION信息
SQL> select se.username,se.sid,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;
no rows selected
有时还会碰到这样的情况,用户觉得临时表空间太大了,并且不能自动回收,甚至重启也不能解决,那么如下的处理步骤将是非常彻底而有效的,但前提是必须通过上面的查询确认没有人在使用临时段。
1、首先创建另外一个临时表空间temp1;
create temporary tablespace temp1 tempfile 'e:oracleoradataorcltemp03.dbf' size 500m;
更改数据库的临时表空间;
2、alter database default temporary tablespace temp1;
删除原来的;
3、drop tablespace temp including and datafile;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8558647/viewspace-898775/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8558647/viewspace-898775/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值