第14章 管理邏輯日誌檔案
-
1. LOGFILES: 邏輯日誌檔案的數量。一般為10個。3<=LOGFILES<=32767,預設值:5
2. LOGSIZE: 邏輯日誌檔案的大小。LOGSIZE = connections * maxrows * rowsize / LOGFILES / 1024
其中 connections 是在 sqlhosts 檔案中以及 NETTYPE 配置引數中指定的所有網路型別指定的最大連線數。
maxrows 單個事務要更新的最大行數。
rowsize 錶行的平均大小。
3. LOGBUFF:LOGBUFF指明共享記憶體中的3個邏輯日誌緩衝區的大小(單位KB)。
2*頁大小 <= LOGBUFF <= LOGSIZE,預設值 64KB
It is recommended that you set LOGBUFF to 16 or 32 kilobytes, or perhaps 64 kilobytes for heavy workloads.
()
一、備份邏輯日誌檔案的概念
從第13章可以知道邏輯日誌包含已執行的事務的歷史記錄,而邏輯日誌檔案存在於 dbspace 中的,所以“備份邏輯日誌檔案”是指:將邏輯日誌檔案從 dbspace 複製到介質的過程。
從備份的過程可見備份邏輯日誌檔案實現以下兩個目標:
它將邏輯日誌記錄儲存在介質上,以便在需要資料恢復時可以回滾這些記錄。
它使邏輯日誌檔案空間可用於新的邏輯日誌記錄(忽略了備份日誌檔案,則可能會耗盡日誌空間)。
可以啟動手動邏輯日誌備份或設定連續邏輯日誌備份。
二、切換至下一個邏輯日誌檔案
當需要進行以下操作時,必須切換至下一個邏輯日誌檔案:
1. 備份當前日誌
2. 啟用新的Blob 空間和 Blob 塊
切換至下一個邏輯日誌檔案的方法:
onmode -l
此更改可立即生效
三、釋放邏輯日誌檔案
本人理解釋放邏輯日誌檔案是指將邏輯日誌檔案處於可使用狀態。比如當所有邏輯日誌檔案都滿時,由於沒有可用的邏輯日誌檔案所以造成資料庫操作不可繼續執行。這時必須釋放邏輯日誌檔案以供記錄日誌使用。
1. 釋放具有狀態 U 的日誌檔案
對於狀態 U 邏輯日誌檔案(此日誌檔案已使用,但尚未備份),先備份該檔案,然後再根據此邏輯日誌檔案的狀態分別處理。
2. 釋放具有狀態 U-B 的日誌檔案
狀態 U-B 指日誌檔案已備份,但仍在使用中,這是因為日誌檔案中的某些事務仍在進行。則可以使用 onmode -c 命令以強制執行完全檢查點來釋放邏輯日誌檔案
3. 放具有狀態 F 的日誌檔案
狀態 F 指日誌檔案已使用過,但目前為空閒狀態,即也可用。不需要釋放
4. 釋放當前日誌檔案(狀態 C)
a.執行以下命令以將當前日誌檔案切換到下一個可用的日誌檔案:
onmode -l
b.用 ON–Bar 或 ontape 備份原始日誌檔案。
c.在備份了所有填滿的日誌檔案後,會提示您切換到下一個可用的日誌檔案並備份新的當前日誌檔案。 因為剛剛切換到該日誌檔案,所以您無需進行備份。
5.釋放具有狀態 U-B-L 的日誌檔案
如果日誌檔案已備份,並且其中的所有事務已關閉,但檔案還不可用(狀態 U-B-L),則該邏輯日誌檔案包含最近的檢查點記錄。
要釋放具有狀態 U-B-L 的日誌檔案,資料庫伺服器必須建立新的檢查點。您可以執行以下命令來強制執行檢查點:
onmode -c
四、對邏輯日誌進行增、刪、改
在初始化資料庫伺服器時,系統會建立 LOGFILES 配置引數中指定數目的邏輯日誌檔案。這些日誌檔案的大小為您在 LOGSIZE 引數中指定的大小。
4.1 動態新增日誌
4.1.1 DYNAMIC_LOGS 配置引數確定資料庫伺服器何時動態新增邏輯日誌檔案。
------------------------------------------------------------------------------------------------------------------------------------
|DYNAMIC_LOGS | 含義 | 事件警報 | 等待新增日誌 | 動態日誌新增 |
-------------------------------------------------------------------------------------------------------------------------------------
|2(預設值) | 允許自動分配新日誌檔案,從而防止開啟的事務掛起系統。 | 是(26、28) | 否 | 是 |
|1 | 允許手工新增新日誌檔案。 | 是(27) | 是 | 否 |
|0 | 不分配日誌檔案,但發出以下關於開啟的事務的訊息: | 否 | 否 | 否 |
-------------------------------------------------------------------------------------------------------------------------------------
()
4.1.2 動態新增的日誌檔案的位置
資料庫伺服器按以下搜尋順序在資料庫空間中分配日誌檔案。
1 包含最新日誌檔案的資料庫空間 (如果該資料庫空間已滿,資料庫伺服器會搜尋其它資料庫空間。)
2 包含日誌檔案的映象資料庫空間(但根資料庫空間除外)
3 所有已經包含日誌檔案的資料庫空間(根資料庫空間除外)
4 包含物理日誌的資料庫空間
5 根資料庫空間
6 任何映象資料庫空間
7 任何資料庫空間
4.2 手工新增邏輯日誌檔案
使用 onparams -a 命令新增到日誌檔案列表的末尾
使用 onparams -a -i 命令新增到當前邏輯日誌檔案之後
必須使用 informix 使用者進行操作
A. 請確保資料庫伺服器處於聯機、單使用者或靜默方式,或處於快速恢復方式的清除階段。
B. onparams -a -d llogdbs -s 100000 -i
在 llogdbs 資料庫空間的當前日誌檔案之後插入一個100MB的邏輯日誌檔案
(-a 新增 -d 邏輯日誌表空間 -s 大小)
C. onstat -1 檢視目前已有的邏輯日誌及狀態。新日誌檔案的狀態為 A,且立即可用。
D. 雖然在新增日誌檔案後不再需要立即備份,但因為資料結構已更改,所以下一次備份應為 0 級備份。所以建議先執行 ontape -s 。
E. 可以使用 onmode -l 命令切換當前邏輯日誌到剛才新增的任意一個邏輯日誌上(這不是必需的)
如下:
radio-ods% onparams -a -d actdbs04 -s 200
Log operation started. To monitor progress, use the onstat -l command.
Logical log successfully added.
radio-ods% onstat -l
IBM Informix Dynamic Server Version 11.50.FC4DE -- On-Line -- Up 75 days 06:10:21 -- 441344 Kbytes
Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
P-2 0 64 1311809 29316 44.75
phybegin physize phypos phyused %used
1:263 49950 12778 0 0.00
Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-3 0 32 49398514 4184547 1700654 11.8 2.5
Subsystem numrecs Log Space used
OLDRSAM 49384783 6146114788
HA 13731 604164
address number flags uniqid begin size used %used
1182eef98 1 U-B---- 976 1:50213 5000 4491 89.82
11845af50 2 U---C-L 977 1:55213 5000 35 0.70
11845afb8 5 U-B---- 971 1:79197 5000 5000 100.00
118442c50 3 U-B---- 972 1:60213 5000 5000 100.00
118442cb8 4 U-B---- 973 1:65213 5000 5000 100.00
11a77f5e0 6 U-B---- 974 1:84213 5000 5000 100.00
11a7b0a48 7 U-B---- 975 1:89229 5000 5000 100.00
1219efeb0 8 A------ 0 43:69 100 0 0.00
8 active, 8 total
radio-ods% ontape -s
Archive to tape device '/dev/null' is complete.
Program over.
radio-ods% onstat -l
IBM Informix Dynamic Server Version 11.50.FC4DE -- On-Line -- Up 75 days 06:12:38 -- 441344 Kbytes
Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
P-2 0 64 1311809 29316 44.75
phybegin physize phypos phyused %used
1:263 49950 12778 0 0.00
Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-1 0 32 49398577 4184552 1700658 11.8 2.5
Subsystem numrecs Log Space used
OLDRSAM 49384844 6146118604
HA 13733 604252
address number flags uniqid begin size used %used
1182eef98 1 U-B---- 976 1:50213 5000 4491 89.82
11845af50 2 U---C-L 977 1:55213 5000 40 0.80
11845afb8 5 U-B---- 971 1:79197 5000 5000 100.00
118442c50 3 U-B---- 972 1:60213 5000 5000 100.00
118442cb8 4 U-B---- 973 1:65213 5000 5000 100.00
11a77f5e0 6 U-B---- 974 1:84213 5000 5000 100.00
11a7b0a48 7 U-B---- 975 1:89229 5000 5000 100.00
1219efeb0 8 A------ 0 43:69 100 0 0.00
8 active, 8 total
radio-ods% onmode -lradio-ods% onstat -l
IBM Informix Dynamic Server Version 11.50.FC4DE -- On-Line -- Up 75 days 06:17:12 -- 441344 Kbytes
Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
P-2 15 64 1311823 29316 44.75
phybegin physize phypos phyused %used
1:263 49950 12778 15 0.03
Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-3 0 32 49398680 4184575 1700681 11.8 2.5
Subsystem numrecs Log Space used
OLDRSAM 49384947 6146128416
HA 13733 604252
address number flags uniqid begin size used %used
1182eef98 1 U-B---- 976 1:50213 5000 4491 89.82
11845af50 2 U-B---L 977 1:55213 5000 41 0.82
11845afb8 5 U-B---- 978 1:79197 5000 4 0.08
118442c50 3 U-B---- 979 1:60213 5000 4 0.08
118442cb8 4 U-B---- 980 1:65213 5000 4 0.08
11a77f5e0 6 U-B---- 981 1:84213 5000 4 0.08
11a7b0a48 7 U-B---- 982 1:89229 5000 3 0.06
1219efeb0 8 U---C-- 983 43:69 100 3 3.00
8 active, 8 total
radio-ods%
4.3 刪除邏輯日誌檔案
使用 onparams -d -l 命令刪除邏輯日誌檔案
如果刪除狀態 A 日誌檔案,資料庫伺服器將立即刪除它並釋放空間。
如果您刪除狀態 U-B 日誌檔案,資料庫伺服器將其標記為已刪除(D)。在對包含該日誌檔案的資料庫空間和根資料庫空間進行了 0 級備份之後,資料庫伺服器刪除日誌檔案並釋放空間。
無法刪除狀態 C 或 L (當前正在使用或包含最近檢查點記錄)的日誌檔案。
A. 資料庫伺服器必須處於聯機、單使用者或靜默方式。
B. 執行以下命令來刪除日誌檔案號為 21 的邏輯日誌檔案:
onparams -d -l 21
一次刪除一個日誌檔案。您必須知道要刪除的每個邏輯日誌的日誌檔案號。
(如果日誌檔案具有新新增(A)的狀態,則將其立即刪除。
如果日誌檔案具有已使用(U)的狀態,則將其標記為刪除(D)。要刪除已使用的日誌檔案,請對所有資料庫空間進行 0 級備份。
)
4.4 更改邏輯日誌檔案的大小
如果您希望更改日誌檔案的大小,則新增所需大小的新日誌檔案並隨後刪除舊檔案會更為容易。
4.5 將邏輯日誌檔案移至另一個資料庫空間
IBM 提供的轉移邏輯日誌檔案的方法為刪除重建,如下:()
A. 從邏輯日誌檔案當前所在資料庫空間刪除這些檔案
B. 將邏輯日誌檔案新增到其新資料庫空間
IBM 給出的以下示例也為我們在建立資料庫伺服器時將預設安裝的5個邏輯日誌檔案刪除,並重新在其它資料庫空間建立邏輯日誌檔案提供了非常好的思路,原文如下:
將邏輯日誌檔案移出根資料庫空間(示例)
1. 請確保資料庫伺服器處於聯機方式、單使用者方式、靜默方式或快速恢復方式。
2. 向 dbspace_1 新增 6 個新邏輯日誌檔案。
請參閱手工新增邏輯日誌檔案。
3. 對所有儲存空間進行 0 級備份,以釋放除當前日誌檔案以外的所有日誌檔案。
(如果使用 onbar -l -b -c,則可備份包括當前日誌檔案在內的所有日誌檔案。)請參閱釋放邏輯日誌檔案。
4.使用 onmode -l 切換到新的當前日誌檔案。
請參閱切換至下一個邏輯日誌檔案。
5. 刪除根資料庫空間中的全部 6 個邏輯日誌檔案。
您不能刪除當前邏輯日誌檔案。
請參閱刪除邏輯日誌檔案。
6. 建立根資料庫空間和 dbspace_1 的 0 級備份。
有關更多資訊,請參閱《IBM Informix: 備份與恢復指南》。
五、關於長事務、高水印
5.1 什麼叫長事務(LTX)
A transaction started in one particular logical log and is not committed, when the database server needs the same log for reuse said to be a long trasaction. In other words: When an active transaction reaches the long transaction high water mark (LTXHWM), it will be declared a long transaction (LTX) and hence will be rolled back automatically.
如果一個活動事務超過了 LTXHWM (長事務高水印),則這個事務就會被宣告成長事務(LTX),並且這個事務也會被自動回滾。
55.2 什麼是高水印(high water-maker: HWM)
當 DYNAMIC_LOGS 設定為 1 或 2 時,預設的 LTXHWM 為80%, LTXEHWN 為90%
當 DYNAMIC_LOGS 設定為 0 時,預設的 LTXHWM 為50%, LTXEHWN 為60%
所以如果減少高水印值,就增加了長事務的可能性。
長事務高水印(LTXHWM)是在回滾事務前允許事務所跨的總日誌空間的百分比(其實是以邏輯日誌檔案的個數進行比較的,而並不是所佔的邏輯日誌檔案的空間)。如果資料庫伺服器在最舊使用的日誌檔案中發現開啟的事務,它會動態新增日誌檔案。因為日誌空間一直在增加,所以高水印會向外擴充套件。當日志空間到達高水印,資料庫伺服器會回滾事務。事務回滾及其它過程也會生成邏輯日誌記錄。資料庫伺服器繼續新增日誌檔案直至回滾完成,以便防止邏輯日誌耗盡空間。如果這個時候邏輯日誌的使用個數仍然持續上漲達到或超過 LTXEHWM 所設定的值,則資料庫會停止其他會話的正常運轉,全力保證該長事務的回滾操作。而 LTXEHWM 就是指互斥訪問長事務高水印,也就是在回滾長事務獲得對邏輯日誌的互斥訪問時的所佔的總日誌空間的百分比(還是邏輯日誌檔案個數的百分比)。
參考:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0810niuxz2/
例如:資料庫伺服器有 10 個邏輯日誌,而 LTXHWM 設定為 98。事務從日誌檔案 1 開始,而更新活動填滿日誌 1 到 9。資料庫伺服器在日誌檔案 10 之後動態新增日誌檔案 11。只要事務不完成,該過程就一直持續至資料庫伺服器新增了 40 個日誌檔案。當資料庫伺服器新增第 50 個日誌時,事務已趕上高水印,而資料庫伺服器會將其回滾。
如果系統具有足夠的磁碟空間並且想要執行未知長度的事務,可以考慮將 LTXHWM 設定成 100 以強制資料庫伺服器繼續新增日誌檔案直到完成事務。
以下內容轉自:
http://blog.csdn.net/bocodb/archive/2008/01/08/2030903.aspx
一、檢視資料庫狀態
正常情況下是
infodb% onstat -
IBM Informix Dynamic Server Version 9.40.FC7 -- On-Line -- Up 35 days 16:51:16 -- 3920896 Kbytes
長事務情況下是
infodb% onstat -
IBM Informix Dynamic Server Version 9.40.FC7 -- On-Line (LONGTX) -- Up 35 days 16:41:40 -- 3920896 Kbytes
Blocked:LONGTX
二、顯示事務(transaction)資訊
其中flag欄位中第三個標誌位為R說明事務在rollback,說明這個事務是長事務
infodb% onstat -x
IBM Informix Dynamic Server Version 9.40.FC7 -- On-Line (LONGTX) -- Up 35 days 16:41:56 -- 3920896 Kbytes
Blocked:LONGTX
Transactions
1cf0a6748 A-R-- 1cd55c618 642073 119403 119405 0x1aa91e4 DIRTY 0
三、透過長事務的userthread值找出session id
infodb% onstat -u |grep 1cd55c618
1cd55c618 --RPX-- 1880841 informix - 0 0 642073 256446 323049
四、顯示會話連線資訊,找出造成長事務的SQL語句,並最佳化
infodb% onstat -g ses 1880841
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22565551/viewspace-1028128/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 第13章 邏輯日誌
- 管理日誌檔案
- 第15 章 物理日誌記錄、檢查點和快速恢復; 第16 章 管理物理日誌
- oracle 日誌檔案管理Oracle
- 日誌檔案的管理
- 日誌檔案和歸檔管理
- 【MySQL日誌】MySQL日誌檔案初級管理MySql
- sybase iq日誌檔案管理
- 第12章 管理資料庫日誌記錄方式資料庫
- 第11章 日誌記錄
- 對日誌檔案組和日誌檔案組成員的管理
- 邏輯dg刪除主庫過期歸檔日誌
- 監聽日誌檔案的管理
- 使用logrotate管理日誌檔案logrotate
- 使用logrotate 管理日誌檔案(轉)logrotate
- 事務日誌邏輯體系結構
- 14. 日誌歸檔
- HP UNIX--檔案系統和邏輯卷管理
- 【Oracle日誌】- 日誌檔案重建Oracle
- 日誌檔案
- DG邏輯庫logstdby 日誌應用長時間不歸檔
- 日誌檔案和歸檔日誌檔案的關係以及如何切換日誌
- 《Java程式設計邏輯》第3章 類的基礎Java程式設計
- 刪除日誌檔案組與日誌檔案成員
- dump日誌檔案
- APACHE日誌檔案Apache
- 【Linux】Linux檔案系統管理5 lvm邏輯卷管理LinuxLVM
- 2 Day DBA-管理Oracle例項-管理聯機重做日誌-切換日誌檔案Oracle
- AIX日誌檔案系統(Journaled File System)管理AI
- mysql學習8:第四章:資料庫檔案--日誌檔案MySql資料庫
- 第5章:從開啟的資料庫備份與恢復之備份歸檔日誌檔案資料庫
- 3月22號(工程日誌第14天)
- 檔案的邏輯結構、檔案目錄
- 控制檔案/歸檔日誌
- 【Oracle】歸檔日誌管理-設定歸檔日誌路徑以及歸檔日誌冗餘Oracle
- 增加日誌檔案,修改當前日誌檔案大小
- Oracle歸檔日誌管理技巧Oracle
- 《專案管理之美》第1章專案管理