免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3211 | 回复: 2
打印 上一主题 下一主题

DB2 死锁 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-04 15:15 |只看该作者 |倒序浏览
一个是C程序。另一个是java的web程序。它们共同作用于A表。
C程序对A表,先是清空;再是插入数据。然后一起提交。
java的web程序是对A表进行检索。
当C程序跑的时候。大概2分钟左右能跑完。
这个时候要是在画面上java访问A表的话,就会造成死锁C程序报错。
个人感觉不是超时,因为 Lock timeout (sec)  (LOCKTIMEOUT) = 720
实在是搞不定,望帮忙!
++++++++++++++++++++++++++++++++++++++++++++++++++++
++ ProgramID: (911)  StartTime: [2009/09/12 11:01:15]
SQL Insert Error code   : -911
           Input Count  : 39043
Input(All)    count = 66666
Input(Select) count = 60000
Input(Skip)   count = 666
param         count = 25
Update        count = 0
Insert        count = 0
++ ProgramID: (911)  EndTime  : [2009/09/12 11:03:10]
++++++++++++++++++++++++++++++++++++++++++++++++++++

Dynamic SQL Query management           (DYN_QUERY_MGMT) = = DISABLE
                                                           
Discovery support for this database       (DISCOVER_DB) = = ENABLE
                                                           
Default query optimization class         (DFT_QUERYOPT) = = 5
Degree of parallelism                      (DFT_DEGREE) = = 1
Continue upon arithmetic exceptions   (DFT_SQLMATHWARN) = = NO
Default refresh age                   (DFT_REFRESH_AGE) = = 0
Number of frequent values retained     (NUM_FREQVALUES) = = 10
Number of quantiles retained            (NUM_QUANTILES) = = 20
                                                           
Backup pending                                          = = NO
                                                           
Database is consistent                                  = = NO
Rollforward pending                                     = = NO
Restore pending                                         = = NO
                                                           
Multi-page file allocation enabled                      = = NO
                                                           
Log retain for recovery status                          = = RECOVERY
User exit for logging status                            = = YES
                                                           
Data Links Token Expiry Interval (sec)      (DL_EXPINT) = = 60
Data Links Write Token Init Expiry Intvl(DL_WT_IEXPINT) = = 60
Data Links Number of Copies             (DL_NUM_COPIES) = = 1
Data Links Time after Drop (days)        (DL_TIME_DROP) = = 1
Data Links Token in Uppercase                (DL_UPPER) = = NO
Data Links Token Algorithm                   (DL_TOKEN) = = MAC0
                                                           
