SQL执行挂起排查
虚谷数据库SQL请求由任务线程(type=9)执行,发生SQL执行挂起时,可能原因有锁等候、资源等候、正在执行大任务等原因。此时需要通过操作系统命令和数据库相关系统表确认具体原因,排查流程有如下规定:
使用系统管理员SYSDBA登录系统库SYSTEM。
确定挂起SQL执行线程,查看线程状态(state)。
select * from sys_all_thd_session where sql like '执行sql'; select * from sys_all_thd_session;
线程状态为运行态(state=1)。
使用pstack命令打印线程堆栈(参数使用sys_all_thd_session.thd_id),多个线程挂起直接使用进程号。
使用strace确认线程是阻塞还是运行态。
strace -p thd_id
- 阻塞态:输出值无变化
- 运行态:持续输出系统调用
说明:
有gdb但无pstack可使用gstack脚本