免费注册 查看新帖 |

Chinaunix

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

敬请执教 SQL0964C The transaction log for the database is full. SQLSTATE=57011 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-19 11:37 |只看该作者 |倒序浏览
当应用程序一次删除大量的数据时数据库就会报错
SQL0964C The transaction log for the database is full.  SQLSTATE=57011
一次操作少量的数据则不会出现上述问题,我现在搞不清数据库到底使用的是循环日志还是归档日志。
如果使用的是循环日志,为什么还会说The transaction log for the database is full,如果使用的
是归档日志,当日志文件已满后,当操作少量数据时也应该报The transaction log for the database is full。

数据库中和日志有关的配置如下

日志缓冲区大小(4KB)                   (LOGBUFSZ) = 50
日志文件大小(4KB)                      (LOGFILSIZ) = 3000
主日志文件的数目                        (LOGPRIMARY) = 6
辅助日志文件的数目                       (LOGSECOND) = 4
启用的恢复的日志保留                     (LOGRETAIN) = OFF
启用的记录的用户出口                        (USEREXIT) = OFF

敬请高手指教!致谢!

论坛徽章:
0
2 [报告]
发表于 2007-10-19 12:27 |只看该作者
使用的是循环日志,之所以报错,是因为单个事务写满了全部6个主日志和4个辅助日志之后事务还没有完成提交。
增大辅助日志数目应该可以解决,但会影响性能,改为循环日志也许可以解决,或者增大logfilsiz

[ 本帖最后由 zhaosanyin 于 2007-10-19 12:36 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-10-20 18:53 |只看该作者
从数据库的配置来看,可用的日志空间为
4KB * 3000 * (6 + 4) = 120000 KB,我一次操作的日志不应该有这么大呀。

论坛徽章:
0
4 [报告]
发表于 2007-10-21 13:40 |只看该作者
如果你还有疑问,可以检查db cfg的max_log及NUM_LOG_SPAN是否都为0。(一般情况下因为这两个参数限制log使用会返回SQL1224N)

加大日志或增加日志数量是其中一种解决办法。

论坛徽章:
0
5 [报告]
发表于 2007-10-21 20:06 |只看该作者
max_log及NUM_LOG_SPAN确实是0

论坛徽章:
0
6 [报告]
发表于 2007-10-22 07:34 |只看该作者
既然能排除是max_log及NUM_LOG_SPAN因数,就更应该修改log文件大小或增加log文件个数了。

论坛徽章:
0
7 [报告]
发表于 2007-10-22 10:31 |只看该作者
如果对使用多少LOG有疑问的话,可以在操作的时候观察几个LOG文件的时间,看是否全部更新后操作还没有结束……
如果是,那就说明一次操作使用了所有的LOG,不够的话,就报错了。

论坛徽章:
0
8 [报告]
发表于 2007-10-22 11:25 |只看该作者
原帖由 liudaqin 于 2007-10-19 11:37 发表
当应用程序一次删除大量的数据时数据库就会报错
SQL0964C The transaction log for the database is full.  SQLSTATE=57011
一次操作少量的数据则不会出现上述问题,我现在搞不清数据库到底使用的是循环日志还 ...

其实二楼的解释已经很清楚了。
logretain 为 OFF,说明使用循环日志;
报SQL0964C错误,说明提交一次事物需要的日志就超出了你所有的循环日志大小,建议1000行左右提交一次,或者增加日志大小和日志个数。

论坛徽章:
0
9 [报告]
发表于 2007-10-22 14:32 |只看该作者
你这个问题与你是循环日志还是归档日志无关
你现在是活动日志太小

上面的哥们都解释很清楚了
max_log及NUM_LOG_SPAN确实是0 , 说明我们下一步只能去增大log或者增加log

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



再然后就可以考虑一下,不要搞到大事务的提交,分开commit最好

论坛徽章:
0
10 [报告]
发表于 2007-10-23 13:54 |只看该作者
多谢诸位!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP