DB2通用資料庫進程全接觸_db2

來源:互聯網
上載者:User
簡介

  UNIX 和 Linux 使用者通常會檢查運行在其伺服器上的進程,以執行問題分析及檢查伺服器中消耗的資源。該資訊不僅對執行問題和資源分析的管理員有用,而且對於那些開發高度可用性和容錯移轉指令碼(這些指令碼監控 DB2 進程,以確定何時需要進行諸如資料庫重新啟動或伺服器容錯移轉之類的操作)的人也很有用。

  如果您正在使用 AIX,則可以使用命令 ps -ef 檢查進程。在 Solaris 和 HP-UX 上, ps -ef 將只顯示所有伺服器端進程(例如:代理程式、記錄器、頁面清除程式和預取程式)的 db2sysc 進程(主 DB2 引擎進程)。如果您正在使用 Solaris 或 HP-UX,利用命令 /usr/ucb/ps -axw 您可以看到這些伺服器端進程。這兩種版本的 ps 命令都可以在 Linux 上使用。

  當在運行 DB2 通用資料庫客戶機或伺服器軟體的電腦上執行該命令時,您可能會看到列出了幾個 DB2 進程。本文的目的是記錄這些進程,並且解釋它們的作用以及它們何時可能會運行。儘管手冊 DB2 UDB V8 Administration Guide - Performance 的第 2 章記錄了大多數重要的進程,但該列表並不完整。通過閱讀本文,您將會理解每個 DB2 進程,當您看到那些進程時,您會開始明白 DB2 正在執行什麼操作。

  請注意,DB2 在 Windows 上工作方式的實現與基於 Linux 和 UNIX 環境的實現稍有不同。在 Windows 中,只有一個進程(db2sysc),在該進程下的每個引擎指派單元(engine dispatchable unit,EDU)都被作為線程來實現。儘管本文討論的是進程,但是在 Windows 環境中應當把它們看成線程。通過 Windows 工作管理員(Task Manager),您將能夠看到每個執行個體的 db2sysc 進程(db2syscs.exe)。還將顯示其它 Windows 服務/進程,我們將在本文中解釋它們是什麼。

  警告。請勿直接幹預正常 DB2 環境中的 DB2 進程。在 Linux 或 UNIX 中利用 kill -9 命令殺死 DB2 進程可能會導致 DB2 出現異常行為。例如,殺死 db2sysc 進程將使整個 DB2 執行個體停止運行。本文旨在協助您理解進程,而不是直接操作它們。

  為什麼研究 DB2 進程。

  我們的個人經驗已表明這方面的知識很有價值,並且我們拜訪的客戶也向我們尋求這類資訊。還不相信嗎。看一看下面的實際方案,並且親眼看看如何通過檢查在系統上啟動並執行 DB2 進程來解決問題:

  方案 1:罕見的緩衝池頁面的清除

  一個運行電子商務(eCommerce)網站並使用 DB2 作為資料庫伺服器的客戶報告說,在一整天裡,資料庫對應用程式請求的回應時間會不時地變得很長。資料庫快照集未顯示當時有任何異常發生。通過檢查伺服器上進程在其中某一時刻的 CPU 使用方式,我們可以確定 I/O 清除程式(db2pclnr)消耗了超過 90% 的 CPU 時間。隨後通過研究 I/O 清除程式觸發器並對其進行相應的調優,我們消除了這種情況,使得電子商務網站每天可以處理的輸送量提高了 50% 以上。

  方案 2:真相大白

  在拜訪 IBM 的一家業務夥伴以進行一些 DB2 效能調優工作時,我們碰到了查詢回應時間全面延長的問題。除了常規的程式之外,顯示應用程式列表的命令並未顯示當時有任何其它程式在運行。在獲得 DB2 快照之前,我們看了一下運行在 DB2 伺服器上的 DB2 進程,發現 db2rebal 進程正在運行。當將某個容器添加到 DMS 資料表空間時,就會使用該進程執行資料的重新均衡工作。客戶“承認”,那天的早些時候他將一個容器添加到了包含 40 GB 表的資料表空間。一旦重新均衡工作完成,查詢回應時間恢複如初。

  揭開通知和診斷記錄的廬山真面目

  管理通知日誌和診斷記錄( db2diag.log )是重要的工具,管理員可以使用這些工具來理解資料庫的活動和功能。這些日誌通常包含有關 DB2 進程的資訊,如下面取自 db2diag.log 項的樣本所示:

