【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为例子,往表插入大量数据并报日志满了

image

那么如何解决这个问题呢?

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;

以下是真实操作截图

image


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM