첫째, 장애 현상
15 : 30 ~ 16 : 00 발견 테스팅을 그 ENQ 많은 수의 : HW - 경쟁과 ENQ : TX - 행 잠금 경합 이벤트에 대한 대기, 점점 더 많은, 결국 짧은 서비스 중단으로 이어지는 두 이벤트.
돌아 가기 테스트 용도의 테이블 스페이스 따라서 사용자 테이블 공간을 증가, 확장 자동으로 사용되는 발견, 문제 해결
둘째, 고장 분석
1 참조 30-16 : 00 시간 15 시간의 모든 기간 찾는데 사용 snap_id, 세션 동작을
선택 * 로부터 dba_hist_snapshot 여기서 begin_interval_time > TO_DATE ( ' 2019년 12월 3일 ' , ' YYYY-MM-DD ' )
2, 대기는 메인 이벤트이 시간을 볼 수
선택 TO_CHAR (sample_time를 ' YYYY-MM-DD HH24 : MI ' ), 이벤트 카운트 ( * ) 발 DBA_HIST_ACTIVE_SESS_HISTORY 여기서 snap_id 에서 ( 116,604 , 116,605 ) 과 sample_time > = TO_DATE ( ' 2019년 12월 3일 15시 10분 ' , " YYYY-MM-DD HH24 : MI ' ) 그룹 에 의해 TO_CHAR (sample_time, " YYYY-MM-DD HH24 : MI ' ), 이벤트의 순서 에 의해 1 ,3 ;
![](https://img2018.cnblogs.com/common/1370121/201912/1370121-20191204163914165-60176968.png)
경쟁, ENQ - HW : TX - 행 잠금 경합 위의 분석에서 그것은 대기 이벤트 ENQ로 볼 수있다
3. 위의 문은 (526awsta39934를) 실행에 의해 생성되는 이벤트를 볼 수 기다리고 있습니다
선택 , t.instance_number t.sample_time, t.session_id, t.session_serial # t.sql_id, t.event, t.blocking_session, t.blocking_inst_id, t.program, t.machine 발 DBA_HIST_ACTIVE_SESS_HISTORY t 여기서 snap_id 에서 ( 116,604 , 116,605 ) 과 TO_CHAR (sample_time, " YYYY-MM-DD HH24 : MI ' ) = ' 2019년 12월 3일 15시 39분 ' 및 이벤트 에 ( ' ENQ : TX - 행 잠금 경합 ' , ' ENQ : HW - 경쟁 ' ) 순서 에 의해 2 , 1 ;
![](https://img2018.cnblogs.com/common/1370121/201912/1370121-20191204164132491-1580787550.png)
4 '526awsta39934'발생로서 상기 SQL_ID에 따라 'ENQ : HW는 - 경쟁'고수위 경합 이벤트 문장을 볼
INSERT INTO TRANSACTION_LOG의 VALUES (: B1 : B2 : B3 : B4 : B5 : B6 : B7 : B8 : B9 : B10 : B11 : B12 : B13 : B14 : B15)
5, 3 단계에 따라 '을 ENQ : TX - 행 로크 경합'단리 할 수 광고 잠금 세션 ID 차단
세션 ID 위의 방해가 차단 정확히 SQL_ID '526awsta39934'에 따라 찾아보실 수 있습니다
선택 , t.instance_number t.sample_time, t.session_id, t.session_serial # t.sql_id, t.event, t.blocking_session, t.blocking_inst_id, t.program, t.machine 발 DBA_HIST_ACTIVE_SESS_HISTORY t snap_id 에서 ( 116,604 , 116,605 ) 및 / * sample_time> = TO_DATE ( '2019년 12월 3일 15시 10분', 'YYYY-MM-DD HH24 : MI') 및 * / TO_CHAR (sample_time, " YYYY-MM-DD HH24 : MI ' ) = ' 2019년 12월 3일 15시 39분 ' 및 t.session_id 의 ( 2531 , 3595 , 2128 , 3208 , 3555 , 5598 , 168 ) 및 t.instance_number = 2 - 과의 이벤트 ( 'ENQ : TX - 행 잠금 경합', 'ENQ : HW - 경쟁') 순서 에 의해 2 , 1 ;
![](https://img2018.cnblogs.com/common/1370121/201912/1370121-20191204164524888-1415545048.png)
6 합산
由上面可以分析当大量高并发语句‘526awsta39934’,往数据库中插入数据会去查看数据块高水位线下的可用块,正好此时表空间users处于自动扩展,同时其他的会话也在插入数据或修改数据,也需要高水位线下的可用块。最终引起了行锁。
ps:关于oracle高水位线参考
https://www.cnblogs.com/linjiqin/archive/2012/01/15/2323030.html