2000-03-06-11.53.18.001160  Instance:myInst  Node:000PID:78121(db2agent (TEST)) TID:352 Appid:*LOCAL.payroll.000306140834lock_manager     sqlplrq  Probe:111  Database:SAMPLEDIA9999E An internal return code occurred. Report the following:"0xFFFFE10E".


  在該樣本中,訊息來自進程標識號為 78121 的進程。該進程的名稱是 db2agent,並與名為 TEST 的資料庫相連。理解進程的功能有助於您瞭解管理通知日誌和 db2diag.log 中各項的意義。

  DB2 進程模型

  儘管 DB2 Administration Guide - Performance 手冊中介紹了 DB2 進程模型,但是本文還是將對其做一下簡要概述。首先說明 代理程式(agent)的概念。

  代理程式

  代理程式可被認為是一個代表應用程式執行所有資料庫操作的“工作程式”。DB2 代理程式主要有兩種:

  協調程式代理程式(Coordinator Agent)(db2agent)

  協調程式代理程式代表應用程式協調工作,並使用處理序間通訊(IPC)或遠程通訊協定與其它代理程式進行通訊。所有來自客戶機應用程式的串連請求,無論是本地還是遠端,都分配了相應的協調程式代理程式。

  子代理程式(Subagent)(db2agntp)

  如果啟用了 intra_parallel 資料庫管理員配置參數,協調程式代理程式就會把資料庫請求分發給子代理程式(db2agntp)。這些代理程式執行應用程式的請求。一旦建立了協調程式代理程式,通過協調對資料庫執行請求的子代理程式(db2agent),協調程式代理程式代表其應用程式處理所有資料庫請求。

  當某個代理程式或子代理程式完成其任務時,它就轉為空白閑狀態。當子代理程式處於空閑狀態時,其名稱從 db2agntp 變為 db2agnta。

  例如:

  db2agntp進程是活動的子代理程式,它們當前正在執行協調程式代理程式的工作。僅當啟用了分區內並行性時,這些進程才存在。

  db2agnta進程是閒置子代理程式,協調程式代理程式過去曾使用過它們。

  空閑代理程式駐留在代理程式池中。這些代理程式可用於來自代表客戶機程式進行操作的協調程式代理程式,或來自代表現有協調程式代理程式進行操作的子代理程式的請求。可用的代理程式數取決於資料庫管理員配置參數 maxagents和 num_poolagents。

  稍後我們將在本文中描述其它代理程式類型,如並行修復代理程式(db2agnsc)。

  下面兩幅圖顯示了 DB2 進程模型。

  圖 1. 無串連集中的 DB2 進程模型(適用於非分區資料庫)

  圖 1中的圓圈表示引擎指派單元(EDU),在 Linux/UNIX 平台上稱為進程,而在 Windows 上稱為線程。

  應用程式 A(App A)和 B(App B)是本地應用程式,運行它們的機器與 DB2 伺服器所駐留的機器是同一台機器。當這些應用程式發出串連資料庫的 CONNECT 命令時,db2ipccm 接聽程式進程建立資料庫管理員和應用程式之間的通訊。db2ipccm 還將與協調程式代理程式 EDU(db2agent)一起工作,後者直接與客戶機應用程式進行聯絡,以建立客戶機應用程式和協調程式之間共用記憶體的通訊。一旦建立了這種通訊,本地客戶機上的應用程式就被串連到資料庫。

  應用程式 C(App C)是一個遠程應用程式,它所駐留的機器與用於 DB2 伺服器的機器不同。遠程客戶機通過 db2tcpcm 接聽程式進程建立 TCP/IP 通訊。然後 db2tcpcm 與 db2agent 一起工作,後者成為應用程式的協調程式代理程式,並將串連傳遞給該代理程式。之後,協調程式代理程式與遠程客戶機應用程式進行聯絡,並被串連到資料庫。

  圖 2. 無串連集中的 DB2 進程模型(適用於分區資料庫)

  圖 2與圖 1 類似,但是它適用於分區資料庫。Node0000 和 Node0001 表示兩台不同的機器,這兩台機器上分別駐留了一部分資料庫。它們之間的進程和互動作用與圖 1 中描述的相同;但是,有其它一些僅適用於該環境的進程。例如,db2fcmd 進程是快速通訊管理器(Fast Communication Manager)進程,用於管理不同分區之間的通訊。下一節中的表將更詳細地描述適用於分區資料庫的其它進程。

  進程

  以下各表分別根據每個執行個體、每個資料庫以及按照功能列出了所有 DB2 進程。請注意,下表中的一些進程並不是按照字母順序列出的,而是根據功能進行分組的。如果您希望以字母順序尋找進程,請參閱下面的 表 7。

  表 1. 每個執行個體的進程 — 無串連,無活動的資料庫

