CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  SQL Anywhere Studio

老是出现错误1562怎么办?help me!

楼主danyh(但凡)2002-03-28 15:05:01 在 其他数据库开发 / SQL Anywhere Studio 提问

我最近写的程序每当更新,插入的数据量过大时就会报错:1562。  
  01562,   00000,   "failed   to   extend   rollback   segment   number   %s"  
  //   *Cause:   Failure   occurred   when   trying   to   extend   rollback   segment  
  //   *Action:   This   is   normally   followed   by   another   error   message   that   caused  
  //                   the   failure.   You   may   take   the   rollback   segment   offline   to   perform  
  //                   maintainence.   Use   the   alter   rollback   segment   offline   command  
  //                   to   take   the   rollback   segment   offline.  
  我查看过解释,应该是说回滚段空间不够了,我现在更新,插入的数据量大概有500万条左右,我现在分配的回滚段是1000M,这样还不够吗?那么要分配多大的回滚段才够用呢?还是在写程序时我应该注意些其他的什么问题呢?  
   
  问题点数:100、回复次数:13Top

1 楼liyijin(斯夫)回复于 2002-03-28 15:32:27 得分 0

一次事务的提交的数据量太大,为此事务指定一个大回滚段  
  如果可能最好是分多次提交就可以了,这样就是每个回滚段都很小都没有什么问题Top

2 楼liyijin(斯夫)回复于 2002-03-28 15:33:00 得分 0

一个事务只可以用一个回滚段Top

3 楼jornk(咸鱼)回复于 2002-03-28 15:44:10 得分 0

1.减小你的事务,  
  2.为你的事务指定一个大一点的回滚段Top

4 楼danyh(但凡)回复于 2002-03-28 16:05:27 得分 0

可是实际情况是必须要同时一次性提交,不能分成多次.  
  而且1000M也不算小了吧.Top

5 楼fangss()回复于 2002-03-28 17:45:42 得分 0

你的数据量太大了呀,再设置大点吧,大方点~~~Top

6 楼xzou(亡狼补齿)回复于 2002-03-28 18:09:02 得分 0

create   public   rollback   segment   rb01   storage(initial   1000m   next   10m);  
  先不要把rb01online  
  你在插入前需要先使用  
  alter   rollback   segment   rb01   online;  
  set   transaction   use   rollback   segment   rb01;  
  ...........................insert   ...........  
  commit;  
  alter   rollback   segment   rb01   offline;  
  这样不行吗?Top

7 楼danyh(但凡)回复于 2002-03-28 20:10:28 得分 0

这样也许可以,但是可能当时会有其他进程在使用回滚段,因此这样作又不行了。Top

8 楼KingSunSha(弱水三千)回复于 2002-03-28 20:45:35 得分 0

小狼说的应该是最好的办法了,为大的事务临时指定回滚段。  
  总觉得这么大的任务的时候不应该和别的任务同时执行Top

9 楼offsider(烤鸡翅膀,我最爱吃)回复于 2002-03-28 22:45:15 得分 0

怎么可能必须同时insert   500万条呢?  
  想个办法控制一下,每10万条commit一下,就不会有这个问题了。Top

10 楼xzou(亡狼补齿)回复于 2002-03-29 09:37:30 得分 0

to   danyh:  
  就是让你先做你个大的回滚段,先让他处于offline状态,然后当你使用大事务时再将其online,然后指定你的事务使用该回滚段,这样已经是最好的方法了。但是online时也不能保证别人不用,但至少保证尽可能少的事务使用此回滚段。  
  难道你的方法保证不会有其他进程在使用回滚段?那请说出来Top

11 楼danyh(但凡)回复于 2002-03-29 14:00:05 得分 0

我明白你们的意思了,现在我又分配了1000M的回滚段,我再测试看看效果如何吧。而且我发现一个问题,就是数据库刚启动的时候就已经有480M的回滚段被占用了,这是为什么?而且回滚段的释放很慢,每次都要强制释放才行。  
  ps:to   xzou,哈哈,我可不知道什么不许其他进程使用某个回滚段的方法。Top

12 楼mycode(不写代码)回复于 2002-03-30 18:33:08 得分 0

还是不要一次提交太多的事务,将一个大的事务分割成多个小的事务来处理。Top

13 楼dan_dan()回复于 2002-04-02 19:34:50 得分 100

2G的回滚段空间对于500万的数据量是不够的,还是加点吧!Top

相关问题

  • 出现这个错误怎么办?
  • 数据更新出现错误,怎么办?
  • 使用openpicturedialog时出现严重错误,怎么办?
  • 出现“initialization or shutdown in progress"这个错误应该怎么办?????
  • JBuilder6+weblogic编译ejb出现错误,怎么办?
  • BCB中内嵌汇编出现“:Privileged instruction”的错误,怎么办?
  • 程序编译时出现下列错误,怎么办?
  • 在VB6.0中引用部件总是出现错误,怎么办?
  • 安装.net出现“内部错误2337”怎么办?
  • 编译时出现以下错误该怎么办?

关键词

  • 数据
  • 回滚
  • 事务
  • rollback segment
  • offline
  • rb01
  • 提交
  • 插入
  • 使用
  • 指定

得分解答快速导航

  • 帖主:danyh
  • dan_dan

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo