Database Monitor(数据库管理器)——捕获活动实例的信息
Database(数据库)—————捕获所有数据库或单个数据库的信息
Applications(应用程序)————-捕获所有应用程序或单个应用程序的信息
Table Space(表空间)————-捕获数据库中各个表空间的信息
Table(表)—————————-捕获数据库中各个表的信息Lock(锁)——————————捕获使用了数据库的应用程序持有的各种锁信息

db2 get snapshot for dbm
db2 get snapshot for database on testdb
db2 get snapshot for tablespaces on testdb
db2 get snapshot for bufferpools on testdb
db2 get snapshot for tables on testdb
db2 get snapshot for locks on testdb
db2 get snapshot for applications on testdb
db2 get snapshot for dynamic sql on testdb

1.监控案例1———动态SQL语句

db2 get snapshot for dynamic SQL on testdb > snap.out
grep -n "Deadlocks detected" snap.out | grep -v "= 0" | more

2.锁表
1。看锁表的情况
db2的命令中:



db2 => get snapshot for locks on testdb

可以看到什么表被锁住了。
其中有一项: Application handle表示进程的标识号。该进程锁住什么表在下面会详细的列出来。

或者​

list application for database testdb show detail

看看应用程序执行的情况
2。断掉连接:

通过

force application all //强行终止所有连接
terminate //清除所有db2的后台进程

将所有的进程全部清除
或者:

force application(进程号),将特定的进程号kill

3.
1.查询锁表情况,可以获取哪个表被锁,其中agent_id为哪个DB2进程锁了表
因为在终端下,不方便看,就把查询结果输出到lock.txt文件里


db2 "export to lock.txt of del select * from sysibmadm.locks_held with ur"

2.拿到上述的agent_id xxx,查询具体锁表的IP和应用程序

db2 list application | grep xxx

3.杀掉这个进程​

db2 " force application(xxx)"

版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux,oracle