【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.0
【问题描述】通过gv$ob_locks可以查询到锁的持有者和等待者信息,但是通过这里面的信息怎么获取到事务正在执行的sql呢,通过trans_id和gv$ob_processlist关联,但是info字段为NULL,看不到sql信息
【复现路径】问题出现前后相关操作
【问题现象及影响】
【附件】
【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.0
【问题描述】通过gv$ob_locks可以查询到锁的持有者和等待者信息,但是通过这里面的信息怎么获取到事务正在执行的sql呢,通过trans_id和gv$ob_processlist关联,但是info字段为NULL,看不到sql信息
【复现路径】问题出现前后相关操作
【问题现象及影响】
【附件】
如果知道session_id的话,可以试试:select * from __all_virtual_session_info where id=xxx;
知道的,通过ob$ob_processlist可以关联出来,我试试
4.2是不是没有这张内部表了呀
有这张表,需要连接sys租户,use oceanbase 数据库,然后执行这条命令。
好的,业务租户还有什么办法可以看到sql吗?
对于正在执行的sql就是通过 gv$ob_processlist 查看哈,然后就是通过session查看。对于已经执行完的sql,可以通过 gv$ob_sql_audit 视图查看,前提是开启了配置项:enable_sql_audit=true
但是锁堵塞场景会话都是sleep了,gv$ob_processlist里面记录为空,gv$ob_sql_audit表又太大了
表大* 换成关键词 看下 https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000220956
select 关键词 from gv$ob_sql_audit limit 0,10;
除了这个表其他没有对应视图可以看到事务当前执行的sql了吗
有时候阻塞事务的id在sql_audit查不到,怎么确认是不是被淘汰掉了呢