進程名 描述 適用範圍 db2cart 確定何時歸檔記錄檔,並調用使用者出口來執行實際的歸檔工作。每個執行個體有一個 db2cart 進程,但是僅當執行個體中至少有一個資料庫啟用了 USEREXIT 時,該進程才運行。 所有 db2chkau 由 DB2 審計工具使用以將一些項記錄到審計日誌。僅當啟用了審計時該進程才是活動的。 所有 db2ckpw 用於檢查 DB2 伺服器上的使用者標識和密碼。由於 DB2 依賴於作業系統層級的認證,因此,當某個使用者或應用程式串連到伺服器上的資料庫時,使用該進程驗證使用者標識和密碼。當將 AUTHENTICATION 設定為 SERVER 時,或者當串連是從非安全的作業系統建立的時候,就會進行認證。 UNIX/Linux db2disp DB2 代理程式指派器進程。當啟用了串連集中時,該進程在分配給應用程式的邏輯代理程式和可用的協調代理之間指派應用程式串連。

 

  僅當啟用了串連集中時該進程才存在。 所有 db2fcmd FCM(快速通訊管理器)精靈,用於處理分區間的通訊。每個伺服器、每個分區就有一個這樣的進程。 只適用於多分區資料庫環境 db2fmcd 故障監視器協調程式(Fault Monitor Coordinator)精靈進程。每個物理機器就有一個這樣的進程。 只適用於 UNIX db2fmd 為每個由故障監視器監控的 DB2 執行個體而啟動的故障監視器精靈進程。該進程是由協調精靈(db2fmcd)監控的,因此,如果您殺死 db2fmd 進程,那麼 db2fmcd 將使其重新運行。 只適用於 UNIX db2fmtlg 當資料庫被配置成 LOGRETAIN ON 且 USEREXIT OFF 時,在日誌路徑中預分配記錄檔。如果完成了該工作,那麼在正常的處理過程中,當從一個記錄檔切換到另一個記錄檔時,引擎進程就無需等待。 所有 db2gds DB2 全域守護進程衍生程式(Global Daemon Spawner)進程,該進程啟動 UNIX 上的所有 DB2 EDU(進程)。每個執行個體或每個資料庫分區就有一個 db2gds。 只適用於 UNIX db2glock 全域死結檢測器。該進程協調從每個資料庫分區上的 db2dlock 進程收集的資訊,以檢查資料庫分區之間是否存在死結情形。db2glock 進程運行在多分區資料庫的目錄分割上。 只適用於多分區資料庫環境 db2govd DB2 控制器,它是一個反應性的管理進程。如果啟用了 DB2 控制器,該進程按照控制器設定檔中指定的時間間隔來拍攝快照,並依據所有的配置規則來檢查快照。如果違反了某個規則,則採取指定的操作。 所有 db2panic 緊急代理程式。如果任何資料庫分區上的代理程式都不空閑,那麼該進程就處理一些緊急的請求。 只適用於多分區資料庫環境 db2pdbc PDB(並行資料庫,Parallel Database)控制器。它處理來自遠程節點的並行請求。 只適用於多分區資料庫環境 db2rebal 重新均衡器進程。當將容器添加到某個現有的資料表空間,並且需要對現有資料進行重新均衡時,就調用該進程。該進程非同步地執行重新均衡工作。 所有 db2resyn 重新同步處理管理員進程,用於支援使用兩階段交易認可的應用程式 所有 db2srvlst 該進程用於管理系統(如 OS/390)的地址清單。 所有 db2sysc 主 DB2 系統控制器或引擎。如果沒有該進程,資料庫伺服器就不能運行。 所有 db2syslog 系統記錄器進程。該進程寫到作業系統的錯誤記錄檔工具。在 UNIX 上,必須通過編輯檔案 syslog.conf 才能啟用該進程。在 Windows 上,DB2 將自動編寫 Windows 事件記錄。 所有 db2wdog DB2 看守程式。在 UNIX 中,該進程是必需的,因為 UNIX 中的進程只能跟蹤其父進程的標識。每次新進程啟動時,db2gds 就會通知 DB2 看守程式。如果任何 DB2 進程接收到 ctrl-c 或其它異常訊號,該進程就會向看守程式發送訊號,而看守程式會將訊號傳播給執行個體中其它所有進程。 只適用於 UNIX dlasync DB2 資料鏈路(Data Link)(檔案管理工具)伺服器的監視器。僅當 DB2 配置了資料鏈路時該進程才存在。 只適用於資料鏈路 表 2. 每個執行個體和每個串連

進程名 描述 適用範圍 db2agent DB2 協調程式代理程式,它代表應用程式執行所有資料庫請求。除非啟用了串連集中器,否則每個已連線應用程式程式都將有一個 db2agent 進程。

 

  如果啟用了分區內並行性,那麼 db2agent 進程將調用 DB2 子代理程式來執行工作,並且它們會將結果集返回給協調程式代理程式,再返回給應用程式。

  在分區資料庫中,協調程式代理程式將位於應用程式串連到的分區上。 所有 db2agentg DRDA 應用程式請求器(Application Requester)的網關代理程式。 所有 db2agnsc 並行修復代理程式。在前滾和重新啟動恢複的過程中使用該代理程式來並行地執行日誌中的操作。與串列恢複相比,這可以縮短恢復。

 

  註:該進程支援已記錄事務中的並行性以及並行事務之間的並行性。 所有 db2agnta 閒置子代理程式,過去協調代理曾使用過,並且現在仍然與協調代理進程關聯。

 

  當 INTRA_PARALLEL dbm cfg 參數設定成 YES 時會出現該進程。 所有 db2agntp 這是一個子代理程式,它代表與之相關的協調代理執行當前工作。這些進程提供了分區內並行性,也就是在資料庫執行個體/分區中並行地執行查詢的能力。

 

  當 INTRA_PARALLEL dbm cfg 參數設定成 YES 時會出現該進程。 所有 db2ipccm IPC 通訊管理器。每個資料庫分區就有一個這樣的管理器。這是用於本地客戶機串連的處理序間通訊接聽程式。

 

  本地客戶機串連是由運行 DB2 伺服器的同一台電腦上的某個應用程式(如 CLP)建立的串連。 所有 db2tcpcm TCP 通訊管理器。它充當 TCP/IP 串連請求的通訊接聽程式。當接聽程式接收到串連請求時,它就將串連與代理程式相關聯,然後再繼續偵聽更多串連請求。 所有 db2tcpdm 用於 TCP/IP 發現請求的通訊接聽程式。當配置助手(CA)在網路中搜尋遠程 DB2 伺服器及其資料庫時,它就會發出發現請求。 所有 db2snacm SNA/APPC 通訊管理器。它充當 SNA/APPC 串連請求的通訊接聽程式。當接聽程式接收到串連請求時,它就將串連與代理程式相關聯,然後再繼續偵聽更多串連請求。 所有 表 3. 每個執行個體和每個活動資料庫

進程名 描述 適用範圍 db2dlock 本地死結檢測器,每個資料庫分區就有這樣一個檢測器。它掃描鎖定列表,並尋找死結情形。當遇到死結情形時,其中涉及的某個應用程式/事務就被選做“犧牲品”並被復原。 所有 db2estor 用於複製資料庫緩衝池和擴充儲存空間之間的頁面。僅當啟用了資料庫的擴充儲存空間時這些進程才出現。 所有 db2event 事件監視器進程。每個活動的事件監視器,每個活動的資料庫就會有一個 db2event 進程。這些進程捕獲已定義的“事件”並寫到為事件監視器指定的輸出檔案。 所有 db2loggr 資料庫日誌閱讀器。該進程在執行下列操作時讀取資料庫記錄檔:

 

  交易處理(即復原)

  重新啟動恢複

  前滾操作 所有 db2loggw 資料庫日誌記錄器。該進程使用日誌緩衝區的日誌記錄對磁碟上的記錄檔進行重新整理。 所有 db2logts 該進程用於收集有關當某個資料表空間被修改時哪些日誌是活動的曆史資訊。該資訊記錄在資料庫目錄的 DB2TSCHG.HIS 檔案中。通過啟用跳過操作(即跳過前滾操作不需要的那些記錄檔),可以使用該進程來加速資料表空間前滾恢複。 所有 db2pclnr 緩衝池頁面清除程式。這些進程以非同步方式將“髒”頁面從緩衝池寫回到磁碟。“髒”頁面是這樣一個頁面:在將該頁面讀入緩衝池後對其進行過更改,並且磁碟上的映像與緩衝池中的映像不再一樣。

 

  當頁面清除程式被“觸發”時,它們將同時全部運行。一旦它們完成其分配的工作,就進入睡眠狀態,直到被再次觸發。

  頁面清除程式的任務是確保緩衝池有空間可以容納正在被應用程式檢索的新頁面。

  每個資料庫的頁面清除程式的數量是通過 NUM_IOCLEANERS 資料庫配置參數配置的。 所有 db2pfchr 緩衝池預取程式。這些進程代表應用程式在讀取資料和索引資訊之前,從磁碟讀該資訊並且將該資訊讀入資料庫緩衝池。預取程式非同步地執行這個“預讀(read-ahead)”操作。

 

  代表應用程式進行工作的 DB2 代理程式發送預取請求,預取程式為這些請求提供服務。預取程式執行大塊 I/O 來更有效地讀取資料。每個資料庫的預取程式的數量是由 NUM_IOSERVERS 資料庫配置參數配置的。 所有 表 4. 按功能分類的其它進程

