亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

db2 進(jìn)程

系統(tǒng) 2438 0

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ù)庫日志文件:

  • 事務(wù)處理(即回滾)
  • 重新啟動恢復(fù)
  • 前滾操作

所有

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)程完成下列三種功能:

  • SMP 同步
  • 分配 RID,最后一個將構(gòu)建索引
  • 控制 LOAD 格式化程序進(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é):

  • 衍生初始化子代理程序
  • 處理其應(yīng)答
  • 存儲目錄分區(qū)上的鎖信息。

該目錄子代理程序還查詢系統(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

表 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


示例

下面這一節(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)系。

db2 進(jìn)程


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 97高清国语自产拍免费 | 国产精品免费一级在线观看 | 国产高清美女一级毛片久久 | 九九精品视频免费 | 国产精品亚洲综合色拍 | 成人 在线欧美亚洲 | 美女黄色一级毛片 | 日韩欧美一二区 | 欧美日韩国产在线 | 欧美亚洲国产精品久久久 | 欧美同房免姿势108费视频 | 狼狼色丁香久久婷婷综合五月 | tobesex日本护士 | 性大特级毛片视频 | 在线视频a | 大伊香蕉在线精品不卡视频 | 亚洲欧美一二三区 | 手机看片福利日韩欧美看片 | 日本不卡免免费观看 | 91尤物国产尤物福利在线 | 99热这里有免费国产精品 | 色婷婷精品免费视频 | 麻豆成人久久精品二区三 | 国产亚洲精品欧美一区 | 一线毛片| 国产精品1区2区3区 国产精品1区2区3区在线播放 | 欧美三级一区二区三区 | 他也色在线| 中国明星一级毛片免费 | 国产精品亚洲精品日韩已满 | 久久精品影院永久网址 | 色综合欧美亚洲另类久久 | jizz女人| 狠狠色婷婷丁香综合久久韩国 | 亚洲精品一区二区三区不卡 | 亚洲国产欧美日韩一区二区三区 | 99成人在线 | 日韩欧美国产成人 | 国产小视频免费观看 | 99久久国产综合色 | 青青草好吊色 |