Database heap (4KB)                            (DBHEAP) = = 5000
Size of database shared memory (4KB)  (DATABASE_MEMORY) = = AUTOMATIC
Catalog cache size (4KB)              (CATALOGCACHE_SZ) = = (MAXAPPLS*4
Log buffer size (4KB)                        (LOGBUFSZ) = = 512
Utilities heap size (4KB)                (UTIL_HEAP_SZ) = = 6000
Buffer pool size (pages)                     (BUFFPAGE) = = 1000
Extended storage segments size (4KB)    (ESTORE_SEG_SZ) = = 16000
Number of extended storage segments   (NUM_ESTORE_SEGS) = = 0
Max storage for lock list (4KB)              (LOCKLIST) = = 5000
                                                           
Max size of appl. group mem set (4KB) (APPGROUP_MEM_SZ) = = 30000
Percent of mem for appl. group heap   (GROUPHEAP_RATIO) = = 70
Max appl. control heap size (4KB)     (APP_CTL_HEAP_SZ) = = 512
                                                           
Sort heap thres for shared sorts (4KB) (SHEAPTHRES_SHR) = = (SHEAPTHRES
Sort list heap (4KB)                         (SORTHEAP) = = 4096
SQL statement heap (4KB)                     (STMTHEAP) = = 4096
Default application heap (4KB)             (APPLHEAPSZ) = = 10000
Package cache size (4KB)                   (PCKCACHESZ) = = (MAXAPPLS*8
Statistics heap size (4KB)               (STAT_HEAP_SZ) = = 10000
                                                           
Interval for checking deadlock (ms)         (DLCHKTIME) = = 180000
Percent. of lock lists per application       (MAXLOCKS) = = 10
Lock timeout (sec)                        (LOCKTIMEOUT) = = 720
                                                           
Changed pages threshold                (CHNGPGS_THRESH) = = 60
Number of asynchronous page cleaners   (NUM_IOCLEANERS) = = 6
Number of I/O servers                   (NUM_IOSERVERS) = = 8
Index sort flag                             (INDEXSORT) = = YES
Sequential detect flag                      (SEQDETECT) = = YES
Default prefetch size (pages)         (DFT_PREFETCH_SZ) = = 32
                                                           
Track modified pages                         (TRACKMOD) = = OFF
                                                           
Default number of containers                            = = 1
Default tablespace extentsize (pages)   (DFT_EXTENT_SZ) = = 32
                                                           
Max number of active applications            (MAXAPPLS) = = AUTOMATIC
Average number of active applications       (AVG_APPLS) = = 5
Max DB files open per application            (MAXFILOP) = = 1000
                                                           
Log file size (4KB)                         (LOGFILSIZ) = = 10000
Number of primary log files                (LOGPRIMARY) = = 5
Number of secondary log files               (LOGSECOND) = = 25
Changed path to log files                  (NEWLOGPATH) = =
Overflow log path                     (OVERFLOWLOGPATH) = =
Mirror log path                         (MIRRORLOGPATH) = =
First active log file                                   = = S0005266.LO
Block log on disk full                (BLK_LOG_DSK_FUL) = = NO
Percent of max active log space by transaction(MAX_LOG) = = 0
Num. of active log files for 1 active UOW(NUM_LOG_SPAN) = = 0
                                                           
Group commit count                          (MINCOMMIT) = = 1
Percent log file reclaimed before soft chckpt (SOFTMAX) = = 100
Log retain for recovery enabled             (LOGRETAIN) = = RECOVERY
User exit for logging enabled                (USEREXIT) = = ON
                                                           
Auto restart enabled                      (AUTORESTART) = = ON
Index re-creation time                       (INDEXREC) = = SYSTEM (RES
Default number of loadrec sessions    (DFT_LOADREC_SES) = = 1
Number of database backups to retain   (NUM_DB_BACKUPS) = = 12
Recovery history retention (days)     (REC_HIS_RETENTN) = = 366

[ 本帖最后由 doushi 于 2009-11-5 09:01 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-11-04 15:50 |只看该作者
好久不写程序了,已经生疏了。。。
数据库不是可以使用dirtyread吗,这样就可以突破锁的问题了,但是这种操作要结合你的应用来分析是否可以使用,别读出来了垃圾数据造成不良后果

[ 本帖最后由 onlywxw 于 2009-11-4 15:51 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-12-25 13:26 |只看该作者
对于这个问题,要看Web程序虽然是读取但采用的那种方式,当然像二楼说的
采用UR隔离级别可以,读到数据但可能是不正确的结果。

如果想确定是否是死锁:

可以将db2 monitor打开
使用db2 get monitor switches   可以查看是否打开了监控器。
然后使用

db2 update monitor switches using lock on statement on
等语句将其开关打开。

使用 db2 get snapshot for locks on dbname 或是
       db2  get snapshot for locks for application agentid appl-handler
其中 appl-handler 可从 db2 list applications all 中获得。

建议你的超时时间不要设置为720秒 ,应该缩短, 并且你的数据库参数死锁检测时间
应由原来三分钟更改为短些,方便您调试跟踪,查明问题后再调回。

另外可以使用时间检测器来捕获你的信息。

    个人建议,你清空表数据需要2分钟,时间过长,考虑是否需要在事物控制范围内,如不需要则
采用 import from 方式清空应该在瞬间就可以完成。这种锁应该就不存在了。具体的情况不了解,
只提供参考意见。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP