Skip to content

SQL执行挂起排查

虚谷数据库SQL请求由任务线程(type=9)执行,发生SQL执行挂起时,可能原因有锁等候、资源等候、正在执行大任务等原因。此时需要通过操作系统命令和数据库相关系统表确认具体原因,排查流程有如下规定:

  1. 使用系统管理员SYSDBA登录系统库SYSTEM。

  2. 确定挂起SQL执行线程,查看线程状态(state)。

    select * from sys_all_thd_session where sql like '执行sql';
    select * from sys_all_thd_session;
  3. 线程状态为运行态(state=1)。

  4. 使用pstack命令打印线程堆栈(参数使用sys_all_thd_session.thd_id),多个线程挂起直接使用进程号。

  5. 使用strace确认线程是阻塞还是运行态。

    strace -p thd_id
    • 阻塞态:输出值无变化
    • 运行态:持续输出系统调用

说明:

有gdb但无pstack可使用gstack脚本