進程名 描述 適用範圍 db2bm 備份/恢複緩衝區操縱器。該進程用於在備份操作過程中從資料表空間進行讀取,以及用於在恢複操作過程中寫到資料表空間。通過 BACKUP 或 RESTORE 命令配置的每個備份/恢複緩衝區都將有一個 db2bm 進程。 所有 db2fmp 這是一些受防護的進程,用於在防火牆外的伺服器上運行使用者代碼,這些代碼 既有預存程序, 又有使用者定義的函數。

 

  db2fmp 始終是獨立的進程,但是根據它執行的常式類型,也可能是多線程的。

  註:該進程替換了 DB2 以前版本中使用的 db2udf 和 db2dari 這兩個進程。 所有 db2lbs LOAD LOB 掃描程式。僅當裝入工具正在裝入帶有 LOB 列的表時才使用它們。這些進程掃描表的 LOB 對象,並將該資訊讀回表中。 所有 db2lbmX LOAD 緩衝區操縱器。最後一個字元“X”表示一或更大的數字。該進程將已裝入的資料寫到資料庫,並且可能涉及到非同步 I/O。“X”始終是 1,不過通常也會是更大的數字,這取決於試探值(heuristic)。試探值取決於系統上的 CPU 數以及被寫的容器數。

 

  這個“智能的預設值”可能會被 LOAD 命令的 DISK_PARALLELISM 修飾符覆蓋。

  我們應當明白,這個非同步 I/O 不是某些作業系統支援的非同步檔案 I/O;它只意味著我們有一些寫 I/O 的獨立進程。這意味著,正在格式化資料的其它進程不用被 I/O 等待所束縛。 所有 db2lfrmX LOAD 格式化程式進程。最後一個字元“X”表示一或更大的數字。該進程將輸入資料格式化成內部格式。它始終出現在 LOAD 中。該進程使用了智能的預設值,它可能會被 CPU_PARALLELISM 修飾符覆蓋,以選擇最佳的 CPU 數。 所有 db2lfs 當被裝入的表包含 LONG VARCHAR 列時則使用這些進程。這些進程用來讀和格式化表中的 LONG VARCHAR 列。 所有 db2lmr 這是一個 LOAD 媒體閱讀器(Media Reader)進程。它讀取裝入輸入檔案,一旦讀完所有輸入檔案,該進程就會消失。甚至在整個裝入操作完成之前該進程就會消失。 所有 db2lmwX 這些是 LOAD 媒體記錄器進程。最後一個字元“X”表示一或更大的數字。

 

  如果為 LOAD 命令指定了“裝入副本(load copy)”選項,那麼該進程將產生裝入副本。裝入副本本質上就是裝入到表中的資料備份。

  這些媒體記錄器與 BACKUP 和 RESTORE 使用的媒體記錄器相同。就象在命令列上描述的那樣,每個複製會話調用一個媒體記錄器(您可以建立多個檔案的裝入副本)。如果沒有裝入副本,則沒有媒體記錄器。它們根據資料的類型在裝入時從其它進程擷取輸入,但是,由緩衝區操縱器寫的每位元據通常都將被傳遞到媒體記錄器。就如同其它所有的進程那樣,它們由裝入代理程式控制。 所有 db2lrid 該進程在 LOAD 期間執行索引排序,並構建索引記錄標識(Record ID,RID)。

 

  該進程不會出現在非並行資料庫執行個體(即禁用 INTRA_PARALLEL 的執行個體)中。該進程執行的任務由非並行執行個體中的格式化程式 EDU 完成。

  該進程完成下列三種功能:

  SMP 同步

  分配 RID,最後一個將構建索引

  控制 LOAD 格式化程式進程的同步 所有 db2ltsc LOAD 表掃描程式。這些進程掃描資料對象,尋找被裝入的表,並讀取 LOAD 工具的資訊。在 LOAD 追加操作過程中使用這些進程。 所有 db2linit LOAD 初始化子代理程式。這個子代理程式擷取資料庫分區上必需的資源,並將應答序列化,返回給裝入目錄子代理程式。 只適用於多分區資料庫環境 db2lcata LOAD 目錄子代理程式。這個子代理程式只在目錄分割上執行,它負責:

 

  衍生初始化子代理程式

  處理其應答

  儲存目錄分割上的鎖資訊。

  該目錄子代理程式還查詢系統目錄表以確定哪些分區用於資料分割和分區。

  正常的裝入作業只有一個目錄子代理程式。異常情況是裝入無法擷取某些分區上的裝入資源。如果資料庫分區上的設定錯誤被隔離出來,那麼協調程式將從裝入的內部分區列表除去發生故障的分區,並衍生一個新的目錄子代理程式。這一過程會重複進行,直到成功擷取所有分區上的資源,或者在所有分區上都遇到了故障。 只適用於多分區資料庫環境 db2lpprt 裝入預分區子代理程式。這個子代理程式將輸入資料從一個輸入資料流預分區成多個輸出資料流,每個分區子代理程式都有一個這樣的進程。

 

  每個輸入資料流都將有一個預分區子代理程式。 只適用於多分區資料庫環境 db2lpart 裝入分區子代理程式。這個子代理程式將輸入資料分區成多個輸出資料流,將寫入資料的每個資料庫分區都有一個這樣的進程。

 

  分區子代理程式的數量可以由使用者進行配置。預設數量取決於輸出資料庫分區的總數。 只適用於多分區資料庫環境 db2lmibm 裝入微型緩衝區操縱器子代理程式進程。

 

  如果為裝入使用了 partition_only方式,那麼該子代理程式就編寫分區的輸出檔案。

  每個輸出資料庫分區就有一個微型緩衝區操縱器子代理程式。 只適用於多分區資料庫環境 db2lload 裝入子代理程式進程。這個子代理程式負責完成每個資料庫分區上的裝入操作。它衍生格式化程式、ridder、緩衝區操縱器和媒體記錄器 EDU,並監視它們的工作。

 

  每個輸出資料庫分區都有一個裝入子代理程式。 只適用於多分區資料庫環境 db2lrdfl 裝入讀檔案子代理程式進程。這個子代理程式讀取給定資料庫分區上的訊息檔案,並將資料發送回客戶機。每個輸出分區、分區的分區和預分區的分區都有一個讀檔案子代理程式。 只適用於多分區資料庫環境 db2llqcl 裝入查詢清除子代理程式進程。這個子代理程式從給定分區除去所有裝入臨時檔案。

 

  每個輸出分區、分區的分區和預分區的分區都有一個清除子代理程式。 只適用於多分區資料庫環境 db2lmitk 裝入微型任務子代理程式進程。這個子代理程式釋放了在某次從遊標調用的裝入或 CLI 裝入中使用的所有 LOB 定位器。

 

  運行在協調程式分區上的每個遊標/CLI 裝入都有一個微型任務子代理程式。 只適用於多分區資料庫環境 db2lurex 裝入使用者出口子代理程式進程。這個子代理程式運行使用者的檔案傳送命令。

 

  使用檔案傳送命令選項的每個裝入作業都將有一個使用者出口子代理程式。 只適用於多分區資料庫環境 db2lmctk 該進程用於持有、釋放或降級(downgrade)目錄分割上持有的由於裝入而產生的鎖。 只適用於多分區資料庫環境 d2med 這些進程對用於 LOAD、備份和恢複的資料庫資料表空間進行讀和/或寫操作。

 

  它們將已格式化頁面中的資料寫到資料表空間容器。 所有 db2reorg 該進程用於執行 DB2 V8.1 中新的聯機 — 就地重組操作。該進程的工作原理類似於磁碟整理片段工具,它以特定的順序放置資料行。 所有 表 5. 一些常用的可執行檔

