一、原始方法
在刪除大表的時候,經常會由於數據量太大,造成日志文件滿了,接着無法刪除數據.
以下是刪除大表不記錄日志的具體步驟:
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;
以下是真實操作截圖