因為日志空間滿往往是因為所有的日志均處于活動狀態(tài)導致的. 而COMMIT執(zhí)行后, 會釋放所占據(jù)的資源, 其中包括日志 . 這樣, 被當前事務使用的日志在COMMIT命令執(zhí)行后, 即變成非活動狀態(tài)了. 如何處理日志 -日志處理 DB2日志是以文件的形式存放在文件系統(tǒng)中,分為兩種模式:循環(huán)日志和歸檔日志,。當創(chuàng)建新數(shù)據(jù)庫時,,日志的缺省模式是循環(huán)日志。在這種模式下,,只能實現(xiàn)數(shù)據(jù)庫的脫機備份和恢復,。如果要實現(xiàn)聯(lián)機備份和恢復,必須設為歸檔日志模式,。 目前在綜合業(yè)務系統(tǒng)中,,設置的均是歸檔日志模式;其它系統(tǒng)(如事后監(jiān)督、經(jīng)營決策,、中間業(yè)務等)一般都設置為循環(huán)日志模式,。至于采用何種模式,可以通過修改數(shù)據(jù)庫配置參數(shù)(LOGRETAIN)來實現(xiàn): 歸檔日志模式:db2 update db cfg for using logretain on 注:改為on后,,查看數(shù)據(jù)庫配置參數(shù)logretain的值時,,實際顯示的是recovery。改變此參數(shù)后,,再次連接數(shù)據(jù)庫會顯示數(shù)據(jù)庫處于備份暫掛(BACKUP PENDING)狀態(tài),。這時,需要做一次對數(shù)據(jù)庫的脫機備份(db2 backup db ),,才能使數(shù)據(jù)庫狀態(tài)變?yōu)檎,!?/p> 循環(huán)日志模式:db2 update db cfg for using logretain off -處理步驟 必須按照以下正確的步驟進行操作: 要求必須使用DB2命令PRUNE進行清理,不建議使用rm命令刪除,。 刪除前應保證應用已停止(即聯(lián)機已下來),。 查看當前使用的日志文件目錄及第一活動日志文件 用 “db2 get db cfg for ”命令查看日志文件目錄(Path to log files)參數(shù),確定數(shù)據(jù)庫當前使用的日志文件目錄,。 例如:Path to log files = /db2log/,,說明DB2日志存放目錄是/db2log 用 “db2 get db cfg for ”命令查看第一活動日志文件(First active log file)參數(shù),該參數(shù)對應的日志文件之前的日志文件均為歸檔日志文件,,如果確認沒有用,,可以刪除。例如:First active log file = S0015913.LOG,,說明當前第一活動日志文件是S0015913.LOG,。 備份好要刪除的歸檔日志 刪除歸檔日志 以應用用戶(如BTP)登錄,執(zhí)行: $ db2 connect to $ db2 prune logfile prior to S???????.LOG 注:S???????.LOG為查看到的第一活動日志文件,。此命令可以將當前第一活動日志文件之前的歸檔日志文件全部刪除,。 如何清理db2diag.log文件 db2diag.log,是用來記錄DB2數(shù)據(jù)庫運行中的信息的文件,??梢酝ㄟ^此文件,,查看記錄的有關DB2數(shù)據(jù)庫詳細的錯誤信息。此文件也是不斷增大的,,需要定期進行清理,。 可以通過查看實例的配置參數(shù)DIAGPATH,來確定db2diag.log文件是放在哪個目錄下:db2 get dbm cfg 如果Diagnostic data directory path(DIAGPATH) = /home/db2inst1/sqllib/db2dump,,則此文件是放在/home/db2inst1/sqllib/db2dump目錄下,。當文件系統(tǒng)/home的使用率達到80%-90%左右時,應及時刪除db2diag.log文件,。 請按以下正確步驟操作:確認應用(如BTP),、DB2已經(jīng)停止。 將原db2diag.log文件備份到其它文件系統(tǒng)下,。 刪除db2diag.log文件,。刪除后,DB2會自動創(chuàng)建一個新的文件,。 標準函數(shù) length: 返回自變量中的字節(jié)數(shù) CAST: 變量類型轉(zhuǎn)換或截斷字符串 如:CAST(RESUME AS VARCHAR(370)) Select CAST(colname as integer) from tablename; decimal: 變量轉(zhuǎn)換為指定精度的數(shù)值 如: select decimal(amount,16,2) from tablename; WHERE 子句條件 謂詞 功能 |
|