進程名 描述 適用範圍 db2 DB2 命令列處理器(CLP)前台進程。它解析 DB2 命令和 SQL 陳述式等。

 

  該進程是 DB2 CLP 的互動式組件。

  這個前端/後端配置對於命令列效能確實有一些益處:前端處理到使用者的串連,而後端與資料庫進行串連。

  您可以使用 CTRL-C/CRTL-Break 來停止處理工作(即當返回太多記錄時),而無需殺死到資料庫的串連。 所有 db2bp 這是 DB2 CLP 的持久後台進程,並且它是實際串連到資料庫的進程。

 

  因為 DB2 CLP 允許 OS 及 DB2 命令/語句,因此這個後台進程是必需的。 所有 db2cmd 類似於 db2 可執行檔,但適用於 Windows。db2cmd 調用 Windows 命令視窗。在 Windows 上,當父線程被終止時,它們不能終止其子進程。DB2 命令列處理器具有一個前端和後端進程/線程,因此我們需要一個 cookie(通過 DB2CMD.EXE 啟動的)在 Windows 上將這些線程聯絡在一起,這樣,如果使用者退出或殺死前端進程,那麼後端進程也被終止。 只適用於 Windows db2start 啟動 DB2 引擎的使用者命令。 所有 db2star2 真正的 db2start 程式。 所有 db2stop 停止 DB2 引擎的使用者命令。 所有 db2stop2 真正的 db2stop 程式。 所有 表 6. 其它 Windows 服務/進程

