一、背景
连续好几天半夜出现了长事务,因为是夜间,按照官网的查询方式已经不及时了,接下来描述下详细的查询方式
二、具体排查方式
1.根据事务视图查看
但一般事务视图只能保证几分钟,所以晚几分钟就会看不到
bash
select * FROM GV$OB_TRANSACTION_PARTICIPANTS where TX_ID="571600791";
2.根据sql审计视图查看
- 通过以下参数可以控制 SQL Audit 功能的行为:
- enable_sql_audit:集群配置项,控制全部租户的 SQL Audit 功能是否开启,动态生效。
- ob_enable_sql_audit:租户级别的系统变量,控制当前租户是否开启 SQL Audit 功能,动态生效。
- ob_sql_audit_percentage:租户级别的系统变量,控制当前租户 SQL Audit 功能占用租户内存的百分比,动态生效。为防止 SQL Audit 占用过高内存,系统设置其内存上限为 1GB。
bash
select * from GV$OB_SQL_AUDIT where tx_id=571600791\G
3.根据日志查看
在observer日志中搜索事务id关键字,可以看到能看到对应的trace id和session id,然后在observer日志中分别根据trace id和session id搜索,这样便能确定具体的sql了

三、结论
最终定位到的长事务是 observer 收集统计信息造成的