|
db2日志記錄 1. 日志的意義: 主要在于數據恢復。Db2實施了提前寫日志存檔模式,當發(fā)出刪除、插入或更新數據庫中某一數據的SQL調用時,所作出的數據變更首先要寫到日志中去。當發(fā)出一條SQL提交確認命令時,DB2首先要把redo所需要的日志寫入磁盤。如果斷電的話,所有被提交的事務都會重新做一遍,而未提交的則會rollback。 事務:為了保證數據的可恢復性和一致性引入的概念。比如執(zhí)行了兩條sql語句,但是他們是為了完成同一件事,因此他們會被當做一個整體。當發(fā)生意外情況時,如果已經commit,但是未寫到磁盤,就要執(zhí)行redo重新執(zhí)行一遍。如果還沒有commit,就要全部回滾。 日志作用:比如昨天晚上進行了數據庫備份,但是今天中午數據庫出現了問題(如存儲介質損壞)需要恢復,那么只能恢復到昨天晚上的狀態(tài),今天上午的數據都沒法恢復,這時如果數據庫日志沒有損壞,就可以通過日記把這段時間的操作重新執(zhí)行一遍。 2. 日志分為循環(huán)日志和歸檔日志: 日志中只記錄DML操作(insert,update和delete操作),當我們前臺執(zhí)行了一條insert,update或delete語句,日志中就會相應的記錄這條SQL語句的redo操作和undo操作 幾種操作類型: DDL(Data Definition Language 數據定義語言),用于操作對象和對象的屬性(數據庫,表,視圖等)。具體表現在Create,Drop和Alter操作上。不會對具體的數據進行操作,而是對對象進行操作。 像主鍵約束、唯一約束、非空約束、外鍵約束、核查約束和缺省約束這些操作都是使表具有某些特性,所以在這里我認為他們都是表的屬性,也屬于DDL操作。 DML(Data Manipulation Language 數據操控語言)用于操作數據庫對象中包含的數據,也就是說操作的單位是記錄。主要表現在Insert,Delete和Update等操作上。操作對象是記錄。 DCL(Data Control Language 數據控制語句)的操作是數據庫對象的權限,這些操作的確定使數據更加的安全。主要表現在Grant和Revoke語句。操作對象是用戶。 2.1 循環(huán)日志 分主日志和輔助日志,數目分別是由參數LOGPrimary和LOGSecond來控制。當主日志不夠用時,分配輔助日志(如默認配置了4個主日志文件,但是某個事務需要橫跨5個日志,這時DB2將會分配一個輔助日志文件)。 為什么叫循環(huán)日志?如分配了4個日志,標號為1,2,3,4,當日志4用完后將使用日志1。但如果日志扔是活動的,則不能被重用(未活動的日志:只要這個日志包含已提交且已寫到數據庫上的操作就可以被重用)。 主要作用:僅能恢復到曾經做過備份的點,備份點之后的操作都將丟失。因此適用于只提供查詢的數據庫。 2.2 歸檔日志 不會像循環(huán)日志那樣被重用,DB2不會覆蓋已經成為歸檔日志的日志。 活動日志:特別重要,如果活動日志丟失,則數據庫無法啟動。 滿足:1.包含尚未提交或回滾的事務信息;2.包含已經提交但是更改尚未寫到磁盤上的事務信息。以上兩個條件中任意一個都屬于活動日志。 1) 在線歸檔日志:非活動日志,但是與活動日志放在相同的目錄。 2) 離線歸檔日志:已經從活動日志的目錄轉移到其他地方(其他目錄或媒介)。 參數:LOGArchmenth1 1) OFF(默認)時,歸檔日志禁用,循環(huán)日志啟用; 2) LOGRetain 日志文件保留在活動日志目錄(在線歸檔); 3) USERExit 日志的歸檔和檢索是由用戶提供的用戶出口程序自動執(zhí)行的,且此出口程序必須由db2uext2調用。該程序將在線歸檔日志轉移到與活動日志不同的目錄或媒介上。該程序也可以將離線歸檔日志取出到活動日志目錄中。在Windows下,db2uext2必須存儲在sqllib\bin目錄下,在UNIX下,db2uext2必須存儲在sqllib\adm目錄中。 4) DISK:directory_name 不調用用戶出口程序,自動將日志文件歸檔到指定目錄; 5) TSM:[management class name] 日志被歸檔到本地Tivoli Storage Manager(TSM)服務器上。參數可選,為指定則使用默認管理類; 6) VENDOR:library_name 日志使用指定供應商的庫來歸檔。 2.3 無限日志記錄 當一個日志被填滿時,DB2立刻歸檔這個日志,而不是等到日志中所有事物都已經提交并且寫到磁盤的時候才歸檔日志。這樣可以保證活動日志目錄永遠不被填滿。 一般不建議使用無限日志記錄,因為它可能延遲緊急事故恢復時間,因為它需要從歸檔站點檢索活動日志。 啟用無限日志記錄: 1) 將LOGSecond參數設置為-1; 2) 啟用歸檔日志記錄 循環(huán)日志記錄只支持崩潰恢復和版本恢復,而歸檔日志記錄則支持所有類型的恢復:崩潰恢復、版本恢復和前滾恢復。 3. 日志相關配置參數 DB2的日志存檔進程涉及到一些參數,當用戶需要改變這些參數時,必須先停止該實例(db2stop),然后再重新啟動(db2start),以便使得配置生效。 LOGPRIMARY 表明要分配的主日志文件的數量; LOGSECOND 表面可有分配的輔助日志文件的最多數量; LOGFILESIZ 用于指定一個日志文件的大?。?/span>4KB頁的個數) LOGBUFSZ 日志緩沖區(qū)大小,該參數決定分配多少內存空間來做為緩沖區(qū),把日志記錄寫到磁盤之前暫時將他們保留在日志緩沖區(qū)。同樣是4KB頁的個數。 NEWLOGPATH 日志文件默認的子目錄定義在數據庫目錄的子目錄SQLLOGDIR中。出于恢復目的的考慮,最好把日志文件存放到與數據庫文件不同的物理磁盤中去。這一參數標識日志文件存放的新路徑。 SOFTMAX 軟檢查點,是個百分數,例如50表示日志文件寫滿50%是,數據庫執(zhí)行checkpoint操作,把內存中的已經提交的數據(臟頁)寫到磁盤上。 MINCOMMIT 組提交數,默認是1,表示每次提交都寫日志。假設設置為5,表示累計5次提交才寫一次日志文件。如果沒有累計到5次,那么每隔1秒寫一次日志文件。 MIRRORLOGPATH 鏡像日志路徑; TRACKMOD 啟用增量備份; 4. DB2診斷日志db2diag.log 日志文件的位置: Db2diag.log是用來記錄DB2數據庫運行中的信息的文件。可以通過此文件查看DB2數據庫詳細的錯誤信息。此文件是不斷增大的,需要定期進行清理。 可以通過查看實例的配置參數DIAGPATH來確定db2diag.log的存放目錄:db2 get dbm cfg 如果DIAGPATH=/home/db2inst1/sqllib/db2dump,則此文件是放在/home/db2inst1/sqllib/db2dump目錄下的。 當文件系統(tǒng)/home的使用率達到80%-90%左右時,應及時刪除db2diag.log文件。 步驟如下: 1) 確認應用、DB2已經停止; 2) 將原db2diag.log文件備份到其他目錄; 3) 刪除db2diag.log文件,傳出后,DB2會自動創(chuàng)建一個新的文件。 也可以通過DB2提供的自動歸檔命令:db2diag –a自動歸檔,自動歸檔的文件會以日期時間來命名。 日志中關鍵字的含義: 1) Timestamp 時間戳 2) Instance 數據庫實例 3) Partition number 分區(qū)號 4) Process and database 進程和數據庫 5) Thread Id 線程ID 6) Application ID 應用程序ID 7) Component 組件 8) Function 函數 9) Internal error point 內部錯誤指針 10) Database 數據庫 了解這些基本含義有助于分析和診斷DB2的相關問題。 篩選日志中的相關信息: db2diag –time 2014-01-02-11.00.907665-360 顯示時間戳“2014-01-02-11.00.907665-360”之后的所有信息; db2diag –rc FFFFBEE 可以了解十六進制所提示的信息; db2 “? Sql1042” 獲得關于這個錯誤的具體解釋; db2diag –gi “l(fā)evel=severe” 顯示db2diag.log中所記錄的嚴重錯誤; 如果實例中有若干數據庫,并且只希望顯示與數據庫“SAMPLE”有關的消息,那么可以用-g過濾 db2diag 日志文件: db2diag -g db=SAMPLE 將僅顯示包含“DB: SAMPLE”的 db2diag 日志文件記錄; 顯示進程標識(PID)為 2200,并且在分區(qū) 0、1、2 或分區(qū) 3 上運行的進程生成的所有嚴重錯誤消息: db2diag -g level=Severe,pid=2200 -n 0,1,2,3 也可寫成 db2diag -l severe -pid 2200 -n 0,1,2,3 注:-g 選項指定區(qū)分大小寫的搜索,所以此處“Severe”會起作用,但如果使用了“severe”則會失敗。 合并兩個診斷日志文件并按時間戳記對記錄進行排序,執(zhí)行以下命令: db2diag -merge db2diag.0.log db2diag.1.log -fmt %{ts} -level error 時間戳計被合并,并且按時間順序排序。 要輸出 db2diag 日志文件列表中所有文件的記錄,可運行以下命令: db2diag -global |
|
|
來自: 昵稱18376747 > 《DB2文件》