進程名 描述 db2dasrrm.exe DB2 管理伺服器(Admin Server)進程。通過使用 DB2 控制中心(Control Center),該進程支援本地和遠端管理請求。 db2dasstm.exe DB2 管理伺服器工具 DB 管理器進程。如果已經在 DB2 伺服器上設定了該進程,那麼它就會將資訊存入工具資料庫,並從工具資料庫檢索資訊。 db2fmp.exe 該進程處理/執行所有受防護的預存程序和 UDF。 db2rcmd.exe DB2 遠程命令服務(Remote Command Service),它自動處理分區間的管理通訊。 db2jds.exe DB2 JDBC applet 伺服器服務。該服務攔截和處理串連到 DB2 伺服器的所有 JDBC 應用程式。 db2licd.exe DB2 許可證精靈。該進程驗證 DB2 啟動時正確的 DB2 許可證是否安裝到了伺服器上。 db2sec.exe 在 Windows 的 DB2 伺服器上使用該進程來檢查使用者標識和密碼。由於 DB2 依賴於作業系統層級的認證,因此,當某個使用者或應用程式串連到伺服器上的資料庫時,使用該進程驗證使用者標識和密碼。當將認證設定為 SERVER 時,或者當串連是從非安全的作業系統建立的時候,就會進行這一認證。 db2syscs.exe Windows 上的主要 DB2 系統控制器或引擎。EDU 是該進程中的線程。

 

  請注意末尾的“s”代表 Windows 服務。 IWH2SERV.EXE 倉庫管理器中心(Warehouse Manager Center)。該中心作為 DB2 ESE 的一部分(而不是 DB2 引擎的一部分)安裝。

  下表可能是一個非常有用的索引,可以用它來找到給定的進程。它以字母順序列出了所有進程,並且帶有到上述表的連結。

  表 7. 按字母順序排列的所有進程

# 進程/Windows 服務/可執行檔名 到提供更詳細資料的表的連結 1 db2 表 5 2 db2agent 表 2 3 db2agentg 表 2 4 db2agnsc 表 2 5 db2agnta 表 2 6 db2agntp 表 2 7 db2bm 表 4 8 db2bp 表 5 9 db2cart 表 1 10 db2chkau 表 1 11 db2ckpw 表 1 12 db2cmd 表 5 14 db2dasrrm.exe 表 6 15 db2dasstm.exe 表 6 16 db2disp 表 1 17 db2dlock 表 3 18 db2estor 表 3 19 db2fcmd 表 1 20 db2fmcd 表 1 21 db2fmd 表 1 22 db2fmp 表 1和 表 6 23 d2fmtlg 表 1 24 db2gds 表 1 25 db2glock 表 1 26 db2govd 表 1 27 db2ipccm 表 2 28 db2jds.exe 表 8 29 db2lbmX 表 4 30 db2lbs 表 4 31 db2lcata 表 4 32 db2lfrmX 表 4 33 db2lfs 表 4 34 db2licd.exe 表 6 35 db2linit 表 4 36 db2lload 表 4 37 db2llqcl 表 4 38 db2lmctk 表 4 39 db2lmibm 表 4 40 db2lmitk 表 4 41 db2lmr 表 4 42 db2lmwX 表 4 43 db2loggr 表 3 44 db2loggw 表 3 45 db2logts 表 3 46 db2lpart 表 4 47 db2lpprt 表 4 48 db2lrdfl 表 4 49 db2lrid 表 4 50 db2ltsc 表 4 51 db2lurex 表 4 52 db2med 表 4 53 db2panic 表 1 54 db2pclnr 表 3 55 db2pdbc 表 1 56 db2pfchr 表 3 57 db2rcmd.exe 表 6 58 db2rebal 表 1 59 db2reorg 表 4 60 db2resyn 表 1 61 db2sec.exe 表 6 62 db2snacm 表 2 63 db2srvlst 表 1 64 db2start 表 5 65 db2star2 表 5 66 db2stop 表 5 67 db2stop2 表 5 68 db2sysc 表 1 69 db2syscs.exe 表 6 70 db2tcpcm 表 2 71 db2tcpdm 表 2 72 db2wdog 表 1 73 dlasync 表 1 74 IWH2SERV.EXE 表 6

  樣本

  下面這一節為您示範了一些輸出樣本,當您在 AIX 中執行 ps -ef 命令時可能會獲得這樣的輸出。

  運行 db2start 之後:

  root 49504   1  0 13:13:07   - 0:00 db2wdogdb2inst1 22142 49180  0 13:13:10   - 0:00 db2gdsdb2inst1 43072 49180  0 13:13:17   - 0:00 db2syslogdb2inst1 45294 74134  0 12:12:43 pts/2 0:00 /usr/bin/kshdb2inst1 49180 49504  0 13:13:10   - 0:00 db2syscdb2inst1 55920 49180  0 13:13:19   - 0:00 db2resyncdb2inst1 59012 22142  0 13:13:19   - 0:00 db2srvlstdb2inst1 60680 49180  0 13:13:17   - 0:00 db2ipccm


  資料庫管理員設定檔包含下列設定,它們會影響您最初看到的進程:

