请问db2怎么delete大量数据

ArchiLife 2008-09-05 02:23:00
我的数据库表有大约40w条记录,现在需要删除其中的20w条,但是每次执行delete都报
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0964C The transaction log for the database is full. SQLSTATE=57011

请问该怎么办?

注意,不是全删。
...全文
1692 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
junli0310 2008-09-27
  • 打赏
  • 举报
回复
新建一个空的文件empty.del
运行下面的命令
db2 load from empty.del of del messages msg.out replace into tablename
坚持每日一卒 2008-09-23
  • 打赏
  • 举报
回复
db2 update database cfg for databasename using logprimary 5 deferred
db2 update database cfg for databasename using logfilsiz 100000 deferred
ArchiLife 2008-09-11
  • 打赏
  • 举报
回复
用import来测试了下,好像10w条左右日志就满了。我不是dba,要改配置流程很麻烦。
huanghelang 2008-09-07
  • 打赏
  • 举报
回复
建议直接修改数据库事务日志大小,说实话这个几十万条的记录,肯定是日志文件太小了
北亳-Rayon 2008-09-06
  • 打赏
  • 举报
回复
其实删除的方法有多种,40W删除就能日志满,这说明数据库的参数有问题呀,建议还是改一下数据库的参数吧!
可以先导出不删除的在清表(用load),在导回来,这样可能会好一些。
huoyin 2008-09-06
  • 打赏
  • 举报
回复
我觉得你可以这样做,首先创建一个临时表,这个临时表的表结构和你要删除表一样,然后用将有用的数据导到临时表,然后drop掉当前表并把临时表改为当前表
amwps 2008-09-06
  • 打赏
  • 举报
回复
顶一个,期待正解....
ArchiLife 2008-09-05
  • 打赏
  • 举报
回复
恩,继续研究
liyan93834183 2008-09-05
  • 打赏
  • 举报
回复
那不知道怎么弄了,不过你可先把不删的导出成文件然后再load吧
ArchiLife 2008-09-05
  • 打赏
  • 举报
回复
DB20000I The SQL command completed successfully.
DB20000I The SQL command completed successfully.
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0964C The transaction log for the database is full. SQLSTATE=57011
DB20000I The SQL command completed successfully


[Quote=引用 6 楼 liyan93834183 的回复:]
commit;
ALTER TABLE TABLE activate NOT LOGGED initially;
delete from TABLE where ;
commit;
你试一下这个
[/Quote]
ArchiLife 2008-09-05
  • 打赏
  • 举报
回复
哦,试一下
wguxin 2008-09-05
  • 打赏
  • 举报
回复
ALTER TABLE test activate NOT LOGGED initially

是暂时性的 ,和删除语句一起执行。
liyan93834183 2008-09-05
  • 打赏
  • 举报
回复
commit;
ALTER TABLE TABLE activate NOT LOGGED initially;
delete from TABLE where ;
commit;
你试一下这个
ArchiLife 2008-09-05
  • 打赏
  • 举报
回复
是在delete之前执行么?

还是一样的。

DB20000I The SQL command completed successfully.(alter正确)
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0964C The transaction log for the database is full. SQLSTATE=57011
liyan93834183 2008-09-05
  • 打赏
  • 举报
回复
用这个
ALTER TABLE test activate NOT LOGGED initially
就不计日志了
ArchiLife 2008-09-05
  • 打赏
  • 举报
回复
全删倒是好办,import 空文件就行了。
liyan93834183 2008-09-05
  • 打赏
  • 举报
回复
如果全部删除用这个,如果删除一部分,就去掉WITH EMPTY TABLE
liyan93834183 2008-09-05
  • 打赏
  • 举报
回复
ALTER TABLE test activate NOT LOGGED initially WITH EMPTY TABLE

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