今天,收到客户的邮件说上周每天早上10点多,数据库都会有很多锁,收集了下客户的AWR信息,发现排在TOP5第二位的就是enq: TX - row lock contention。
SQL> select SESSION_ID,SESSION_SERIAL#,SQL_ID v$active_session_history where event='enq: TX - row lock contention';
SESSION_ID SESSION_SERIAL# SQL_ID
---------- --------------- -------------
514 34342 6drpquxz79cyv
808 25670 6drpquxz79cyv
...
...
sql_id为6drpquxz79cyv的输出5.8万多行,时间基本都是上午10:30.
根据SQL_ID在AWR报告中找到了对应的SQL语句
SQL Id
SQL Text
6drpquxz79cyv |
INSERT INTO I_STORE_ORDER_DETAIL(SEQ_ID, STORE_ORDER_CODE, STORE_ORDER_ID, GOODS_ID, PAY_CONTRACT_CODE, GOODS_CODE, GATTR1, GATTR2, GATTR3, GATTR4, GATTR5, PURCHASE_TYPE, WAREHOUSE_CODE, UNIT_PRICE, QTY, CUSTOMER_CODE, PURCHASE_CONTRACT_CODE, SALE_CONTRACT_CODE, WEIGHT, PIECE, DEPARTMENT_USER, REMARK, CREATE_PERSON, CREATE_DATE, UPDATE_PERSON, UPDATE_DATE, S_VERSION, S_FROM_SYSTEM_ID, S_TO_SYSTEM_ID, S_METHOD_TYPE) VALUES( :1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19, :20, :21, :22, :23, :24, :25, :26, :27, :28, :29, :30 ) |
客户也不知道这个SQL具体是做什么的,而且这个SQL只能通过修改应用来优化,目前客户正在分析此SQL。
分享到:
相关推荐
### 故障处理:Oracle_lhr_队列等待之TX - row lock contention #### 一、概述 在Oracle数据库管理中,“enq:TX-rowlockcontention”是一种常见的队列等待事件,通常与行级别的锁定冲突有关。这种冲突可能会导致...
- 使用`v$session_wait`视图查找等待类型的`ENQ: TX - row lock contention`或`ENQ: TX - deadlock`。 - 查询`v$deadlock`和`v$deadlock_monitor`视图获取死锁信息。 - 执行`DBMS_LOCK.MONITOR`过程来监控死锁...
- 锁等待情况(如ENQ: TX - ROW LOCK contention) Prometheus会定期抓取oracledb-exporter提供的这些指标,并根据预设的规则进行报警和可视化展示。你可以利用Prometheus的Alertmanager设置告警规则,当特定指标...
数据库性能分析显示,主要的性能瓶颈在于用户I/O,尤其是db file sequential read和db file scattered read事件,以及enq: TX - row lock contention,这些都可能导致新Session无法启动或需要更多内存来处理更多的...
例如,对于"enq:TX - row lock contention"这类等待事件,可能需要考虑事务的并发控制策略或锁的粒度。 总之,Oracle 10g的等待界面改进极大地增强了DBAs在性能监控和问题诊断方面的能力。结合ADDM的自动化分析和...
- **enq:TX-rowlock contention**:行级锁争用,表示两个或多个会话尝试在同一行上执行不兼容的操作。 - **latch free**:闩锁等待,表示进程正在等待一个当前被其他进程占用的闩锁。 #### 三、使用与查看数据库...
1. **等待事件类型**:`EVENT`字段列出了具体的等待事件名称,如“db file sequential read”表示顺序读取数据库文件,“enq: TX - row lock contention”表示行级锁竞争。 2. **等待时长**:`TIME_WAITED`字段提供...
WHERE event LIKE 'enq: TX - row lock contention' OR event LIKE '%wait%'; -- 杀死会话 ALTER SYSTEM KILL SESSION 'sid,serial#'; ``` ##### 2.4 检查系统空间占用 - **工具选择**:使用操作系统自带的...
以SID为269的会话为例,如果它正等待enq:TX — row lock contention事件,意味着它在等待另一个会话释放锁。在Oracle 10g之前,找出阻塞会话可能需要编写资源密集型查询,但在10g中,只需简单查询v$session就能找到...
- **行锁争用(enq:TX – row lock contention)**:在并发事务处理中,行锁争用是常见的问题之一。当多个事务尝试同时修改同一数据行时,就可能发生此类等待事件。 - **用户I/O**: - 单块读取(single block read...