Max number of existing agents      (MAXAGENTS) = 200Agent pool size          (NUM_POOLAGENTS) = 100(calculated)Initial number of agents in pool  (NUM_INITAGENTS) = 0


  由於 NUM_INITAGENTS 是 0,所以在運行 db2start 時不會顯示“db2agent (idle)”進程。例如,如果在運行 db2start 之前將 NUM_INITAGENTS 設定為 5,那麼在發出 db2start 之後,將顯示下面這些額外的進程:

db2inst1 35542 59814  0 16:25:57   - 0:00 db2agent (idle)db2inst1 43096 59814  0 16:25:57   - 0:00 db2agent (idle)db2inst1 49628 59814  0 16:25:57   - 0:00 db2agent (idle)db2inst1 58170 59814  0 16:25:57   - 0:00 db2agent (idle)db2inst1 64012 59814  0 16:25:57   - 0:00 db2agent (idle)


  在串連到資料庫 SAMPLE 後(NUM_INITAGENTS 的值仍然保持為 0)

  root 49504   1  0 13:13:07  - 0:00 db2wdogdb2inst1 25844 35124  0 16:04:50  - 0:00 db2pfchrdb2inst1 35124 65638  0 16:04:17  - 0:00 db2gdsdb2inst1 35540 35124  0 16:04:50  - 0:00 db2loggr (SAMPLE)db2inst1 41940 65638  0 16:04:19  - 0:00 db2resyncdb2inst1 45058 35124  0 16:04:50  - 0:00 db2pfchrdb2inst1 49300 35124  0 16:04:19  - 0:00 db2srvlstdb2inst1 49626 35124  0 16:04:50  - 0:00 db2dlock (SAMPLE)db2inst1 55852 65638  0 16:04:17  - 0:00 db2ipccmdb2inst1 58168 35124  0 16:04:50  - 0:00 db2loggw (SAMPLE)db2inst1 59048 35124  0 16:04:50  - 0:00 db2pfchrdb2inst1 64010 55852  0 16:04:50  - 0:00 db2agent (SAMPLE)db2inst1 65638 22238  0 16:04:17  - 0:00 db2syscdb2inst1 70018 35124  0 16:04:50  - 0:00 db2pclnrdb2inst1 72120 35124  0 16:04:51  - 0:00 db2event (DB2DETAILDEADLOCK)db2inst1 74198 65638  0 16:04:17  - 0:00 db2syslogdb2inst1 74578   1  0 16:04:47  - 0:00 /home/db2inst1/sqllib/bin/db2bp 50112C14631 5


  串連到 SAMPLE 資料庫後,“db2agent (SAMPLE)”進程出現了。該進程表明實際上有一個到 SAMPLE 資料庫的串連。如果我們發出以下命令:

db2 connect reset

  db2agent (SAMPLE) 現在將變成 db2agent (idle)。這是因為 NUM_POOLAGENTS 被設定成了大於零的數,這意味著該代理程式儘管是閒置,但在池中將仍然保持被分配的狀態。如果 NUM_POOLAGENTS 被設定成零,那麼在運行了“connect reset”後,將不再有 db2agent 進程運行。

  SAMPLE 資料庫的資料庫設定檔包含下列這些設定:

Number of asynchronous page cleaners  (NUM_IOCLEANERS) = 1Number of I/O servers          (NUM_IOSERVERS) = 3


  請注意,有三個 db2pfchr 進程(與 NUM_IOSERVERS 的值對應)和一個 db2pclnr 進程(與 NUM_IOCLEANERS 的值對應)。

  結束語

  根據不同的 DB2 操作和配置設定,將會有許多其它進程出現和消失。我們已經為您展示了一些樣本方案,這些方案示範了您可以如何觀察哪些進程正在運行、這些進程表明了什麼以及資料庫設定對其產生了怎樣的影響。現在您可以使用這一知識來提高您管理 DB2 資料庫的能力。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.