免费注册 查看新帖 |

Chinaunix

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

应用程序堆中没有足够的存储量可用来处理语句?如何解决? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-02-03 10:10 |只看该作者 |倒序浏览
配置:rs6000 M85/1GMem,2*36G硬盘
        DB28.0
故障现象:用Delphi6.0 开发一个应用程序,其功能是从SQL数据库把数据写到DB2数据库,每写100条记录提交一次,当写了一百多万条记录后,
提示:SQL0954C  应用程序堆中没有足够的存储量可用来处理语句。  SQLSTATE=57011],同时提示:“日志空间已满”,
请各位高手帮忙看一下数据库的参数设置是否合理。
附件:

数据库配置发行版级别                    = 0x0a00
数据库发行版级别                                  = 0x0a00

数据库领域                                      = CN
数据库代码页                                      = 1386
数据库代码集                                       = GBK
数据库国家/地区代码                            = 86

动态 SQL 查询管理           (DYN_QUERY_MGMT) = DISABLE

对此数据库的 Discovery 支持       (DISCOVER_DB) = ENABLE

缺省查询优化类         (DFT_QUERYOPT) = 5
并行度                      (DFT_DEGREE) = 1
在算术异常时继续   (DFT_SQLMATHWARN) = NO
缺省刷新有效期                   (DFT_REFRESH_AGE) = 0
保留的高频值的数目     (NUM_FREQVALUES) = 10
保留的分位点数目            (NUM_QUANTILES) = 20

备份暂挂                                          = NO

数据库是一致的                                  = NO
前滚暂挂                                     = NO
复原暂挂                                         = NO

启用的多页文件分配                      = NO

恢复状态的日志保留                          = NO
记录状态的用户出口                            = NO

Data Links 标记失效时间间隔(秒)      (DL_EXPINT) = 60
Data Links 写标记初始时间间隔 (DL_WT_IEXPINT) = 60
副本的 Data Links 数目             (DL_NUM_COPIES) = 1
删除后的 Data Links 时间(天数)        (DL_TIME_DROP) = 1
大写的 Data Links 标记                (DL_UPPER) = NO
Data Links 标记算法                           (DL_TOKEN) = MAC0

数据库堆(4KB)                            (DBHEAP) = 1200
数据库共享内存大小(4KB)  (DATABASE_MEMORY) = AUTOMATIC
目录高速缓存大小(4KB)              (CATALOGCACHE_SZ) = (MAXAPPLS*4)
日志缓冲区大小(4KB)                        (LOGBUFSZ) = 256
实用程序堆大小(4KB)                (UTIL_HEAP_SZ) = 5000
缓冲池大小(页)                     (BUFFPAGE) = 1000
扩充存储段大小(4KB)    (ESTORE_SEG_SZ) = 16000
扩充存储段的数目   (NUM_ESTORE_SEGS) = 0
锁定列表的最大存储量(4KB)              (LOCKLIST) = 100

应用程序组内存集的最大大小(4KB)(APPGROUP_MEM_SZ) = 30000
应用程序组堆的内存百分比  (GROUPHEAP_RATIO) = 70
最大应用程序控制堆大小(4KB)     (APP_CTL_HEAP_SZ) = 128

共享排序的排序堆域值(4KB) (SHEAPTHRES_SHR) = (SHEAPTHRES)
排序列表堆(4KB)                         (SORTHEAP) = 256
SQL 语句堆(4KB)                     (STMTHEAP) = 2048
缺省应用程序堆(4KB)             (APPLHEAPSZ) = 2048
程序包高速缓存大小(4KB)                   (PCKCACHESZ) = (MAXAPPLS*8)
统计信息堆大小(4KB)               (STAT_HEAP_SZ) = 4384

检查死锁的时间间隔(ms)         (DLCHKTIME) = 10000
每个应用程序的锁定百分比列表       (MAXLOCKS) = 10
锁定超时(秒)                        (LOCKTIMEOUT) = -1

更改的页阈值               (CHNGPGS_THRESH) = 60
异步页清除程序的数目   (NUM_IOCLEANERS) = 1
I/O 服务器的数目                   (NUM_IOSERVERS) = 3
索引排序标志                             (INDEXSORT) = YES
顺序检测标志                      (SEQDETECT) = YES
缺省预取大小(页)         (DFT_PREFETCH_SZ) = 32

跟踪修改的页数                         (TRACKMOD) = OFF

