【DB2】delete大表不记录日志的正确操作
一、原始方法
在刪除大表的時候,經(jīng)常會由于數(shù)據(jù)量太大,造成日志文件滿了,接著無法刪除數(shù)據(jù).
以下是刪除大表不記錄日志的具體步驟:
1.臨時設(shè)置自動提交關(guān)閉
(使用命令db2 list command options查看Auto-Commit參數(shù)狀態(tài)是否為OFF,如果不是則使用db2set DB2OPTIONS=+c永久關(guān)閉)
update command options using c off
2.設(shè)置不記錄日志
ALTER TABLE tabname ACTIVATE NOT LOGGED INITIALLY?
3.刪除數(shù)據(jù)
DELETE FROM tabname where …
4.手動提交
COMMIT
5.打開自動提交
(如果關(guān)閉使用使用db2set DB2OPTIONS=+c,則開啟使用db2set DB2OPTIONS=-c)
update command options using c on
Tips:
不記錄日志與刪除數(shù)據(jù)必須在同一事務(wù)進(jìn)行才有效,若執(zhí)行順序為:not logged → commit → delete.. 則not logged失效;
二、精簡方法
以下以表tmp為例子,往表插入大量數(shù)據(jù)并報日志滿了
那么如何解決這個問題呢?
1.首先連接好數(shù)據(jù)庫
db2 connect to qindb user db2inst1 user db2inst1
2.設(shè)置表不記錄日志
db2 +c "ALTER TABLE len.tmp activate NOT LOGGED initially"
3.插入表數(shù)據(jù)
db2 +c "insert into len.tmp select * from len.tmp"
4.提交
db2 commit;
以下是真實操作截圖
轉(zhuǎn)載于:https://www.cnblogs.com/OliverQin/p/10219108.html
總結(jié)
以上是生活随笔為你收集整理的【DB2】delete大表不记录日志的正确操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于代码效率提升的方法心路历程(购物车)
- 下一篇: firewalld防火墙简介