iT邦幫忙

0

MS SQL 2000 LDF不斷增大,怎麼辦?

各位大大你們好,公司有一台很舊的server,使用sql2000,使用者回報後端程式不定時回應時間拉長,我這邊查檢的結果是LDF增長設定為10 percent,增長期間程式程式便會等待回應。

但我檢查備份模式設置為簡易,LDF理應可以自動truncate使之能重複運用,為何還會不斷的增長呢?

以下附上我目前所有的查檢過程。

1.確認復原模式為簡易模式。
2.已經使用DBCC OPTRAN來確認沒有交易孤兒。
3.手動下達checkpoint,LOG truncate沒問題,空間會釋放出來。
4.該資料庫無設置複寫(保險起見也下語法移除複寫設置)。
5.使用 dbcc traceon(3502)檢查LDF檔於使用達70%時未觸發checkpoint來truncate LDF。其餘相同伺服器的DB於70%會自動觸發checkpoint釋放LDF空間。
6.使用 DBCC CheckDB來檢查資料庫是否異常也沒有。
7.該資料庫使用幾乎沒有insert語法僅有update與一些交易序列(這個情報不知道有沒有用處)
8.完整備份過數次,備份完雖然會觸發checkpoint,truncate ldf,但之後狀況相同LDF持續增長。
9.備份該資料庫移往其餘伺服器(sql2000)進行測試,持續增長情況消失,會自動truncate了。


我的初步結論為會不會是:
1.資料庫設定有被更動,讓checkpoint不會於ldf達70%觸發。
2.資料庫特定語法造成自動truncate不發生。(移往其餘伺服器測試的推論)
3.上次備份方式異常,造成LDF必須被保留。(沒根據胡亂猜測)
註解:
1.sql2000沒有 sys.databases 系統View表,我沒辦法去看為啥LDF不能truncate
2.目前暫時設置一個禮拜備份一次,讓checkpoint觸發,問題雖然解決但就是覺得不甘心

有任何大大有遇過相關的問題嗎?

James iT邦大師 7 級 ‧ 2019-10-22 10:03:07 檢舉
所以目前解決方式是一週備份一次,那原本都不備份嗎?有用什麼特殊管理方式確保資料安全嗎?
其實我的概念認為,做完備份才清LOG是正常的,不知道為什麼你會覺得有問題。

2 個回答

1
raytracy
iT邦大神 1 級 ‧ 2019-10-19 22:58:50

SQL 2000 Log 可以被自動 Truncate 的條件有:

當 Recovery mode 設定成 Simple mode 時:

  1. Checkpoint 被觸發
  2. Transaction 被 Commit

當 Recovery mode 設定成 Full 或 bulk logged mode 時:

  1. 執行 log 備份之後, 且沒有 Mirror 或 Replication 作業
  2. 將 Recovery mode 變成成 Simple mode
  3. 備份 Log 時下了 TRUNCATE_ONLY 的參數

我猜你正常的 Server 使用 Simple mode, 不正常的則不是....

kinyo7462 iT邦新手 5 級 ‧ 2019-10-19 23:04:42 檢舉

大大 兩台server的db皆為simple 恢復模式,我做過一些基本問題排除,可惜問題感覺超出我的知識水平了

kinyo7462 iT邦新手 5 級 ‧ 2019-10-19 23:06:04 檢舉

出問題的server. Checkpoint於70趴ldf使用量時沒觸發

1
freedr
iT邦新手 5 級 ‧ 2019-10-21 04:08:18

曾經遇到的實際案例是,因為系統交接時,並無交接文件,資料庫管理員也認為資料庫並沒有其他 insert 操作,但是詳細排查後,才發現作業系統有一支背景程式,不時會將資料庫相關的應用系統日誌紀錄(Log) insert into Table ,因而產生交易紀錄。直到關閉了該背景程式,才落幕。

kinyo7462 iT邦新手 5 級 ‧ 2019-10-24 22:44:58 檢舉

感謝大大的回覆,不過使用profile檢查並未發現異常程式

我要發表回答

立即登入回答