可以查看有关会话、锁定使用情况和锁定等待的信息。
如果应用程序执行 SET LOCK MODE TO WAIT,那么数据库服务器将等待锁被释放,而不是返回一条错误。异乎寻常的长时间等待锁会给用户造成应用程序挂起的印象。
图: 显示锁定使用情况的 onstat -u 输出
onstat -u Userthreads address flags sessid user tty wait tout locks nreads nwrites 40072010 ---P--D 7 gbasedbt - 0 0 0 35 75 400723c0 ---P--- 0 gbasedbt - 0 0 0 0 0 40072770 ---P--- 1 gbasedbt - 0 0 0 0 0 40072b20 ---P--- 2 gbasedbt - 0 0 0 0 0 40072ed0 ---P--F 0 gbasedbt - 0 0 0 0 0 40073280 ---P--B 8 gbasedbt - 0 0 0 0 0 40073630 ---P--- 9 gbasedbt - 0 0 0 0 0 400739e0 ---P--D 0 gbasedbt - 0 0 0 0 0 40073d90 ---P--- 0 gbasedbt - 0 0 0 0 0 40074140Y-BP---81 lsuto 4 50205788 0 4 106 221 400744f0 --BP--- 83 jsmit - 0 0 4 0 0 400753b0 ---P--- 86 worth - 0 0 2 0 0 40075760 L--PR--84 jones 3 300b78d8 -1 2 0 0 13 active, 128 total, 16 maximum concurrent onstat -k Locks address wtlist owner lklist type tblsum rowid key#/bsiz 300b77d0 0 40074140 0 HDR+S 10002 106 0 300b7828 0 40074140 300b77d0 HDR+S 10197 122 0 300b7854 0 40074140 300b7828 HDR+IX 101e4 0 0 300b78d84007576040074140300b7854 HDR+X 101e4 100 0 300b7904 0 40075760 0 S 10002 106 0 300b7930 0 40075760 300b7904 S 10197 122 0 6 active, 5000 total, 8192 hash buckets
要找到会话标识 84 正在等待的锁定的所有者,请执行下列操作:
要消除争用问题,您可以让用户平稳地退出应用程序。 如果这种方法还无法解决问题,您可以停止应用程序进程,或者使用 onmode -z 除去会话。