【DB2】delete大表不记录日志的正确操作
一、原始方法
在删除大表的时候,经常会由于数据量太大,造成日志文件满了,接着无法删除数据.
以下是删除大表不记录日志的具体步骤:
1.临时设置自动提交关闭
(使用命令db2 list command options查看Auto-Commit参数状态是否为OFF,如果不是则使用db2set DB2OPTIONS=+c永久关闭)
update command options using c off
2.设置不记录日志
ALTER TABLE tabname ACTIVATE NOT LOGGED INITIALLY
3.删除数据
DELETE FROM tabname where …
4.手动提交
COMMIT
5.打开自动提交
(如果关闭使用使用db2set DB2OPTIONS=+c,则开启使用db2set DB2OPTIONS=-c)
update command options using c on
Tips:
不记录日志与删除数据必须在同一事务进行才有效,若执行顺序为:not logged → commit → delete.. 则not logged失效;
二、精简方法
以下以表tmp为例子,往表插入大量数据并报日志满了
那么如何解决这个问题呢?
1.首先连接好数据库
db2 connect to qindb user db2inst1 user db2inst1
2.设置表不记录日志
db2 +c "ALTER TABLE len.tmp activate NOT LOGGED initially"
3.插入表数据
db2 +c "insert into len.tmp select * from len.tmp"
4.提交
db2 commit;
以下是真实操作截图
声明:书写博客不易,转载请注明出处,请支持原创,侵权将追究法律责任
个性签名:人的一切的痛苦,本质上都是对自己无能的愤怒
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!