DB2 通用數(shù)據(jù)庫進(jìn)程全接觸
Dwaine Snow , DB2 UDB 和 Informix IDS 產(chǎn)品經(jīng)理, IBM 多倫多實驗室
Dwaine Snow 是 DB2 UDB 分區(qū)數(shù)據(jù)庫以及查詢巡視器(Query Patroller)和 IBM Informix IDS 的產(chǎn)品經(jīng)理。Dwaine 過去 12 年一直效力于 IBM,過去 8 年里他一直從事 DB2 UDB 方面的工作??梢酝ㄟ^ dsnow@ca.ibm.com 與 Dwaine 聯(lián)系。
Raul F. Chong , DB2 UDB 顧問, IBM 多倫多實驗室
Raul F. Chong 是 IBM 多倫多實驗室的數(shù)據(jù)庫顧問,主要與 IBM 業(yè)務(wù)合作伙伴一起合作。Raul 在 IBM 工作已經(jīng)有 5 年了,其中 3 年在 DB2 技術(shù)支持部(Technical Support)工作,另外 2 年則作為一名專攻數(shù)據(jù)庫應(yīng)用程序開發(fā)和從其它 RDBMS 遷移到 DB2 方面的顧問??梢酝ㄟ^ rfchong@ca.ibm.com 與 Raul 聯(lián)系。
簡介: ?本文描述了 DB2 UDB 在 Linux、UNIX 和 Windows 上使用的進(jìn)程,討論了為什么您需要理解這些進(jìn)程,還詳述了它們的功能。
簡介
UNIX 和 Linux 用戶通常會檢查運行在其服務(wù)器上的進(jìn)程,以執(zhí)行問題分析及檢查服務(wù)器中消耗的資源。該信息不僅對執(zhí)行問題和資源分析的管理員有用,而且對于那些開發(fā)高度可用性和故障轉(zhuǎn)移腳本(這些腳本監(jiān)控 DB2 進(jìn)程,以確定何時需要進(jìn)行諸如數(shù)據(jù)庫重新啟動或服務(wù)器故障轉(zhuǎn)移之類的操作)的人也很有用。
如果您正在使用 AIX,則可以使用命令 ps -ef 檢查進(jìn)程。在 Solaris 和 HP-UX 上, ps -ef 將只顯示所有服務(wù)器端進(jìn)程(例如:代理程序、記錄器、頁面清除程序和預(yù)取程序)的 db2sysc 進(jìn)程(主 DB2 引擎進(jìn)程)。如果您正在使用 Solaris 或 HP-UX,利用命令 /usr/ucb/ps -axw 您可以看到這些服務(wù)器端進(jìn)程。這兩種版本的 ps 命令都可以在 Linux 上使用。
當(dāng)在運行 DB2 通用數(shù)據(jù)庫客戶機(jī)或服務(wù)器軟件的計算機(jī)上執(zhí)行該命令時,您可能會看到列出了幾個 DB2 進(jìn)程。本文的目的是記錄這些進(jìn)程,并且解釋它們的作用以及它們何時可能會運行。盡管手冊 DB2 UDB V8 Administration Guide - Performance 的第 2 章記錄了大多數(shù)重要的進(jìn)程,但該列表并不完整。通過閱讀本文,您將會理解每個 DB2 進(jìn)程,當(dāng)您看到那些進(jìn)程時,您會開始明白 DB2 正在執(zhí)行什么操作。
請注意,DB2 在 Windows 上工作方式的實現(xiàn)與基于 Linux 和 UNIX 環(huán)境的實現(xiàn)稍有不同。在 Windows 中,只有一個進(jìn)程(db2sysc),在該進(jìn)程下的每個引擎分派單元(engine dispatchable unit,EDU)都被作為線程來實現(xiàn)。盡管本文討論的是進(jìn)程,但是在 Windows 環(huán)境中應(yīng)當(dāng)把它們看成線程。通過 Windows 任務(wù)管理器(Task Manager),您將能夠看到每個實例的 db2sysc 進(jìn)程(db2syscs.exe)。還將顯示其它 Windows 服務(wù)/進(jìn)程,我們將在本文中解釋它們是什么。
警告! 請勿直接干預(yù)正常 DB2 環(huán)境中的 DB2 進(jìn)程。在 Linux 或 UNIX 中利用 kill -9 命令殺死 DB2 進(jìn)程可能會導(dǎo)致 DB2 出現(xiàn)異常行為。例如,殺死 db2sysc 進(jìn)程將使整個 DB2 實例停止運行。本文旨在幫助您理解進(jìn)程,而不是直接操作它們。
為什么研究 DB2 進(jìn)程?
我們的個人經(jīng)驗已表明這方面的知識很有價值,并且我們拜訪的客戶也向我們尋求這類信息。還不相信嗎?看一看下面的實際方案,并且親眼看看如何通過檢查在系統(tǒng)上運行的 DB2 進(jìn)程來解決問題:
方案 1:罕見的緩沖池頁面的清除
一個運行電子商務(wù)(eCommerce)站點并使用 DB2 作為數(shù)據(jù)庫服務(wù)器的客戶報告說,在一整天里,數(shù)據(jù)庫對應(yīng)用程序請求的響應(yīng)時間會不時地變得很長。數(shù)據(jù)庫快照未顯示當(dāng)時有任何異常發(fā)生。通過檢查服務(wù)器上進(jìn)程在其中某一時刻的 CPU 使用情況,我們可以確定 I/O 清除程序(db2pclnr)消耗了超過 90% 的 CPU 時間。隨后通過研究 I/O 清除程序觸發(fā)器并對其進(jìn)行相應(yīng)的調(diào)優(yōu),我們消除了這種情況,使得電子商務(wù)站點每天可以處理的吞吐量提高了 50% 以上。
方案 2:真相大白
在拜訪 IBM 的一家業(yè)務(wù)合作伙伴以進(jìn)行一些 DB2 性能調(diào)優(yōu)工作時,我們碰到了查詢響應(yīng)時間全面延長的問題。除了常規(guī)的程序之外,顯示應(yīng)用程序列表的命令并未顯示當(dāng)時有任何其它程序在運行。在獲得 DB2 快照之前,我們看了一下運行在 DB2 服務(wù)器上的 DB2 進(jìn)程,發(fā)現(xiàn) db2rebal 進(jìn)程正在運行。當(dāng)將某個容器添加到 DMS 表空間時,就會使用該進(jìn)程執(zhí)行數(shù)據(jù)的重新均衡工作??蛻簟俺姓J(rèn)”,那天的早些時候他將一個容器添加到了包含 40 GB 表的表空間。一旦重新均衡工作完成,查詢響應(yīng)時間恢復(fù)如初。
揭開通知和診斷日志的廬山真面目
管理通知日志和診斷日志( db2diag.log )是重要的工具,管理員可以使用這些工具來理解數(shù)據(jù)庫的活動和功能。這些日志通常包含有關(guān) DB2 進(jìn)程的信息,如下面取自 db2diag.log 項的示例所示:
2000-03-06-11.53.18.001160??? Instance:myInst?? Node:000 PID:78121(db2agent (TEST)) TID:352?? Appid:*LOCAL.payroll.000306140834 lock_manager????????? sqlplrq??? Probe:111?? Database:SAMPLE DIA9999E? An internal return code occurred. Report the following: "0xFFFFE10E". |
?
在該示例中,消息來自進(jìn)程標(biāo)識號為 78121 的進(jìn)程。該進(jìn)程的名稱是 db2agent,并與名為 TEST 的數(shù)據(jù)庫相連。理解進(jìn)程的功能有助于您了解管理通知日志和 db2diag.log 中各項的意義。
DB2 進(jìn)程模型
盡管 DB2 Administration Guide - Performance 手冊中介紹了 DB2 進(jìn)程模型,但是本文還是將對其做一下簡要概述。首先說明 代理程序(agent) 的概念。
代理程序
代理程序可被認(rèn)為是一個代表應(yīng)用程序執(zhí)行所有數(shù)據(jù)庫操作的“工作程序”。DB2 代理程序主要有兩種:
-
協(xié)調(diào)程序代理程序(Coordinator Agent)(db2agent)
協(xié)調(diào)程序代理程序代表應(yīng)用程序協(xié)調(diào)工作,并使用進(jìn)程間通信(IPC)或遠(yuǎn)程通信協(xié)議與其它代理程序進(jìn)行通信。所有來自客戶機(jī)應(yīng)用程序的連接請求,無論是本地還是遠(yuǎn)程的,都分配了相應(yīng)的協(xié)調(diào)程序代理程序。 -
子代理程序(Subagent)(db2agntp)
如果啟用了 intra_parallel 數(shù)據(jù)庫管理器配置參數(shù),協(xié)調(diào)程序代理程序就會把數(shù)據(jù)庫請求分發(fā)給子代理程序(db2agntp)。這些代理程序執(zhí)行應(yīng)用程序的請求。一旦創(chuàng)建了協(xié)調(diào)程序代理程序,通過協(xié)調(diào)對數(shù)據(jù)庫執(zhí)行請求的子代理程序(db2agent),協(xié)調(diào)程序代理程序代表其應(yīng)用程序處理所有數(shù)據(jù)庫請求。
當(dāng)某個代理程序或子代理程序完成其任務(wù)時,它就轉(zhuǎn)為空閑狀態(tài)。當(dāng)子代理程序處于空閑狀態(tài)時,其名稱從 db2agntp 變?yōu)?db2agnta。
例如:
db2agntp 進(jìn)程是活動的子代理程序,它們當(dāng)前正在執(zhí)行協(xié)調(diào)程序代理程序的工作。僅當(dāng)啟用了分區(qū)內(nèi)并行性時,這些進(jìn)程才存在。
db2agnta 進(jìn)程是空閑的子代理程序,協(xié)調(diào)程序代理程序過去曾使用過它們。
空閑代理程序駐留在代理程序池中。這些代理程序可用于來自代表客戶機(jī)程序進(jìn)行操作的協(xié)調(diào)程序代理程序,或來自代表現(xiàn)有協(xié)調(diào)程序代理程序進(jìn)行操作的子代理程序的請求??捎玫拇沓绦驍?shù)取決于數(shù)據(jù)庫管理器配置參數(shù) maxagents 和 num_poolagents 。
稍后我們將在本文中描述其它代理程序類型,如并行恢復(fù)代理程序(db2agnsc)。
下面兩幅圖顯示了 DB2 進(jìn)程模型。
圖 1. 無連接集中的 DB2 進(jìn)程模型(適用于非分區(qū)數(shù)據(jù)庫)
圖 1 中的圓圈表示引擎分派單元(EDU),在 Linux/UNIX 平臺上稱為進(jìn)程,而在 Windows 上稱為線程。
應(yīng)用程序 A(App A)和 B(App B)是本地應(yīng)用程序,運行它們的機(jī)器與 DB2 服務(wù)器所駐留的機(jī)器是同一臺機(jī)器。當(dāng)這些應(yīng)用程序發(fā)出連接數(shù)據(jù)庫的 CONNECT 命令時,db2ipccm 偵聽器進(jìn)程建立數(shù)據(jù)庫管理器和應(yīng)用程序之間的通信。db2ipccm 還將與協(xié)調(diào)程序代理程序 EDU(db2agent)一起工作,后者直接與客戶機(jī)應(yīng)用程序進(jìn)行聯(lián)系,以建立客戶機(jī)應(yīng)用程序和協(xié)調(diào)程序之間共享內(nèi)存的通信。一旦建立了這種通信,本地客戶機(jī)上的應(yīng)用程序就被連接到數(shù)據(jù)庫。
應(yīng)用程序 C(App C)是一個遠(yuǎn)程應(yīng)用程序,它所駐留的機(jī)器與用于 DB2 服務(wù)器的機(jī)器不同。遠(yuǎn)程客戶機(jī)通過 db2tcpcm 偵聽器進(jìn)程建立 TCP/IP 通信。然后 db2tcpcm 與 db2agent 一起工作,后者成為應(yīng)用程序的協(xié)調(diào)程序代理程序,并將連接傳遞給該代理程序。之后,協(xié)調(diào)程序代理程序與遠(yuǎn)程客戶機(jī)應(yīng)用程序進(jìn)行聯(lián)系,并被連接到數(shù)據(jù)庫。
圖 2. 無連接集中的 DB2 進(jìn)程模型(適用于分區(qū)數(shù)據(jù)庫)
圖 2 與圖 1 類似,但是它適用于分區(qū)數(shù)據(jù)庫。Node0000 和 Node0001 表示兩臺不同的機(jī)器,這兩臺機(jī)器上分別駐留了一部分?jǐn)?shù)據(jù)庫。它們之間的進(jìn)程和交互作用與圖 1 中描述的相同;但是,有其它一些僅適用于該環(huán)境的進(jìn)程。例如,db2fcmd 進(jìn)程是快速通信管理器(Fast Communication Manager)進(jìn)程,用于管理不同分區(qū)之間的通信。下一節(jié)中的表將更詳細(xì)地描述適用于分區(qū)數(shù)據(jù)庫的其它進(jìn)程。
進(jìn)程
以下各表分別根據(jù)每個實例、每個數(shù)據(jù)庫以及按照功能列出了所有 DB2 進(jìn)程。請注意,下表中的一些進(jìn)程并不是按照字母順序列出的,而是根據(jù)功能進(jìn)行分組的。如果您希望以字母順序查找進(jìn)程,請參閱下面的 表 7 。
表 1. 每個實例的進(jìn)程 — 無連接,無活動的數(shù)據(jù)庫
進(jìn)程名 |
描述 |
適用范圍 |
db2cart |
確定何時歸檔日志文件,并調(diào)用用戶出口來執(zhí)行實際的歸檔工作。每個實例有一個 db2cart 進(jìn)程,但是僅當(dāng)實例中至少有一個數(shù)據(jù)庫啟用了 USEREXIT 時,該進(jìn)程才運行。 |
所有 |
db2chkau |
由 DB2 審計工具使用以將一些項記錄到審計日志。僅當(dāng)啟用了審計時該進(jìn)程才是活動的。 |
所有 |
db2ckpw |
用于檢查 DB2 服務(wù)器上的用戶標(biāo)識和密碼。由于 DB2 依賴于操作系統(tǒng)級別的認(rèn)證,因此,當(dāng)某個用戶或應(yīng)用程序連接到服務(wù)器上的數(shù)據(jù)庫時,使用該進(jìn)程驗證用戶標(biāo)識和密碼。當(dāng)將 AUTHENTICATION 設(shè)置為 SERVER 時,或者當(dāng)連接是從非安全的操作系統(tǒng)建立的時候,就會進(jìn)行認(rèn)證。 |
UNIX/Linux |
db2disp |
DB2 代理程序分派器進(jìn)程。當(dāng)啟用了連接集中時,該進(jìn)程在分配給應(yīng)用程序的邏輯代理程序和可用的協(xié)調(diào)代理之間分派應(yīng)用程序連接。 僅當(dāng)啟用了連接集中時該進(jìn)程才存在。 |
所有 |
db2fcmd |
FCM(快速通信管理器)守護(hù)程序,用于處理分區(qū)間的通信。每個服務(wù)器、每個分區(qū)就有一個這樣的進(jìn)程。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2fmcd |
故障監(jiān)視器協(xié)調(diào)程序(Fault Monitor Coordinator)守護(hù)程序進(jìn)程。每個物理機(jī)器就有一個這樣的進(jìn)程。 |
只適用于 UNIX |
db2fmd |
為每個由故障監(jiān)視器監(jiān)控的 DB2 實例而啟動的故障監(jiān)視器守護(hù)程序進(jìn)程。該進(jìn)程是由協(xié)調(diào)守護(hù)程序(db2fmcd)監(jiān)控的,因此,如果您殺死 db2fmd 進(jìn)程,那么 db2fmcd 將使其重新運行。 |
只適用于 UNIX |
db2fmtlg |
當(dāng)數(shù)據(jù)庫被配置成 LOGRETAIN ON 且 USEREXIT OFF 時,在日志路徑中預(yù)分配日志文件。如果完成了該工作,那么在正常的處理過程中,當(dāng)從一個日志文件切換到另一個日志文件時,引擎進(jìn)程就無需等待。 |
所有 |
db2gds |
DB2 全局守護(hù)進(jìn)程衍生程序(Global Daemon Spawner)進(jìn)程,該進(jìn)程啟動 UNIX 上的所有 DB2 EDU(進(jìn)程)。每個實例或每個數(shù)據(jù)庫分區(qū)就有一個 db2gds。 |
只適用于 UNIX |
db2glock |
全局死鎖檢測器。該進(jìn)程協(xié)調(diào)從每個數(shù)據(jù)庫分區(qū)上的 db2dlock 進(jìn)程收集的信息,以檢查數(shù)據(jù)庫分區(qū)之間是否存在死鎖情形。db2glock 進(jìn)程運行在多分區(qū)數(shù)據(jù)庫的目錄分區(qū)上。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2govd |
DB2 控制器,它是一個反應(yīng)性的管理進(jìn)程。如果啟用了 DB2 控制器,該進(jìn)程按照控制器配置文件中指定的時間間隔來拍攝快照,并依據(jù)所有的配置規(guī)則來檢查快照。如果違反了某個規(guī)則,則采取指定的操作。 |
所有 |
db2panic |
緊急代理程序。如果任何數(shù)據(jù)庫分區(qū)上的代理程序都不空閑,那么該進(jìn)程就處理一些緊急的請求。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2pdbc |
PDB(并行數(shù)據(jù)庫,Parallel Database)控制器。它處理來自遠(yuǎn)程節(jié)點的并行請求。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2rebal |
重新均衡器進(jìn)程。當(dāng)將容器添加到某個現(xiàn)有的表空間,并且需要對現(xiàn)有數(shù)據(jù)進(jìn)行重新均衡時,就調(diào)用該進(jìn)程。該進(jìn)程異步地執(zhí)行重新均衡工作。 |
所有 |
db2resyn |
重新同步管理器進(jìn)程,用于支持使用兩階段提交的應(yīng)用程序 |
所有 |
db2srvlst |
該進(jìn)程用于管理系統(tǒng)(如 OS/390)的地址列表。 |
所有 |
db2sysc |
主 DB2 系統(tǒng)控制器或引擎。如果沒有該進(jìn)程,數(shù)據(jù)庫服務(wù)器就不能運行。 |
所有 |
db2syslog |
系統(tǒng)記錄器進(jìn)程。該進(jìn)程寫到操作系統(tǒng)的錯誤日志工具。在 UNIX 上,必須通過編輯文件 syslog.conf 才能啟用該進(jìn)程。在 Windows 上,DB2 將自動編寫 Windows 事件日志。 |
所有 |
db2wdog |
DB2 看守程序。在 UNIX 中,該進(jìn)程是必需的,因為 UNIX 中的進(jìn)程只能跟蹤其父進(jìn)程的標(biāo)識。每次新進(jìn)程啟動時,db2gds 就會通知 DB2 看守程序。如果任何 DB2 進(jìn)程接收到 ctrl-c 或其它異常信號,該進(jìn)程就會向看守程序發(fā)送信號,而看守程序會將信號傳播給實例中其它所有進(jìn)程。 |
只適用于 UNIX |
dlasync |
DB2 數(shù)據(jù)鏈路(Data Link)(文件管理器)服務(wù)器的監(jiān)視器。僅當(dāng) DB2 配置了數(shù)據(jù)鏈路時該進(jìn)程才存在。 |
只適用于數(shù)據(jù)鏈路 |
表 2. 每個實例和每個連接
進(jìn)程名 |
描述 |
適用范圍 |
db2agent |
DB2 協(xié)調(diào)程序代理程序,它代表應(yīng)用程序執(zhí)行所有數(shù)據(jù)庫請求。除非啟用了連接集中器,否則每個已連接的應(yīng)用程序都將有一個 db2agent 進(jìn)程。 如果啟用了分區(qū)內(nèi)并行性,那么 db2agent 進(jìn)程將調(diào)用 DB2 子代理程序來執(zhí)行工作,并且它們會將結(jié)果集返回給協(xié)調(diào)程序代理程序,再返回給應(yīng)用程序。 在分區(qū)數(shù)據(jù)庫中,協(xié)調(diào)程序代理程序?qū)⑽挥趹?yīng)用程序連接到的分區(qū)上。 |
所有 |
db2agentg |
DRDA 應(yīng)用程序請求器(Application Requester)的網(wǎng)關(guān)代理程序。 |
所有 |
db2agnsc |
并行恢復(fù)代理程序。在前滾和重新啟動恢復(fù)的過程中使用該代理程序來并行地執(zhí)行日志中的操作。與串行恢復(fù)相比,這可以縮短恢復(fù)時間。 注:該進(jìn)程支持已記錄事務(wù)中的并行性以及并行事務(wù)之間的并行性。 |
所有 |
db2agnta |
空閑的子代理程序,過去協(xié)調(diào)代理曾使用過,并且現(xiàn)在仍然與協(xié)調(diào)代理進(jìn)程關(guān)聯(lián)。 當(dāng) INTRA_PARALLEL dbm cfg 參數(shù)設(shè)置成 YES 時會出現(xiàn)該進(jìn)程。 |
所有 |
db2agntp |
這是一個子代理程序,它代表與之相關(guān)的協(xié)調(diào)代理執(zhí)行當(dāng)前工作。這些進(jìn)程提供了分區(qū)內(nèi)并行性,也就是在數(shù)據(jù)庫實例/分區(qū)中并行地執(zhí)行查詢的能力。 當(dāng) INTRA_PARALLEL dbm cfg 參數(shù)設(shè)置成 YES 時會出現(xiàn)該進(jìn)程。 |
所有 |
db2ipccm |
IPC 通信管理器。每個數(shù)據(jù)庫分區(qū)就有一個這樣的管理器。這是用于本地客戶機(jī)連接的進(jìn)程間通信偵聽器。 本地客戶機(jī)連接是由運行 DB2 服務(wù)器的同一臺計算機(jī)上的某個應(yīng)用程序(如 CLP)建立的連接。 |
所有 |
db2tcpcm |
TCP 通信管理器。它充當(dāng) TCP/IP 連接請求的通信偵聽器。當(dāng)偵聽器接收到連接請求時,它就將連接與代理程序相關(guān)聯(lián),然后再繼續(xù)偵聽更多連接請求。 |
所有 |
db2tcpdm |
用于 TCP/IP 發(fā)現(xiàn)請求的通信偵聽器。當(dāng)配置助手(CA)在網(wǎng)絡(luò)中搜索遠(yuǎn)程 DB2 服務(wù)器及其數(shù)據(jù)庫時,它就會發(fā)出發(fā)現(xiàn)請求。 |
所有 |
db2snacm |
SNA/APPC 通信管理器。它充當(dāng) SNA/APPC 連接請求的通信偵聽器。當(dāng)偵聽器接收到連接請求時,它就將連接與代理程序相關(guān)聯(lián),然后再繼續(xù)偵聽更多連接請求。 |
所有 |
表 3. 每個實例和每個活動數(shù)據(jù)庫
進(jìn)程名 |
描述 |
適用范圍 |
db2dlock |
本地死鎖檢測器,每個數(shù)據(jù)庫分區(qū)就有這樣一個檢測器。它掃描鎖定列表,并查找死鎖情形。當(dāng)遇到死鎖情形時,其中涉及的某個應(yīng)用程序/事務(wù)就被選做“犧牲品”并被回滾。 |
所有 |
db2estor |
用于復(fù)制數(shù)據(jù)庫緩沖池和擴(kuò)充存儲器之間的頁面。僅當(dāng)啟用了數(shù)據(jù)庫的擴(kuò)充存儲器時這些進(jìn)程才出現(xiàn)。 |
所有 |
db2event |
事件監(jiān)視器進(jìn)程。每個活動的事件監(jiān)視器,每個活動的數(shù)據(jù)庫就會有一個 db2event 進(jìn)程。這些進(jìn)程捕獲已定義的“事件”并寫到為事件監(jiān)視器指定的輸出文件。 |
所有 |
db2loggr |
數(shù)據(jù)庫日志閱讀器。該進(jìn)程在執(zhí)行下列操作時讀取數(shù)據(jù)庫日志文件:
|
所有 |
db2loggw |
數(shù)據(jù)庫日志記錄器。該進(jìn)程使用日志緩沖區(qū)的日志記錄對磁盤上的日志文件進(jìn)行刷新。 |
所有 |
db2logts |
該進(jìn)程用于收集有關(guān)當(dāng)某個表空間被修改時哪些日志是活動的歷史信息。該信息記錄在數(shù)據(jù)庫目錄的 DB2TSCHG.HIS 文件中。通過啟用跳過操作(即跳過前滾操作不需要的那些日志文件),可以使用該進(jìn)程來加速表空間前滾恢復(fù)。 |
所有 |
db2pclnr |
緩沖池頁面清除程序。這些進(jìn)程以異步方式將“臟”頁面從緩沖池寫回到磁盤?!芭K”頁面是這樣一個頁面:在將該頁面讀入緩沖池后對其進(jìn)行過更改,并且磁盤上的映像與緩沖池中的映像不再一樣。 當(dāng)頁面清除程序被“觸發(fā)”時,它們將同時全部運行。一旦它們完成其分配的工作,就進(jìn)入睡眠狀態(tài),直到被再次觸發(fā)。 頁面清除程序的任務(wù)是確保緩沖池有空間可以容納正在被應(yīng)用程序檢索的新頁面。 每個數(shù)據(jù)庫的頁面清除程序的數(shù)量是通過 NUM_IOCLEANERS 數(shù)據(jù)庫配置參數(shù)配置的。 |
所有 |
db2pfchr |
緩沖池預(yù)取程序。這些進(jìn)程代表應(yīng)用程序在讀取數(shù)據(jù)和索引信息之前,從磁盤讀該信息并且將該信息讀入數(shù)據(jù)庫緩沖池。預(yù)取程序異步地執(zhí)行這個“預(yù)讀(read-ahead)”操作。 代表應(yīng)用程序進(jìn)行工作的 DB2 代理程序發(fā)送預(yù)取請求,預(yù)取程序為這些請求提供服務(wù)。預(yù)取程序執(zhí)行大塊 I/O 來更有效地讀取數(shù)據(jù)。每個數(shù)據(jù)庫的預(yù)取程序的數(shù)量是由 NUM_IOSERVERS 數(shù)據(jù)庫配置參數(shù)配置的。 |
所有 |
表 4. 按功能分類的其它進(jìn)程
進(jìn)程名 |
描述 |
適用范圍 |
db2bm |
備份/恢復(fù)緩沖區(qū)操縱器。該進(jìn)程用于在備份操作過程中從表空間進(jìn)行讀取,以及用于在恢復(fù)操作過程中寫到表空間。通過 BACKUP 或 RESTORE 命令配置的每個備份/恢復(fù)緩沖區(qū)都將有一個 db2bm 進(jìn)程。 |
所有 |
db2fmp |
這是一些受防護(hù)的進(jìn)程,用于在防火墻外的服務(wù)器上運行用戶代碼,這些代碼 既有 存儲過程, 又有 用戶定義的函數(shù)。 db2fmp 始終是獨立的進(jìn)程,但是根據(jù)它執(zhí)行的例程類型,也可能是多線程的。 注: 該進(jìn)程替換了 DB2 以前版本中使用的 db2udf 和 db2dari 這兩個進(jìn)程。 |
所有 |
db2lbs |
LOAD LOB 掃描程序。僅當(dāng)裝入工具正在裝入帶有 LOB 列的表時才使用它們。這些進(jìn)程掃描表的 LOB 對象,并將該信息讀回表中。 |
所有 |
db2lbmX |
LOAD 緩沖區(qū)操縱器。最后一個字符“X”表示一或更大的數(shù)字。該進(jìn)程將已裝入的數(shù)據(jù)寫到數(shù)據(jù)庫,并且可能涉及到異步 I/O?!癤”始終是 1,不過通常也會是更大的數(shù)字,這取決于試探值(heuristic)。試探值取決于系統(tǒng)上的 CPU 數(shù)以及被寫的容器數(shù)。 這個“智能的缺省值”可能會被 LOAD 命令的 DISK_PARALLELISM 修飾符覆蓋。 我們應(yīng)當(dāng)明白,這個異步 I/O 不是某些操作系統(tǒng)支持的異步文件 I/O;它只意味著我們有一些寫 I/O 的獨立進(jìn)程。這意味著,正在格式化數(shù)據(jù)的其它進(jìn)程不用被 I/O 等待所束縛。 |
所有 |
db2lfrmX |
LOAD 格式化程序進(jìn)程。最后一個字符“X”表示一或更大的數(shù)字。該進(jìn)程將輸入數(shù)據(jù)格式化成內(nèi)部格式。它始終出現(xiàn)在 LOAD 中。該進(jìn)程使用了智能的缺省值,它可能會被 CPU_PARALLELISM 修飾符覆蓋,以選擇最佳的 CPU 數(shù)。 |
所有 |
db2lfs |
當(dāng)被裝入的表包含 LONG VARCHAR 列時則使用這些進(jìn)程。這些進(jìn)程用來讀和格式化表中的 LONG VARCHAR 列。 |
所有 |
db2lmr |
這是一個 LOAD 媒體閱讀器(Media Reader)進(jìn)程。它讀取裝入輸入文件,一旦讀完所有輸入文件,該進(jìn)程就會消失。甚至在整個裝入操作完成之前該進(jìn)程就會消失。 |
所有 |
db2lmwX |
這些是 LOAD 媒體記錄器進(jìn)程。最后一個字符“X”表示一或更大的數(shù)字。 如果為 LOAD 命令指定了“裝入副本(load copy)”選項,那么該進(jìn)程將生成裝入副本。裝入副本本質(zhì)上就是裝入到表中的數(shù)據(jù)備份。 這些媒體記錄器與 BACKUP 和 RESTORE 使用的媒體記錄器相同。就象在命令行上描述的那樣,每個復(fù)制會話調(diào)用一個媒體記錄器(您可以創(chuàng)建多個文件的裝入副本)。如果沒有裝入副本,則沒有媒體記錄器。它們根據(jù)數(shù)據(jù)的類型在裝入時從其它進(jìn)程獲取輸入,但是,由緩沖區(qū)操縱器寫的每位數(shù)據(jù)通常都將被傳遞到媒體記錄器。就如同其它所有的進(jìn)程那樣,它們由裝入代理程序控制。 |
所有 |
db2lrid |
該進(jìn)程在 LOAD 期間執(zhí)行索引排序,并構(gòu)建索引記錄標(biāo)識(Record ID,RID)。 該進(jìn)程不會出現(xiàn)在非并行數(shù)據(jù)庫實例(即禁用 INTRA_PARALLEL 的實例)中。該進(jìn)程執(zhí)行的任務(wù)由非并行實例中的格式化程序 EDU 完成。 該進(jìn)程完成下列三種功能:
|
所有 |
db2ltsc |
LOAD 表掃描程序。這些進(jìn)程掃描數(shù)據(jù)對象,查找被裝入的表,并讀取 LOAD 工具的信息。在 LOAD 追加操作過程中使用這些進(jìn)程。 |
所有 |
db2linit |
LOAD 初始化子代理程序。這個子代理程序獲取數(shù)據(jù)庫分區(qū)上必需的資源,并將應(yīng)答序列化,返回給裝入目錄子代理程序。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2lcata |
LOAD 目錄子代理程序。這個子代理程序只在目錄分區(qū)上執(zhí)行,它負(fù)責(zé):
該目錄子代理程序還查詢系統(tǒng)目錄表以確定哪些分區(qū)用于數(shù)據(jù)分割和分區(qū)。 正常的裝入作業(yè)只有一個目錄子代理程序。異常情況是裝入無法獲取某些分區(qū)上的裝入資源。如果數(shù)據(jù)庫分區(qū)上的設(shè)置錯誤被隔離出來,那么協(xié)調(diào)程序?qū)难b入的內(nèi)部分區(qū)列表除去發(fā)生故障的分區(qū),并衍生一個新的目錄子代理程序。這一過程會重復(fù)進(jìn)行,直到成功獲取所有分區(qū)上的資源,或者在所有分區(qū)上都遇到了故障。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2lpprt |
裝入預(yù)分區(qū)子代理程序。這個子代理程序?qū)⑤斎霐?shù)據(jù)從一個輸入流預(yù)分區(qū)成多個輸出流,每個分區(qū)子代理程序都有一個這樣的進(jìn)程。 每個輸入流都將有一個預(yù)分區(qū)子代理程序。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2lpart |
裝入分區(qū)子代理程序。這個子代理程序?qū)⑤斎霐?shù)據(jù)分區(qū)成多個輸出流,將寫入數(shù)據(jù)的每個數(shù)據(jù)庫分區(qū)都有一個這樣的進(jìn)程。 分區(qū)子代理程序的數(shù)量可以由用戶進(jìn)行配置。缺省數(shù)量取決于輸出數(shù)據(jù)庫分區(qū)的總數(shù)。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2lmibm |
裝入微型緩沖區(qū)操縱器子代理程序進(jìn)程。 如果為裝入使用了 partition_only 方式,那么該子代理程序就編寫分區(qū)的輸出文件。 每個輸出數(shù)據(jù)庫分區(qū)就有一個微型緩沖區(qū)操縱器子代理程序。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2lload |
裝入子代理程序進(jìn)程。這個子代理程序負(fù)責(zé)完成每個數(shù)據(jù)庫分區(qū)上的裝入操作。它衍生格式化程序、ridder、緩沖區(qū)操縱器和媒體記錄器 EDU,并監(jiān)視它們的工作。 每個輸出數(shù)據(jù)庫分區(qū)都有一個裝入子代理程序。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2lrdfl |
裝入讀文件子代理程序進(jìn)程。這個子代理程序讀取給定數(shù)據(jù)庫分區(qū)上的消息文件,并將數(shù)據(jù)發(fā)送回客戶機(jī)。每個輸出分區(qū)、分區(qū)的分區(qū)和預(yù)分區(qū)的分區(qū)都有一個讀文件子代理程序。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2llqcl |
裝入查詢清除子代理程序進(jìn)程。這個子代理程序從給定分區(qū)除去所有裝入臨時文件。 每個輸出分區(qū)、分區(qū)的分區(qū)和預(yù)分區(qū)的分區(qū)都有一個清除子代理程序。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2lmitk |
裝入微型任務(wù)子代理程序進(jìn)程。這個子代理程序釋放了在某次從游標(biāo)調(diào)用的裝入或 CLI 裝入中使用的所有 LOB 定位器。 運行在協(xié)調(diào)程序分區(qū)上的每個游標(biāo)/CLI 裝入都有一個微型任務(wù)子代理程序。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2lurex |
裝入用戶出口子代理程序進(jìn)程。這個子代理程序運行用戶的文件傳送命令。 使用文件傳送命令選項的每個裝入作業(yè)都將有一個用戶出口子代理程序。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
db2lmctk |
該進(jìn)程用于持有、釋放或降級(downgrade)目錄分區(qū)上持有的由于裝入而產(chǎn)生的鎖。 |
只適用于多分區(qū)數(shù)據(jù)庫環(huán)境 |
d2med |
這些進(jìn)程對用于 LOAD、備份和恢復(fù)的數(shù)據(jù)庫表空間進(jìn)行讀和/或?qū)懖僮鳌? 它們將已格式化頁面中的數(shù)據(jù)寫到表空間容器。 |
所有 |
db2reorg |
該進(jìn)程用于執(zhí)行 DB2 V8.1 中新的聯(lián)機(jī) — 就地重組操作。該進(jìn)程的工作原理類似于磁盤整理碎片工具,它以特定的順序放置數(shù)據(jù)行。 |
所有 |
表 5. 一些常用的可執(zhí)行文件
進(jìn)程名 |
描述 |
適用范圍 |
db2 |
DB2 命令行處理器(CLP)前臺進(jìn)程。它解析 DB2 命令和 SQL 語句等。 該進(jìn)程是 DB2 CLP 的交互式組件。 這個前端/后端配置對于命令行性能確實有一些益處:前端處理到用戶的連接,而后端與數(shù)據(jù)庫進(jìn)行連接。 您可以使用 CTRL-C/CRTL-Break 來停止處理工作(即當(dāng)返回太多記錄時),而無需殺死到數(shù)據(jù)庫的連接。 |
所有 |
db2bp |
這是 DB2 CLP 的持久后臺進(jìn)程,并且它是實際連接到數(shù)據(jù)庫的進(jìn)程。 因為 DB2 CLP 允許 OS 及 DB2 命令/語句,因此這個后臺進(jìn)程是必需的。 |
所有 |
db2cmd |
類似于 db2 可執(zhí)行文件,但適用于 Windows。db2cmd 調(diào)用 Windows 命令窗口。在 Windows 上,當(dāng)父線程被終止時,它們不能終止其子進(jìn)程。DB2 命令行處理器具有一個前端和后端進(jìn)程/線程,因此我們需要一個 cookie(通過 DB2CMD.EXE 啟動的)在 Windows 上將這些線程聯(lián)系在一起,這樣,如果用戶退出或殺死前端進(jìn)程,那么后端進(jìn)程也被終止。 |
只適用于 Windows |
db2start |
啟動 DB2 引擎的用戶命令。 |
所有 |
db2star2 |
真正的 db2start 程序。 |
所有 |
db2stop |
停止 DB2 引擎的用戶命令。 |
所有 |
db2stop2 |
真正的 db2stop 程序。 |
所有 |
表 6. 其它 Windows 服務(wù)/進(jìn)程
進(jìn)程名 |
描述 |
db2dasrrm.exe |
DB2 管理服務(wù)器(Admin Server)進(jìn)程。通過使用 DB2 控制中心(Control Center),該進(jìn)程支持本地和遠(yuǎn)程管理請求。 |
db2dasstm.exe |
DB2 管理服務(wù)器工具 DB 管理器進(jìn)程。如果已經(jīng)在 DB2 服務(wù)器上設(shè)置了該進(jìn)程,那么它就會將信息存入工具數(shù)據(jù)庫,并從工具數(shù)據(jù)庫檢索信息。 |
db2fmp.exe |
該進(jìn)程處理/執(zhí)行所有受防護(hù)的存儲過程和 UDF。 |
db2rcmd.exe |
DB2 遠(yuǎn)程命令服務(wù)(Remote Command Service),它自動處理分區(qū)間的管理通信。 |
db2jds.exe |
DB2 JDBC applet 服務(wù)器服務(wù)。該服務(wù)攔截和處理連接到 DB2 服務(wù)器的所有 JDBC 應(yīng)用程序。 |
db2licd.exe |
DB2 許可證守護(hù)程序。該進(jìn)程驗證 DB2 啟動時正確的 DB2 許可證是否安裝到了服務(wù)器上。 |
db2sec.exe |
在 Windows 的 DB2 服務(wù)器上使用該進(jìn)程來檢查用戶標(biāo)識和密碼。由于 DB2 依賴于操作系統(tǒng)級別的認(rèn)證,因此,當(dāng)某個用戶或應(yīng)用程序連接到服務(wù)器上的數(shù)據(jù)庫時,使用該進(jìn)程驗證用戶標(biāo)識和密碼。當(dāng)將認(rèn)證設(shè)置為 SERVER 時,或者當(dāng)連接是從非安全的操作系統(tǒng)建立的時候,就會進(jìn)行這一認(rèn)證。 |
db2syscs.exe |
Windows 上的主要 DB2 系統(tǒng)控制器或引擎。EDU 是該進(jìn)程中的線程。 請注意末尾的“s”代表 Windows 服務(wù)。 |
IWH2SERV.EXE |
倉庫管理器中心(Warehouse Manager Center)。該中心作為 DB2 ESE 的一部分(而不是 DB2 引擎的一部分)安裝。 |
下表可能是一個非常有用的索引,可以用它來找到給定的進(jìn)程。它以字母順序列出了所有進(jìn)程,并且?guī)в械缴鲜霰淼逆溄印?
表 7. 按字母順序排列的所有進(jìn)程
# |
進(jìn)程/Windows 服務(wù)/可執(zhí)行文件名 |
到提供更詳細(xì)信息的表的鏈接 |
1 |
db2 |
|
2 |
db2agent |
|
3 |
db2agentg |
|
4 |
db2agnsc |
|
5 |
db2agnta |
|
6 |
db2agntp |
|
7 |
db2bm |
|
8 |
db2bp |
|
9 |
db2cart |
|
10 |
db2chkau |
|
11 |
db2ckpw |
|
12 |
db2cmd |
|
14 |
db2dasrrm.exe |
|
15 |
db2dasstm.exe |
|
16 |
db2disp |
|
17 |
db2dlock |
|
18 |
db2estor |
|
19 |
db2fcmd |
|
20 |
db2fmcd |
|
21 |
db2fmd |
|
22 |
db2fmp |
|
23 |
d2fmtlg |
|
24 |
db2gds |
|
25 |
db2glock |
|
26 |
db2govd |
|
27 |
db2ipccm |
|
28 |
db2jds.exe |
|
29 |
db2lbmX |
|
30 |
db2lbs |
|
31 |
db2lcata |
|
32 |
db2lfrmX |
|
33 |
db2lfs |
|
34 |
db2licd.exe |
|
35 |
db2linit |
|
36 |
db2lload |
|
37 |
db2llqcl |
|
38 |
db2lmctk |
|
39 |
db2lmibm |
|
40 |
db2lmitk |
|
41 |
db2lmr |
|
42 |
db2lmwX |
|
43 |
db2loggr |
|
44 |
db2loggw |
|
45 |
db2logts |
|
46 |
db2lpart |
|
47 |
db2lpprt |
|
48 |
db2lrdfl |
|
49 |
db2lrid |
|
50 |
db2ltsc |
|
51 |
db2lurex |
|
52 |
db2med |
|
53 |
db2panic |
|
54 |
db2pclnr |
|
55 |
db2pdbc |
|
56 |
db2pfchr |
|
57 |
db2rcmd.exe |
|
58 |
db2rebal |
|
59 |
db2reorg |
|
60 |
db2resyn |
|
61 |
db2sec.exe |
|
62 |
db2snacm |
|
63 |
db2srvlst |
|
64 |
db2start |
|
65 |
db2star2 |
|
66 |
db2stop |
|
67 |
db2stop2 |
|
68 |
db2sysc |
|
69 |
db2syscs.exe |
|
70 |
db2tcpcm |
|
71 |
db2tcpdm |
|
72 |
db2wdog |
|
73 |
dlasync |
|
74 |
IWH2SERV.EXE |
示例
下面這一節(jié)為您演示了一些輸出示例,當(dāng)您在 AIX 中執(zhí)行 ps -ef 命令時可能會獲得這樣的輸出。
運行 db2start 之后:
??? root 49504???? 1?? 0 13:13:07????? -? 0:00 db2wdog db2inst1 22142 49180?? 0 13:13:10????? -? 0:00 db2gds db2inst1 43072 49180?? 0 13:13:17????? -? 0:00 db2syslog db2inst1 45294 74134?? 0 12:12:43? pts/2? 0:00 /usr/bin/ksh db2inst1 49180 49504?? 0 13:13:10????? -? 0:00 db2sysc db2inst1 55920 49180?? 0 13:13:19????? -? 0:00 db2resync db2inst1 59012 22142?? 0 13:13:19????? -? 0:00 db2srvlst db2inst1 60680 49180?? 0 13:13:17????? -? 0:00 db2ipccm |
?
數(shù)據(jù)庫管理器配置文件包含下列設(shè)置,它們會影響您最初看到的進(jìn)程:
Max number of existing agents?????????? (MAXAGENTS) = 200 Agent pool size????????????????? ??(NUM_POOLAGENTS) = 100(calculated) Initial number of agents in pool?? (NUM_INITAGENTS) = 0 |
?
由于 NUM_INITAGENTS 是 0,所以在運行 db2start 時不會顯示“db2agent (idle)”進(jìn)程。例如,如果在運行 db2start 之前將 NUM_INITAGENTS 設(shè)置為 5,那么在發(fā)出 db2start 之后,將顯示下面這些額外的進(jìn)程:
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) |
?
在連接到數(shù)據(jù)庫 SAMPLE 后(NUM_INITAGENTS 的值仍然保持為 0)
??? root 49504???? 1?? 0 13:13:07??? -? 0:00 db2wdog db2inst1 25844 35124?? 0 16:04:50??? -? 0:00 db2pfchr db2inst1 35124 65638?? 0 16:04:17??? -? 0:00 db2gds db2inst1 35540 35124?? 0 16:04:50??? -? 0:00 db2loggr (SAMPLE) db2inst1 41940 65638?? 0 16:04:19??? -? 0:00 db2resync db2inst1 45058 35124?? 0 16:04:50??? -? 0:00 db2pfchr db2inst1 49300 35124?? 0 16:04:19??? -? 0:00 db2srvlst db2inst1 49626 35124?? 0 16:04:50??? -? 0:00 db2dlock (SAMPLE) db2inst1 55852 65638?? 0 16:04:17??? -? 0:00 db2ipccm db2inst1 58168 35124?? 0 16:04:50??? -? 0:00 db2loggw (SAMPLE) db2inst1 59048 35124?? 0 16:04:50??? -? 0:00 db2pfchr db2inst1 64010 55852?? 0 16:04:50??? -? 0:00 db2agent (SAMPLE) db2inst1 65638 22238?? 0 16:04:17??? -? 0:00 db2sysc db2inst1 70018 35124?? 0 16:04:50??? -? 0:00 db2pclnr db2inst1 72120 35124?? 0 16:04:51??? -? 0:00 db2event (DB2DETAILDEADLOCK) db2inst1 74198 65638?? 0 16:04:17??? -? 0:00 db2syslog db2inst1 74578???? 1?? 0 16:04:47??? -? 0:00 /home/db2inst1/sqllib/bin/db2bp ? 50112C14631 5 |
?
連接到 SAMPLE 數(shù)據(jù)庫后,“db2agent (SAMPLE)”進(jìn)程出現(xiàn)了。該進(jìn)程表明實際上有一個到 SAMPLE 數(shù)據(jù)庫的連接。如果我們發(fā)出以下命令:
db2 connect reset |
?
db2agent (SAMPLE) 現(xiàn)在將變成 db2agent (idle)。這是因為 NUM_POOLAGENTS 被設(shè)置成了大于零的數(shù),這意味著該代理程序盡管是空閑的,但在池中將仍然保持被分配的狀態(tài)。如果 NUM_POOLAGENTS 被設(shè)置成零,那么在運行了“connect reset”后,將不再有 db2agent 進(jìn)程運行。
SAMPLE 數(shù)據(jù)庫的數(shù)據(jù)庫配置文件包含下列這些設(shè)置:
Number of asynchronous page cleaners?? (NUM_IOCLEANERS) = 1 Number of I/O servers?????????????????? (NUM_IOSERVERS) = 3 |
?
請注意,有三個 db2pfchr 進(jìn)程(與 NUM_IOSERVERS 的值對應(yīng))和一個 db2pclnr 進(jìn)程(與 NUM_IOCLEANERS 的值對應(yīng))。
結(jié)束語
根據(jù)不同的 DB2 操作和配置設(shè)置,將會有許多其它進(jìn)程出現(xiàn)和消失。我們已經(jīng)為您展示了一些樣本方案,這些方案演示了您可以如何觀察哪些進(jìn)程正在運行、這些進(jìn)程表明了什么以及數(shù)據(jù)庫設(shè)置對其產(chǎn)生了怎樣的影響?,F(xiàn)在您可以使用這一知識來提高您管理 DB2 數(shù)據(jù)庫的能力。
致謝
特別感謝 IBM 多倫多實驗室服務(wù)咨詢團(tuán)隊的 Bob Harbus,感謝他為本文所做的工作。
?
作者簡介
Dwaine Snow 是 DB2 UDB 分區(qū)數(shù)據(jù)庫以及查詢巡視器(Query Patroller)和 IBM Informix IDS 的產(chǎn)品經(jīng)理。Dwaine 過去 12 年一直效力于 IBM,過去 8 年里他一直從事 DB2 UDB 方面的工作。可以通過 dsnow@ca.ibm.com 與 Dwaine 聯(lián)系。
Raul F. Chong 是 IBM 多倫多實驗室的數(shù)據(jù)庫顧問,主要與 IBM 業(yè)務(wù)合作伙伴一起合作。Raul 在 IBM 工作已經(jīng)有 5 年了,其中 3 年在 DB2 技術(shù)支持部(Technical Support)工作,另外 2 年則作為一名專攻數(shù)據(jù)庫應(yīng)用程序開發(fā)和從其它 RDBMS 遷移到 DB2 方面的顧問??梢酝ㄟ^ rfchong@ca.ibm.com 與 Raul 聯(lián)系。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
