DB2 delete大表不記錄日誌的正確操作

2022-01-30 06:52:39 字數 1299 閱讀 3403

在刪除大表的時候,經常會由於資料量太大,造成日誌檔案滿了,接著無法刪除資料.

以下是刪除大表不記錄日誌的具體步驟:

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;

以下是真實操作截圖

db2 delete 大表不寫日誌方法

最近由於專案需要,用 shell 程式批量刪除業務表資料,但還需要按業務需求保留業務歷史資料,由於專案中用的是 db2,db2 在刪除資料時會產生大量的日誌,會把日誌檔案充滿,會報 57011錯誤.通過在網上查詢一些資料,最終在不改變原表結構引數的基礎上,減少其他們人員的工作量的基礎上動態調整引數。...

oracle上億條記錄大表delete

delete use hash a,b parallel a,15 from tabacca where exists select 1 from temptablea b where a.id b.id and b.type 1 可以試試多個job分工,同時進行。比如開10個job,每個job分十...

Oracle對大表進行delete注意事項

那麼可以注意一下如下說明 檢視執行計畫,如果說刪除的記錄很多,走索引的成本會比全表掃瞄更大,因為更新資料時還需要做一些約束校驗和建立index entry 而且對於多cpu 情況,全表掃瞄還可以使用並行的特性。如果表上有索引,b tree 索引可以unusable 索引,函式索引則disable 索...