系统当时大量会话处于HW-contention等待,表空间充足。
处理方案:
表空间扩容100G,预先分配2G的extent后,交易恢复正常。
分析:
查看日志发现'unable extent xx bytes'类报错,发现该表空间碎片率高达到96%,没有连续的可用的64M extent,因此当大量insert操作争用HW时,oracle会分配较大的extent来满足,而此时因碎片率高,没有可用的连续空间,因此应用无法继续。
asm表空间碎片率查找:
select a.tablespace_name,
sum(case when bytes >= 32*1048576 then bytes else 0 end )/1048576 large_free,
sum(case when bytes < 32*1048576 then bytes else 0 end )/1048576 small_free32,
sum(case when bytes < 16*1048576 then bytes else 0 end )/1048576 small_free16,
sum(case when bytes < 8*1048576 then bytes else 0 end )/1048576 small_free8,
sum(bytes)/1048576 all_free
from dba_free_space a ,
dba_tablespace b
where a.tablespace_name = b.tablepsace_name
and b.contents <> 'UNDO'
and b.tablespace_name not in ( 'SYSAUX','SYSTEM','USERS','TOOLS')
group by a.tablespace_name ;