oracle dump enq hw,enq:HW–contention 故障处理

论坛 期权论坛 脚本     
已经匿名di用户   2021-11-11 18:06   7312   0

enq: HW - contention 说明:

硬件队列用于序列化段的高水位线以外的空间分配。

可以用手动分配范围即可解决问题。

V$SESSION_WAIT,P2 / V$LOCK.ID1 is the tablespace number.

V$SESSION_WAIT.P3 / V$LOCK.ID2 is the relative data block address (dba)

of segment header of the object for which space is being allocated.

巡检发现问题:

select event,count(*) from gv$session_wait

where wait_class <> 'Idle'

group by event;

1

enq: HW - contention

274

识别发生问题的会话:

select sid,event,P2,P3 from gv$session_wait where event like '%HW%';

4ffnneSRzJjRoAAAAASUVORK5CYII=

通过DBMS_UTILITY包,来定位发生HW争用的对象。

SELECT DBMS_UTILITY.data_block_address_file(ID2) FILE#,

DBMS_UTILITY.data_block_address_block(ID2) BLOCK#

FROM GV$LOCK WHERE TYPE = 'HW';

gPSRHbh3YcoGAAAAABJRU5ErkJggg==

通过上面查到的 文件号 和 块ID 定位到等待的对象。

SELECT OWNER ,

SEGMENT_TYPE,

SEGMENT_NAME

FROM DBA_EXTENTS

WHERE FILE_ID = 111

AND 126423 BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS -1 ;

YNtjtL+KAKzMPcNPuqi99MOa4TFZj+nCjWSF+qAr8e5jDmNzWYMzBnYM7APc7Av3Iplva+CwTvAAAAAElFTkSuQmCC

根据lob字段 查到相对应的表。

SELECT OWNER ,

TABLE_NAME ,

SEGMENT_NAME

FROM DBA_LOBS

WHERE SEGMENT_NAME = 'SYS_LOB0000080646C00004$$';

+Nq770xAAAAABJRU5ErkJggg==

现在,已经查到是哪个LOB段造成的HW等待。应该向段中手动添加一个新的扩展区来解决问题。

添加一个该段中最大扩展区大小相同的扩展区。

查询对象最大扩展区的大小。

SELECT DISTINCT BYTES

FROM DBA_EXTENTS

WHERE SEGMENT_NAME = 'SYS_LOB0000080646C00004$$'

AND OWNER ='USER'

dVwAAAABJRU5ErkJggg==

向lob字段添加扩展区。

alter table USER.TAB modify lob ('COL_NAME') (allocate extents (size 64M));

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP