數(shù)據(jù)庫(kù)監(jiān)控是一項(xiàng)重要的活動(dòng),若將其作為日常活動(dòng)來執(zhí)行,將連續(xù)提供數(shù)據(jù)庫(kù)系統(tǒng)健康狀況的反饋信息。正由于數(shù)據(jù)庫(kù)監(jiān)控是數(shù)據(jù)庫(kù)管理的完整組成部分,DB2 9 提供了一種稱為數(shù)據(jù)庫(kù)系統(tǒng)監(jiān)控器的監(jiān)控實(shí)用工具。盡管其名稱 “數(shù)據(jù)庫(kù)系統(tǒng)監(jiān)控器” 似乎表示僅提供了一種監(jiān)控工具,但實(shí)際上,數(shù)據(jù)庫(kù)系統(tǒng)監(jiān)控器由兩種不同的工具組成,可用于捕獲和返回系統(tǒng)監(jiān)控信息:一個(gè)快照監(jiān)控器 和一個(gè)或多個(gè)事件監(jiān)控器。快照監(jiān)控器允許您捕獲特定時(shí)間點(diǎn)的數(shù)據(jù)庫(kù)狀態(tài)圖,而事件監(jiān)控器在特定數(shù)據(jù)庫(kù)事件發(fā)生時(shí)捕獲并記錄數(shù)據(jù)。這兩種工具所收集的數(shù)據(jù)均存儲(chǔ)在稱為監(jiān)控元素(或數(shù)據(jù)元素)的實(shí)體中。所使用的各監(jiān)控元素通過惟一的名稱標(biāo)識(shí),且均設(shè)計(jì)用于容納特定類型的信息。以下類型的元素用于存儲(chǔ)監(jiān)控?cái)?shù)據(jù):
- 計(jì)數(shù)器(Counter)。計(jì)數(shù)器保存活動(dòng)或事件已發(fā)生的次數(shù)。在監(jiān)控器的整個(gè)生命周期中,計(jì)數(shù)器值逐漸增加;通常,計(jì)數(shù)器監(jiān)控元素是可重置的。為某個(gè)數(shù)據(jù)庫(kù)執(zhí)行的 SQL 語句總數(shù)就是計(jì)數(shù)器元素的一個(gè)示例。
- 計(jì)量器(Gauge)。計(jì)量器保存在特定時(shí)間點(diǎn)發(fā)生的活動(dòng)或事件的次數(shù)。與計(jì)數(shù)器值不同,計(jì)量器值可增加,也可減少,計(jì)量器在給定時(shí)間點(diǎn)的值通常取決于數(shù)據(jù)庫(kù)活動(dòng)的級(jí)別。當(dāng)前連接到某個(gè)數(shù)據(jù)庫(kù)的應(yīng)用程序數(shù)量就是計(jì)量器元素的一個(gè)示例。
- 水位標(biāo)(Watermark)。水位標(biāo)表示自監(jiān)控開始以來觀測(cè)到的最高(最大)或最低(最小)值。更新操作所影響的最大行數(shù)就是水位標(biāo)元素的一個(gè)示例。
- 信息(Information)。顧名思義,信息元素提供所執(zhí)行的全部監(jiān)控活動(dòng)的引用類型細(xì)節(jié)。信息元素的示例包括緩沖池名稱、數(shù)據(jù)庫(kù)名稱和別名、路徑詳細(xì)信息等。
- 時(shí)間戳(Timestamp)。時(shí)間戳表示活動(dòng)或事件發(fā)生的日期和時(shí)間。時(shí)間戳值以 1970 年 1 月 1 日后流逝的秒和微秒數(shù)形式提供。與數(shù)據(jù)庫(kù)的第一個(gè)連接的建立日期和時(shí)間就是一個(gè)時(shí)間戳元素的示例。
- 時(shí)間(Time)。時(shí)間元素保存執(zhí)行一個(gè)活動(dòng)或事件所花費(fèi)的時(shí)間。時(shí)間值以自活動(dòng)或事件開始以后流逝的秒和微秒數(shù)形式提供,有些時(shí)間元素是可重置的。執(zhí)行一次排序操作所花費(fèi)的時(shí)間就是一個(gè)時(shí)間元素的示例。
數(shù)據(jù)庫(kù)系統(tǒng)監(jiān)控器可利用上述元素的任意組合來捕獲監(jiān)控?cái)?shù)據(jù),一旦收集完成,即可使用一些方法為快照監(jiān)控器和事件監(jiān)控器展示所用各元素中存儲(chǔ)的數(shù)據(jù),您可以選擇將收集到的所有數(shù)據(jù)存儲(chǔ)在文件或數(shù)據(jù)庫(kù)表中,在屏幕上查看,或使用定制應(yīng)用程序進(jìn)行處理。(數(shù)據(jù)庫(kù)系統(tǒng)監(jiān)控器使用自我描述的數(shù)據(jù)流將監(jiān)控?cái)?shù)據(jù)返回給客戶機(jī)應(yīng)用程序。使用快照監(jiān)控應(yīng)用程序,您可調(diào)用恰當(dāng)?shù)目煺?API,捕獲快照,然后處理所返回的數(shù)據(jù)流;使用事件監(jiān)控應(yīng)用程序,您可準(zhǔn)備好通過文件或指定管道接收所生成的數(shù)據(jù),激活適當(dāng)?shù)氖录O(jiān)控器,并在接收到數(shù)據(jù)流時(shí)對(duì)其加以處理。)
快照監(jiān)控器
快照監(jiān)控器設(shè)計(jì)用于收集 DB2 UDB 實(shí)例及其控制的數(shù)據(jù)庫(kù)在特定時(shí)間點(diǎn)(換言之,就是在捕獲到快照時(shí))的相關(guān)狀態(tài)信息。快照對(duì)于確定一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的狀態(tài)非常有用,若按固定時(shí)間間隔捕獲,則可提供能用于觀測(cè)發(fā)展趨勢(shì)并識(shí)別潛在問題領(lǐng)域的寶貴信息。要捕獲快照,可在 DB2 Command Line Processor(CLP)中執(zhí)行 GET SNAPSHOT 命令,方法是在查詢中使用恰當(dāng)?shù)目煺毡砗瘮?shù)或在 C、C++ 應(yīng)用程序中使用快照監(jiān)控器 API。此外,還可根據(jù)具體需求打造快照,以便返回特定類型的監(jiān)控?cái)?shù)據(jù)值(例如,可將一個(gè)快照配置為僅返回與緩沖池相關(guān)的信息)。
快照監(jiān)控器開關(guān)
通常情況下,收集系統(tǒng)監(jiān)控?cái)?shù)據(jù)需要額外的處理開銷。例如,為了計(jì)算 SQL 語句的執(zhí)行時(shí)間,DB2 Database Manager 必須調(diào)用操作系統(tǒng),獲取 SQL 語句執(zhí)行之前和之后的時(shí)間戳。此類系統(tǒng)調(diào)用的成本高昂。使用系統(tǒng)監(jiān)控器的另外一個(gè)副作用就是所消耗的內(nèi)存量大大增加 —— DB2 Database Manager 要使用內(nèi)存來存儲(chǔ)為系統(tǒng)監(jiān)控器所追蹤的各監(jiān)控元素收集的數(shù)據(jù)。
為幫助最小化與收集系統(tǒng)監(jiān)控信息相關(guān)的開銷,可使用一組稱為快照監(jiān)控器開關(guān) 的開關(guān),控制在捕獲快照時(shí)收集哪些信息,通過這些快照監(jiān)控器開關(guān)的設(shè)置方式來確定所收集的信息類型與數(shù)量。各快照監(jiān)控器開關(guān)都有兩種設(shè)置:ON 和 OFF。將一個(gè)快照監(jiān)控器開關(guān)設(shè)置為 OFF 時(shí),受此開關(guān)控制的元素的監(jiān)控信息不予收集。若開關(guān)設(shè)置為 ON,則情況恰好相反。(切記,有大量監(jiān)控信息不受開關(guān)控制,無論快照監(jiān)控器開關(guān)如何設(shè)置,這些信息總是會(huì)被收集。)表 1 列出了可用的快照監(jiān)控器開關(guān),還給出了各開關(guān)設(shè)置為 ON 時(shí)所收集的信息類型的描述。
表 1. 快照監(jiān)控器開關(guān)
監(jiān)控器組 |
監(jiān)控器開關(guān) |
DBM 配置參數(shù) |
所提供的信息 |
緩沖池 |
BUFFERPOOL |
dft_mon_bufferpool |
緩沖池活動(dòng)的數(shù)量(換言之,即所執(zhí)行的讀取和寫入操作的數(shù)量,以及各次讀/寫操作所用時(shí)間)。 |
鎖 |
LOCK |
dft_mon_lock |
具有的鎖數(shù)量,以及遇到的死鎖循環(huán)數(shù)量。 |
排序 |
SORT |
dft_mon_sort |
所執(zhí)行的排序操作數(shù)量、使用的堆數(shù)量、遇到的溢出數(shù)、排序性能。 |
SQL 語句 |
STATEMENT |
dft_mon_stmt |
SQL 語句處理開始時(shí)間、SQL 語句處理結(jié)束時(shí)間、SQL 語句標(biāo)識(shí)。 |
表 |
TABLE |
dft_mon_table |
所執(zhí)行的表活動(dòng)數(shù)量,例如讀取的行數(shù)、寫入的行數(shù)等。 |
時(shí)間戳 |
TIMESTAMP |
dft_mon_timestamp |
時(shí)間和時(shí)間戳信息。 |
事務(wù) |
UOW |
dft_mon_uow |
事務(wù)開始時(shí)間、事務(wù)結(jié)束時(shí)間以及事務(wù)的完成狀態(tài)。 |
默認(rèn)情況下,表 1 中的所有開關(guān)均設(shè)置為 OFF,TIMESTAMP 開關(guān)是個(gè)例外,其默認(rèn)設(shè)置為 ON,并在一個(gè)實(shí)例初次啟動(dòng)時(shí)初始化。
查看當(dāng)前快照監(jiān)控器開關(guān)設(shè)置
前面已經(jīng)提到,在捕獲快照時(shí),所收集的信息類型和數(shù)量在某種程度上是可以控制的 —— 通過設(shè)置快照監(jiān)控器開關(guān)實(shí)現(xiàn)。在您捕獲快照之前,應(yīng)了解哪些快照監(jiān)控器開關(guān)已打開,而哪些快照監(jiān)控器開關(guān)依然是關(guān)閉的,這一點(diǎn)非常重要。如何才能了解各可用快照監(jiān)控器開關(guān)的當(dāng)前設(shè)置呢?最簡(jiǎn)單的方法就是在 DB2 Command Line Processor(CLP)中執(zhí)行 GET MONITOR SWITCHES 命令。此命令的基本語法是:
GET MONITOR SWITCHES
其中的 PartitonNum 標(biāo)識(shí)要為其獲取并顯示可用快照監(jiān)控器開關(guān)狀態(tài)的數(shù)據(jù)庫(kù)分區(qū)(在多分區(qū)數(shù)據(jù)庫(kù)環(huán)境中)。
注意:尖括號(hào)(< >)中的參數(shù)是可選的;方括號(hào)([ ])中的參數(shù)或選項(xiàng)是必需的;而逗號(hào)后接省略號(hào)(...)則表示之前的參數(shù)可重復(fù)使用多次。
如果您希望為單分區(qū)數(shù)據(jù)庫(kù)獲取并顯示快照監(jiān)控器開關(guān)狀態(tài),可執(zhí)行 GET MONITOR SWITCHES 命令,方式如下:
GET MONITOR SWITCHES
在 Command Line Processor 中執(zhí)行此命令時(shí),您應(yīng)看到形式如下的輸出結(jié)果。
GET MONITOR SWITCHES 命令的輸出
Monitor Recording Switches
Switch list for db partition number 0
Buffer Pool Activity Information (BUFFERPOOL) = OFF
Lock Information (LOCK) = OFF
Sorting Information (SORT) = OFF
SQL Statement Information (STATEMENT) = OFF
Table Activity Information (TABLE) = OFF
Take Timestamp Information (TIMESTAMP) = ON 06-12-2006 10:30:00.028810
Unit of Work Information (UOW) = OFF
觀察上述輸出后,您會(huì)立即注意到 TIMESTAMP 快照監(jiān)控器開關(guān)已打開,而其他所有開關(guān)均為關(guān)閉。緊接于 TIMESTAMP 監(jiān)控器開關(guān)狀態(tài)之后的時(shí)間戳值可以告訴您 TIMESTAMP 監(jiān)控器開關(guān)被打開的準(zhǔn)確日期和時(shí)間(本例中為 2006 年 6 月 12 日上午 10:30)。
更改快照監(jiān)控器開關(guān)的狀態(tài)
了解哪些快照監(jiān)控器開關(guān)被設(shè)置為 ON、哪些快照監(jiān)控器開關(guān)被設(shè)置為 OFF 之后,您可能會(huì)發(fā)現(xiàn),在開始監(jiān)控過程之前,有必要更改一個(gè)或多個(gè)開關(guān)的設(shè)置。快照監(jiān)控器開關(guān)設(shè)置可在實(shí)例級(jí)更改,方法是通過 UPDATE DATABASE MANAGER CONFIGURATION 命令修改適當(dāng)?shù)?DB2 Database Manager 配置參數(shù)(參見表 1)。
另一方面,快照監(jiān)控器開關(guān)設(shè)置也可在應(yīng)用程序級(jí)更改,方法是執(zhí)行 UPDATE MONITOR SWITCHES 命令。此命令的基本語法是:
UPDATE MONITOR SWITCHES USING [[SwitchID] ON | OFF ,...]
其中的 SwitchID 表示要為之更改狀態(tài)的一個(gè)或多個(gè)快照監(jiān)控器開關(guān)。此參數(shù)可包含以下任意或全部值:BUFFERPOOL、LOCK、SORT、STATEMENT、TABLE、TIMESTAMP 以及 UOW。
如果您希望在應(yīng)用程序級(jí)將 LOCK 快照監(jiān)控器開關(guān)的狀態(tài)更改為 ON,可執(zhí)行 UPDATE MONITOR SWITCHES 命令,如下所示:
UPDATE MONITOR SWITCHES USING LOCKS ON
類似地,如果您希望將 BUFFERPOOL 快照監(jiān)控器開關(guān)設(shè)置為 OFF,也可執(zhí)行一條 UPDATE MONITOR SWITCHES 命令,如下所示:
UPDATE MONITOR SWITCHES USING BUFFERPOOL OFF
在實(shí)例級(jí)設(shè)置快照監(jiān)控器開關(guān)(使用 UPDATE DATABASE MANAGER CONFIGURATION 命令)將影響到受此實(shí)例控制的所有數(shù)據(jù)庫(kù)(也就是說,所有與該實(shí)例控制的一個(gè)數(shù)據(jù)庫(kù)建立了連接的應(yīng)用程序都將繼承實(shí)例配置中的開關(guān)設(shè)置)。此外,在實(shí)例級(jí)做出的快照監(jiān)控器開關(guān)設(shè)置在實(shí)例重啟后依然保留。
在應(yīng)用程序級(jí)設(shè)置快照監(jiān)控器開關(guān)(使用 UPDATE MONITOR SWITCHES 命令)僅影響到與這一個(gè)應(yīng)用程序交互的數(shù)據(jù)庫(kù)。此外,開關(guān)設(shè)置僅在此應(yīng)用程序的生命周期內(nèi)持續(xù)。
捕獲快照監(jiān)控?cái)?shù)據(jù)
只要數(shù)據(jù)庫(kù)被激活或與數(shù)據(jù)庫(kù)的連接建立起來,快照監(jiān)控器立即開始收集監(jiān)控?cái)?shù)據(jù)。但在所收集到的任何數(shù)據(jù)能夠被查看之前,必須捕獲快照(快照實(shí)際上就是一張關(guān)于所用監(jiān)控元素在特定時(shí)間點(diǎn)的形式的圖片)。可通過在應(yīng)用程序中嵌入 db2GetSnapshot() API 捕獲快照,也可通過執(zhí)行 GET SNAPSHOT 命令捕獲。此命令的基本語法是:
GET SNAPSHOT FOR
[DATABASE MANAGER | DB MANAGER | DBM] |
ALL DATABASES |
ALL APPLICATIONS |
ALL BUFFERPOOLS |
ALL REMOTE_DATABASES |
ALL REMOTE_APPLICATIONS |
ALL ON [DatabaseAlias] |
DATABASE ON [DatabaseAlias] |
APPLICATIONS ON [DatabaseAlias] |
TABLES ON [DatabaseAlias] |
TABLESPACES ON [DatabaseAlias] |
LOCKS ON [DatabaseAlias] |
BUFFERPOOLS ON [DatabaseAlias] |
DYNAMIC SQL ON [DatabaseAlias]
其中的 DatabaseAlias 表示將為其收集快照監(jiān)控器信息的那個(gè)數(shù)據(jù)庫(kù)被指派的別名。
在捕獲快照時(shí),如果您希望其中僅包含在與 PAYROLL 數(shù)據(jù)庫(kù)交互的應(yīng)用程序所擁有的鎖上收集的數(shù)據(jù),可通過執(zhí)行以下命令來實(shí)現(xiàn):
GET SNAPSHOT FOR LOCKS ON PAYROLL
此命令產(chǎn)生的輸出結(jié)果應(yīng)與以下示例類似。(務(wù)必牢記,這只是一個(gè)簡(jiǎn)單的示例。實(shí)際的監(jiān)控環(huán)境往往會(huì)生成大批數(shù)據(jù)。)
GET SNAPSHOT 命令輸出示例
Database Lock Snapshot
Database name = PAYROLL
Database path = C:\DB2\NODE0000\SQL00002\
Input database alias = PAYROLL
Locks held = 2
Applications currently connected = 1
Agents currently waiting on locks = 0
Snapshot timestamp = 06-12-2004 08:39:40.750316
Application handle = 8
Application ID = *LOCAL.DB2.00E286133931
Sequence number = 0001
Application name = db2bp.exe
CONNECT Authorization ID = DB2ADMIN
Application status = UOW Waiting
Status change time = Not Collected
Application code page = 1252
Locks held = 2
Total wait time (ms) = Not Collected
List Of Locks
Lock Name = 0x94928D848F9F949E7B89505241
Lock Attributes = 0x00000000
Release Flags = 0x40000000
Lock Count = 1
Hold Count = 0
Lock Object Name = 0
Object Type = Internal P Lock
Mode = S
Lock Name = 0x96A09A989DA09A7D8E8A6C7441
Lock Attributes = 0x00000000
Release Flags = 0x40000000
Lock Count = 1
Hold Count = 0
Lock Object Name = 0
Object Type = Internal P Lock
Mode = S
如您所見,GET SNAPSHOT 命令可用于捕獲幾種不同類型的監(jiān)控?cái)?shù)據(jù),包括:
- DB2 Database Manager 實(shí)例數(shù)據(jù)
- 受一個(gè)實(shí)例控制的所有活動(dòng)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)數(shù)據(jù)
- 應(yīng)用程序數(shù)據(jù)
- 緩沖池活動(dòng)數(shù)據(jù)
- 表空間數(shù)據(jù)
- 表數(shù)據(jù)
- 鎖數(shù)據(jù)(關(guān)于具有的所有鎖的信息)
- 動(dòng)態(tài) SQL 數(shù)據(jù)(SQL 語句緩存器在某個(gè)時(shí)間點(diǎn)所具有的 SQL 語句的相關(guān)信息)
或許您已注意到,可用快照監(jiān)控器開關(guān)與捕獲快照時(shí)可收集的監(jiān)控?cái)?shù)據(jù)的各種類型之間有著直接關(guān)系。若將特定快照監(jiān)控器開關(guān)關(guān)閉,再捕獲與此開關(guān)相關(guān)的監(jiān)控元素的快照,則所捕獲到的監(jiān)控?cái)?shù)據(jù)將不包含任何值。(在前面的數(shù)據(jù)中,所列出的部分值為 Not Collected,這正是因?yàn)槠鋵?duì)應(yīng)的快照監(jiān)控器開關(guān)已關(guān)閉。此外,若在捕獲快照時(shí)未獲得任何鎖,則 Locks held 的值將為 0, List of Locks 信息則根本不會(huì)出現(xiàn)。)
使用 SQL 捕獲快照監(jiān)控?cái)?shù)據(jù)
在 DB2 UDB 的較早版本中,捕獲快照監(jiān)控?cái)?shù)據(jù)的惟一途徑就是執(zhí)行 GET SNAPSHOT 命令或在應(yīng)用程序中調(diào)用其相應(yīng)的 API。在 DB2 UDB V8.1 中,引入了通過構(gòu)建查詢捕獲快照監(jiān)控?cái)?shù)據(jù)的能力。這種方法依賴于 20 個(gè)特殊快照監(jiān)控器表函數(shù),在 V9.1 中,這些函數(shù)的作用已被弱化。現(xiàn)在,可使用一組全新的 SQL 例程來訪問特殊管理視圖中存儲(chǔ)的數(shù)據(jù),通過這種方法來獲取快照監(jiān)控?cái)?shù)據(jù)。表 2 介紹了這些例程和視圖。
表 2. 快照管理 SQL 例程和視圖
管理視圖 |
例程 |
描述 |
APPLICATIONS |
N/A |
這一管理視圖包括連接的數(shù)據(jù)庫(kù)應(yīng)用程序的相關(guān)信息。 |
APPL_PERFORMANCE |
N/A |
這一管理視圖包含選定行與各應(yīng)用程序讀取行數(shù)的比率。 |
BP_HITRATIO |
N/A |
這一管理視圖包含緩沖池的命中率,包括總體、數(shù)據(jù)和索引。 |
BP_READ_IO |
N/A |
這一管理視圖包含緩沖池的讀取性能信息。 |
BP_WRITE_IO |
N/A |
這一管理視圖包含緩沖池的寫入性能信息。 |
CONTAINER_UTILIZATION |
N/A |
這一管理視圖包含表空間容器和利用率的相關(guān)信息。 |
LOCKS_HELD |
N/A |
這一管理視圖包含當(dāng)前具有的鎖的相關(guān)信息。 |
LOCKWAITS |
N/A |
這一管理視圖包含等待授權(quán)的鎖的信息。 |
LOG_UTILIZATION |
N/A |
這一管理視圖包含關(guān)于當(dāng)前連接的數(shù)據(jù)庫(kù)的日志利用情況的信息。 |
LONG_RUNNING_SQL |
N/A |
這一管理視圖包含當(dāng)前連接的數(shù)據(jù)庫(kù)中運(yùn)行時(shí)間最長(zhǎng)的 SQL 語句的相關(guān)信息。 |
QUERY_PREP_COST |
N/A |
這一管理視圖包含一個(gè) SQL 語句列表,以及關(guān)于各語句準(zhǔn)備所需時(shí)間的信息。 |
N/A |
SNAP_WRITE_FILE |
此過程將系統(tǒng)快照數(shù)據(jù)寫入實(shí)例目錄的 tmp 子目錄中的一個(gè)文件。 |
SNAPAGENT |
SNAP_GET_AGENT |
該管理視圖和表函數(shù)返回應(yīng)用程序快照的代理信息,特別是 agent 邏輯數(shù)據(jù)組。 |
SNAPAGENT_MEMORY_POOL |
SNAP_GET_AGENT_MEMORY_POOL |
該管理視圖和表函數(shù)返回代理級(jí)的內(nèi)存使用信息。 |
SNAPAPPL |
SNAP_GET_APPL |
該管理視圖和表函數(shù)返回應(yīng)用程序快照的應(yīng)用程序信息,特別是 appl 邏輯數(shù)據(jù)組。 |
SNAPAPPL_INFO |
SNAP_GET_APPL_INFO |
該管理視圖和表函數(shù)返回應(yīng)用程序快照的應(yīng)用程序信息,特別是 appl_info 邏輯數(shù)據(jù)組。 |
SNAPBP |
SNAP_GET_BP |
該管理視圖和表函數(shù)返回緩沖池快照的緩沖池信息,特別是 bufferpool 邏輯數(shù)據(jù)組。 |
SNAPBP_PART |
SNAP_GET_BP_PART |
該管理視圖和表函數(shù)返回緩沖池快照的緩沖池信息,特別是 bufferpool_nodeinfo 邏輯數(shù)據(jù)組。 |
SNAPCONTAINER |
SNAP_GET_CONTAINER_V91 |
該管理視圖和表函數(shù)返回 tablespace_container 邏輯數(shù)據(jù)組的表空間快照信息。 |
SNAPDB |
SNAP_GET_DB_V91 |
該管理視圖和表函數(shù)返回?cái)?shù)據(jù)庫(kù)(dbase)和數(shù)據(jù)庫(kù)存儲(chǔ)(db_storaeg_group)邏輯分組的快照信息。 |
SNAPDB_MEMORY_POOL |
SNAP_GET_DB_MEMORY_POOL |
該管理視圖和表函數(shù)返回?cái)?shù)據(jù)庫(kù)級(jí)內(nèi)存使用情況的信息,僅用于 UNIX(R) 平臺(tái)。 |
SNAPDBM |
SNAP_GET_DMB |
該管理視圖和表函數(shù)返回快照監(jiān)控器 DB2 數(shù)據(jù)庫(kù)管理器(dbm)邏輯分組信息。 |
SNAPDBM_MEMORY_POOL |
SNAP_GET_DBM_MEMORY_POOL |
該管理視圖和表函數(shù)返回?cái)?shù)據(jù)庫(kù)管理器級(jí)的內(nèi)存使用情況信息。 |
SNAPDETAILLOG |
SNAP_GET_DETAILLOG_V91 |
該管理視圖和表函數(shù)返回 detail_log 邏輯數(shù)據(jù)組的快照信息。 |
SNAPDYN_SQL |
SNAP_GET_DYN_SQL_V91 |
該管理視圖和表函數(shù)返回 dynsql 邏輯數(shù)據(jù)組的快照信息。 |
SNAPFCM |
SNAP_GET_FCM |
該管理視圖和表函數(shù)返回?cái)?shù)據(jù)庫(kù)管理器快照的快速通信管理器(FCM)相關(guān)信息,特別是 fcm 邏輯數(shù)據(jù)組。 |
SNAPFCM_PART |
SNAP_GET_FCM_PART |
該管理視圖和表函數(shù)返回?cái)?shù)據(jù)庫(kù)管理器快照的快速通信管理器(FCM)相關(guān)信息,特別是 fcm_node 邏輯數(shù)據(jù)組。 |
SNAPHADR |
SNAP_GET_HADR |
該管理視圖和表函數(shù)返回?cái)?shù)據(jù)庫(kù)快照的高可用性災(zāi)難恢復(fù)信息,特別是 hadr 邏輯數(shù)據(jù)組。 |
SNAPLOCK |
SNAP_GET_LOCK |
該管理視圖和表函數(shù)返回關(guān)于鎖的快照信息,特別是 lock 邏輯數(shù)據(jù)組。 |
SNAPLOCKWAIT |
SNAP_GET_LOCKWAIT |
該管理視圖和表函數(shù)返回管理鎖等待的快照信息,特別是 lockwait 邏輯數(shù)據(jù)組。 |
SNAPSTMT |
SNAP_GET_STMT |
該管理視圖和表函數(shù)返回應(yīng)用程序快照的語句信息。 |
SNAPSTORAGE_PATHS |
SNAP_GET_STORAGE_PATHS |
該管理視圖和表函數(shù)從 db_storage_group 邏輯數(shù)據(jù)組中為數(shù)據(jù)庫(kù)返回一個(gè)自動(dòng)存儲(chǔ)路徑列表,特別還包括各存儲(chǔ)路徑的文件系統(tǒng)信息。 |
SNAPSUBSECTION |
SNAP_GET_SUBSECTION |
該管理視圖和表函數(shù)返回關(guān)于應(yīng)用程序子段的信息,也就是子段邏輯監(jiān)控分組。 |
SNAPSWITCHES |
SNAP_GET_SWITCHES |
該管理視圖和表函數(shù)返回關(guān)于數(shù)據(jù)庫(kù)快照開關(guān)狀態(tài)的信息。 |
SNAPTAB |
SNAP_GET_TAB_V91 |
該管理視圖和表函數(shù)返回 table 邏輯數(shù)據(jù)組中的快照信息。 |
SNAPTAB_REORG |
SNAP_GET_TAB_REORG |
該管理視圖和表函數(shù)返回表重組信息。 |
SNAPTBSP |
SNAP_GET_TBSP_V91 |
該管理視圖和表函數(shù)返回 tablespace 邏輯數(shù)據(jù)組的快照信息。 |
SNAPTBSP_PART |
SNAP_GET_TBSP_PART_V91 |
該管理視圖和表函數(shù)返回 tablespace_nodeinfo 邏輯數(shù)據(jù)組的快照信息。 |
SNAPTBSP_QUIESCER |
SNAP_GET_TBSP_QUIESCER |
該管理視圖和表函數(shù)返回表空間快照的 quiescer 信息。 |
SNAPTBSP_RANGE |
SNAP_GET_TBSP_RANGE |
該管理視圖和表函數(shù)返回一個(gè) range 快照的信息。 |
SNAPUTIL |
SNAP_GET_UTIL |
該管理視圖和表函數(shù)返回 utility_info 邏輯數(shù)據(jù)組在實(shí)用工具方面的快照信息。 |
SNAPUTIL_PROGRESS |
SNAP_GET_UTIL_PROGRESS |
該管理視圖和表函數(shù)返回關(guān)于實(shí)用工具進(jìn)展的信息,特別是 progress 邏輯數(shù)據(jù)組。 |
TBSP_UTILIZATION |
N/A |
這一管理視圖中包含表空間配置和利用率信息。 |
TOP_DYNAMIC_SQL |
N/A |
這一管理視圖中包含可按執(zhí)行次數(shù)、平均執(zhí)行時(shí)間、排序次數(shù)或各語句分類排序的頂級(jí)動(dòng)態(tài) SQL 語句。 |
舉例來說,如果您希望為當(dāng)前連接的數(shù)據(jù)庫(kù)獲取鎖信息,可執(zhí)行類似于下面這樣的查詢:
SELECT AGENT_ID, LOCK_OBJECT_TYPE, LOCK_MODE, LOCK_STATUS
FROM SYSIBMADM.SNAPLOCK
SNAP_GET_LOCK 表函數(shù)返回與 SNAPLOCK 管理視圖相同的信息,但允許您為特定數(shù)據(jù)庫(kù)或特定數(shù)據(jù)庫(kù)分區(qū)(而非當(dāng)前連接的數(shù)據(jù)庫(kù))上的特定數(shù)據(jù)庫(kù)檢索信息。使用 SNAP_GET_LOCK 表函數(shù)的查詢形式如下:
SELECT AGENT_ID, LOCK_OBJECT_TYPE, LOCK_MODE, LOCK_STATUS
FROM TABLE(SNAP_GET_LOCK('',-1)) AS T
在使用 SNAP_GET_LOCKWAIT 表函數(shù)時(shí),SNAP_GET_LOCK 表函數(shù)提供的信息與 GET SNAPSHOT FOR LOCKS ON [DatabaseAlias] 命令相同。
重置快照監(jiān)控器計(jì)數(shù)器
上文已經(jīng)介紹過,監(jiān)控元素用于存儲(chǔ)數(shù)據(jù)的一種元素就是計(jì)數(shù)器,計(jì)數(shù)器持續(xù)保存活動(dòng)或事件發(fā)生的總次數(shù)。計(jì)數(shù)器值在監(jiān)控器的整個(gè)生命周期中是逐漸增加的。那么計(jì)數(shù)開始的準(zhǔn)確時(shí)間是什么?典型情況下,打開快照監(jiān)控器開關(guān)或建立數(shù)據(jù)庫(kù)連接時(shí),計(jì)數(shù)便立即開始(若使用的是實(shí)例級(jí)監(jiān)控,則計(jì)數(shù)在應(yīng)用程序第一次建立起與該實(shí)例控制的數(shù)據(jù)庫(kù)的連接時(shí)開始)。但有時(shí)您可能希望將所有計(jì)數(shù)器重置為 0,而且不想先關(guān)閉快照監(jiān)控器開關(guān),之后再打開,也不希望終止并重新建立數(shù)據(jù)庫(kù)連接。目前,將所有快照監(jiān)控器計(jì)數(shù)器迅速重置為 0 的最簡(jiǎn)便的方法就是執(zhí)行 RESET MONITOR 命令。此命令的基本語法是:
RESET MONITOR ALL
或
RESET MONITOR FOR [DATABASE | DB] [DatabaseAlias]
其中 DatabaseAlias 表示將為之重置快照監(jiān)控器計(jì)數(shù)器的數(shù)據(jù)庫(kù)的別名。
如果您希望將一個(gè)實(shí)例所控制的所有數(shù)據(jù)庫(kù)的快照監(jiān)控器計(jì)數(shù)器均重置為 0,可以連接到該實(shí)例,然后執(zhí)行一條 RESET MONITOR 命令,如下所示:
RESET MONITOR ALL
另一方面,如果您只希望將與 SAMPLE 數(shù)據(jù)庫(kù)相關(guān)的快照監(jiān)控器計(jì)數(shù)器重置為 0,也可以通過執(zhí)行 RESET MONITOR 命令實(shí)現(xiàn),如下所示:
RESET MONITOR FOR DATABASE SAMPLE
這里有一個(gè)需注意的重點(diǎn),對(duì)于一個(gè)由快照監(jiān)控器開關(guān)控制的特殊監(jiān)控組,您不能使用 RESET MONITOR 命令選擇性地為其重置計(jì)數(shù)器。要執(zhí)行此類操作,您必須關(guān)閉恰當(dāng)?shù)谋O(jiān)控器開關(guān),然后再打開,或者終止并重新建立數(shù)據(jù)庫(kù)連接。