1、连接数据库

db2 connect to database_name user user_name using password

(备注:如 db2 connect to test_data user aaa using bbb 即用用户aaa密码bbb登录test_data数据库)

2、查询正在执行的长sql,存过的 AGENT_ID号

db2 "select AGENT_ID,appl_name,stmt_text from sysibmadm.long_running_sql" |grep -i   sql_code

(备注:sql_code即为你执行的sql的语句的关键词,比如select ,delete,insert表名字段名等)

3、查看 agentid 为13349的执行sql内容

db2 get snapshot for application agentid 13349  

4、杀掉正在执行的 agentid 为13349的sql语句

db2 "force application (  13349 )" 

此时正在执行的某个sql进程就被杀掉了。可以再执行步骤2查询发现刚才的sql进程已不存在。

注:如果上面实现不了,则继续看下面的

二、DB2查看死锁进程以及杀死死锁进程

方法一:

使用SecureCRT

db2 "get snapshot for locks on 数据库名"
db2 "force application(进程hander)"


杀掉死锁进程

方法二:

用管理员帐户登陆,在"管理员模式下"

使用select agent_id,tabname,lock_mode from table(snap_get_lock('BL_DEVP')) as aa


查看:进程hander,表名,锁模式
然后进控制中心,选择对应数据库,右键选择"应用程序",找到对应进程hander,选"强制"杀掉死锁进程
 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