容器的缺省数目                            = 1
缺省表空间数据块大小(页)   (DFT_EXTENT_SZ) = 32

活动应用程序的最大数目            (MAXAPPLS) = AUTOMATIC
活动应用程序的平均数目       (AVG_APPLS) = 1
每个应用程序的最大打开 DB 文件数            (MAXFILOP) = 64

日志文件大小(4KB)                         (LOGFILSIZ) = 2500
主日志文件的数目                (LOGPRIMARY) = 3
辅助日志文件的数目               (LOGSECOND) = 2
已更改的至日志文件的路径                   (NEWLOGPATH) =
日志文件路径                                            = /home/db2inst1/db2inst1/NODE0000/SQL00004/SQLOGDIR/
溢出日志路径                     (OVERFLOWLOGPATH) =
镜像日志路径                         (MIRRORLOGPATH) =
第一活动日志文件                                        =
磁盘上已满的块日志                (BLK_LOG_DSK_FUL) = NO
事务使用的最大活动日志空间的百分比(MAX_LOG) = 0
1 个活动 UOW 的活动日志文件的数目 (NUM_LOG_SPAN) = 0

组落实计数                          (MINCOMMIT) = 1
软检查点前回收的日志文件的百分比 (SOFTMAX) = 100
启用的恢复的日志保留             (LOGRETAIN) = OFF写
启用的记录的用户出口                (USEREXIT) = OFF

启用的自动重新启动                      (AUTORESTART) = ON
索引重新创建时间                       (INDEXREC) = SYSTEM (ACCESS)
loadrec 会话的缺省数目    (DFT_LOADREC_SES) = 1
要保留的数据库备份的数目   (NUM_DB_BACKUPS) = 12
恢复历史记录保留(天数)     (REC_HIS_RETENTN) = 366

TSM 管理类                   (TSM_MGMTCLASS) =
TSM 节点名                            (TSM_NODENAME) =
TSM 所有者                                   (TSM_OWNER) =
TSM 密码                             (TSM_PASSWORD) =

论坛徽章:
0
2 [报告]
发表于 2004-02-03 10:54 |只看该作者

应用程序堆中没有足够的存储量可用来处理语句?如何解决?

SQL0954C错误请修改applheapsz参数,扩大至原来的倍数

缺省应用程序堆(4KB) (APPLHEAPSZ) = 2048

日志已满的错误请扩大下面三个参数

日志文件大小(4KB) (LOGFILSIZ) = 2500
主日志文件的数目 (LOGPRIMARY) = 3
辅助日志文件的数目 (LOGSECOND) = 2

论坛徽章:
0
3 [报告]
发表于 2004-02-03 10:58 |只看该作者

应用程序堆中没有足够的存储量可用来处理语句?如何解决?

100W用下面的日志配置?
主日志文件的数目 (LOGPRIMARY) = 3
辅助日志文件的数目 (LOGSECOND) = 2
赶紧扩大吧,建议都在20以上;
dbm cfg中的aslheapsz及db cfg中的APP_CTL_HEAP_SZ、APPLHEAPSZ都扩大

论坛徽章:
0
4 [报告]
发表于 2004-02-03 15:00 |只看该作者

应用程序堆中没有足够的存储量可用来处理语句?如何解决?

偶觉得APPLHEAPSZ已经足够大的了,毋须再大!!!
多大的数据库啊?30-50M的日志显然太小了!
主要还是LOG太小,先扩日志试一下!

论坛徽章:
0
5 [报告]
发表于 2004-02-04 09:20 |只看该作者

应用程序堆中没有足够的存储量可用来处理语句?如何解决?

首先感谢各位的帮助!
在实际应用中,日交易量大概有40万到50万条记录,日志不够大,扩大日志是比较容易的事。
但是,昨天我做了一个实验,把APP_CTL_HEAP_SZ、APPLHEAPSZ的值改为64(4*64k),然后去掉触发器
程序运行了十几个小时,搬运了200多万条记录,没有出现应用程序堆不够的问题。因此我想是
不是触发器的问题,触发器的写法如下,请各路高手帮忙会诊一下?
create trigger Tr_test
after insert on test
REFERENCING NEW AS N
for each row mode db2sql
BEGIN ATOMIC
   insert into aa(af1,af2,af3) values (a,b,c);
   insert into bb(bf1,bf2,bf3) values (c1,c2,c3);
end@
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP