在onstat -p的输出结果中,可以看到deadlks表示死锁发生的次数。
如果deadlks的值偏大,就需要在实际环境中抓取和分析死锁产生的SQL语句了。
如何抓取死锁产生的SQL语句呢?
方法一:
1、打开sqltrace,具体方法见前面的某个文章;
2、select * from sysmaster:syssqltrace where sql_sqlerror='-243' and sql_isamerror='-143'
方法二:
1、利用onmode -I [<iserrno>|<session ID>] onmode -I -243
2、onmode -I 停止跟踪
但是根据实际的经验来看,onmode -I的方法貌似不是那么靠谱,可能会出现不可预想的问题,所以我还是推荐使用sqltrace来监控。