一、DB2 實(shí)例
1、創(chuàng)建及刪除實(shí)例
DB2 實(shí)例 是一種邏輯上下文,DB2 命令及函數(shù)在其中執(zhí)行。您可將實(shí)例視為管理對數(shù)據(jù)庫文件的訪問的服務(wù)或守護(hù)進(jìn)程。在一臺服務(wù)器上可定義多個實(shí)例。各實(shí)例獨(dú)立于其他實(shí)例,也就是說所有實(shí)例均可分別管理、操縱及調(diào)優(yōu)。
要在 Windows 中創(chuàng)建實(shí)例,只需執(zhí)行以下命令:
在 Linux 和 UNIX 中,您必須另外提供一個用戶 ID,用以創(chuàng)建 fenced 用戶定義的函數(shù)和存儲過程進(jìn)程,形式如下:
db2icrt -u fenced_user_ID instance_name |
默認(rèn)情況下,用戶定義的函數(shù)和存儲過程是在 fenced 模式下創(chuàng)建的,因而這些進(jìn)程運(yùn)行在與 DB2 引擎不同的地址空間中,也稱為系統(tǒng)控制器進(jìn)程 db2sysc。這為數(shù)據(jù)庫管理器提供了保護(hù),使之免于被用戶定義的例程意外地或惡意地破壞。
要刪除一個實(shí)例,首先斷開所有數(shù)據(jù)庫連接,然后執(zhí)行以下命令停止實(shí)例:
db2idrop -f instance_name |
2、列舉、遷移和更新 DB2 實(shí)例
要列舉服務(wù)器上存在的 DB2 實(shí)例,可使用以下命令:
若您決定轉(zhuǎn)而使用比服務(wù)器上安裝的 DB2 軟件更新的版本,或者需要將 32 位實(shí)例遷移為 64 位實(shí)例,就需要進(jìn)行實(shí)例遷移。在Windows 上,實(shí)例遷移是在必要的遷移過程中隱式完成的。在 Linux 和 UNIX 上,可使用以下命令顯式地遷移已有實(shí)例:
在為 DB2 安裝修補(bǔ)程序包或補(bǔ)丁時,一旦在服務(wù)器上安裝好了修補(bǔ)程序包,您就需要更新已有實(shí)例,以鏈接到新的修補(bǔ)程序文件。使用以下命令更新實(shí)例:
3、設(shè)置 DB2 環(huán)境 恰當(dāng)?shù)卦O(shè)置 DB2 環(huán)境非常重要,這是因?yàn)樗刂浦?DB2 操作和活動的方式。DB2 環(huán)境由以下幾部分構(gòu)成:
● DB2 配置文件注冊庫
● 操作系統(tǒng)環(huán)境變量
● DB2 數(shù)據(jù)庫管理器配置參數(shù)
● DB2 數(shù)據(jù)庫配置參數(shù)
4、設(shè)置配置文件注冊庫
DB2 配置文件注冊庫是特定于 DB2 的變量,它會影響 DB2 系統(tǒng)的管理、配置與性能。為使 DB2 配置文件注冊庫的更改生效,您通常需要停止并重啟實(shí)例。
要列舉所支持的全部 DB2 配置文件注冊庫:
要設(shè)置 DB2 配置文件注冊庫:
db2set registry_variable = value |
請注意,在變量名、等號和變量值之間沒有空格。下面給出一個將 DB2COMM 注冊庫變量設(shè)置為單一值的示例:
將 DB2COMM 注冊庫變量設(shè)置為多個值的示例如下:
db2set DB2COMM=TCPIP,NPIPE,LOCAL |
要將 DB2 配置文件注冊庫重置為默認(rèn)值,只需使用與上面相同的命令即可,但不指定任何值:
db2set registry_variable = |
要顯示服務(wù)器上當(dāng)前設(shè)置的所有 DB2 配置文件注冊庫,請執(zhí)行以下命令:
5、設(shè)置系統(tǒng)環(huán)境變量 要了解您當(dāng)前工作在哪個 DB2 實(shí)例中,可運(yùn)行以下 DB2 命令:
此命令的輸出結(jié)果形式如下:
The current database manager instance is: DB2 |
絕大多數(shù) DB2 環(huán)境設(shè)置都是由 DB2 配置文件注冊庫控制的。而那些未存儲在配置文件注冊庫中的設(shè)置稱為操作系統(tǒng)環(huán)境變量。設(shè)置系統(tǒng)變量的命令將根據(jù)您所使用的平臺及 UNIX shell 而有所不同。
● 在 Windows 中: set DB2INSTANCE=DB2
● 在 Linux 和 UNIX 的 Korn shell 中: export DB2INSTANCE=DB2
DB2INSTANCE 是一個需要掌握的重要系統(tǒng)變量。它指定當(dāng)前應(yīng)用程序的會話或窗口的默認(rèn) DB2 實(shí)例。一旦設(shè)置好該變量,后續(xù)的所有 DB2 命令都將在該實(shí)例的作用域內(nèi)執(zhí)行。
6、設(shè)置配置參數(shù)
在 DB2 中,存在兩個配置 “級別”。在實(shí)例(或數(shù)據(jù)庫管理器)級別,您可為該實(shí)例配置整個 DB2 環(huán)境,這將影響實(shí)例中的所有數(shù)據(jù)庫和使用該實(shí)例中數(shù)據(jù)庫的所有應(yīng)用程序。在數(shù)據(jù)庫 級別,您可配置參數(shù),而這些參數(shù)將影響到訪問特定數(shù)據(jù)庫的所有應(yīng)用程序的行為。
獲取 DBMS 或者 DB 的配置參數(shù):
db2 get database manager configuration db2 get database configuration for database_name |
或者(后同)
db2 get database manager cfg db2 get database cfg for database_name |
更改 DBMS 或者 DB 的配置參數(shù)
db2 update database manager configuration using parameter new_value db2 update database configuration for database_name using parameter new_value |
7、聯(lián)機(jī)設(shè)置配置參數(shù) 絕大多數(shù)配置參數(shù)均可在實(shí)例或數(shù)據(jù)庫保持運(yùn)行的情況下聯(lián)機(jī)設(shè)置。只要可能,對這些聯(lián)機(jī)配置參數(shù)的更改默認(rèn)為立即生效。例如,若更改了 sortheap 的值,所有新的 SQL 請求將使用新值。為顯式指定這種立即生效的行為,可將 immediate 關(guān)鍵字附加到 update 命令中:
db2 update database manager configuration using parameter new_value immediate db2 update database configuration for database_name using parameter new_value immediate |
若您選擇將此更改延遲至實(shí)例重啟或數(shù)據(jù)庫激活時,則應(yīng)指定 deferred 關(guān)鍵字:
db2 update database manager configuration using parameter new_value deferred db2 update database configuration for database_name using parameter new_value deferred |
有時,您可能希望找出已確定并延遲了哪些更改。為顯示數(shù)據(jù)庫管理器配置參數(shù)的當(dāng)前值和掛起值,首先進(jìn)入實(shí)例,然后在 get database manager configuration 命令中指定 show detail 選項(xiàng),方法如下(請注意,instance_name 是系統(tǒng)環(huán)境變量 DB2INSTANCE 設(shè)置的值):
db2 attach to instance_name db2 get database manager configuration show detail |
同樣地,要列舉數(shù)據(jù)庫配置參數(shù)的當(dāng)前值和掛起值,首先連接到數(shù)據(jù)庫,然后使用 show detail 選項(xiàng):
db2 connect to database_name db2 get database configuration for database_name show detail |
8、強(qiáng)制停止實(shí)例和數(shù)據(jù)庫
如果您需要使數(shù)據(jù)庫或數(shù)據(jù)庫管理器配置更改立即生效,而您所更改的參數(shù)并非動態(tài),那么就需要停止并重啟數(shù)據(jù)庫或整個實(shí)例。若存在連接并使用此實(shí)例中一個或多個數(shù)據(jù)庫的應(yīng)用程序,您就無法停止并重啟數(shù)據(jù)庫或?qū)嵗4藭r,您可使用如下 DB2 命令,強(qiáng)行使用戶斷開 與數(shù)據(jù)庫的連接:
db2 force application all |
您也可以在停止實(shí)例的同時斷開所有用戶的連接,命令如下:
若您只希望強(qiáng)制停止一個特定的應(yīng)用程序,則需要了解該應(yīng)用程序的句柄。 使用以下命令查找句柄:
強(qiáng)制停止該應(yīng)用程序的連接,可使用如下 DB2 命令:(x 為該應(yīng)用程序句柄)
db2 force application (x) |
二、DB2 客戶機(jī)/服務(wù)器連通性 1、DB2 客戶機(jī)/服務(wù)器環(huán)境
由于 DB2 用戶間整體通信協(xié)議使用情況發(fā)生了變化,因此為實(shí)現(xiàn) DB2 客戶機(jī)/服務(wù)器連通性,
DB2 目前支持以下協(xié)議:
● TCP/IP
● NPIPE
對于到主數(shù)據(jù)庫(如 DB2 for z/OS 和/或 DB2 for iSeries)的連接,必須具備使用 Distributed Relational Database Architecture(DRDA)的 DB2 Connect。
2、為遠(yuǎn)程應(yīng)用程序連接準(zhǔn)備您的 DB2 數(shù)據(jù)庫
在 DB2 客戶機(jī)(應(yīng)用程序)能夠連接到數(shù)據(jù)庫之前,您必須確保服務(wù)器端通信得到了恰當(dāng)?shù)脑O(shè)置,可接收連接請求。要為 TCP/IP 連接準(zhǔn)備服務(wù)器,您需要設(shè)置一個 TCP/IP 監(jiān)聽器,方法如下。
(1)、 使用以下命令設(shè)置 DB2 配置文件注冊庫 DB2COMM,使實(shí)例能夠監(jiān)聽 TCP/IP 的連接:
(2)、使用正確的端口號更新數(shù)據(jù)庫管理器配置參數(shù) svcename,如下所示:
db2 update database manager configuration using svcename 50000 |
(3)、數(shù)據(jù)庫管理器配置參數(shù) svcename 并非動態(tài),因此您必須停止并重啟實(shí)例,以使 TCP/IP 監(jiān)聽器啟動,如下所示:
3、使用 DB2 Configuration Assistant
DB2 Configuration Assistant 提供了用戶友好的向?qū)Ш蛨D形化界面,可配置您或您的應(yīng)用程序?qū)⑹褂玫沫h(huán)境。通過 Configuration Assistant,您可以:
● 添加一個新的數(shù)據(jù)庫連接
● 更新數(shù)據(jù)庫連通性信息
● 查看并更新數(shù)據(jù)庫管理器配置參數(shù)
● 查看并更新 DB2 配置文件注冊庫
● 將應(yīng)用程序綁定到數(shù)據(jù)庫
● 更新 Call Level Interface(CLI)設(shè)置
4、配置數(shù)據(jù)庫連通性的三種方法
在 DB2 Configuration Assistant 中,有三個選項(xiàng)可用于設(shè)置數(shù)據(jù)庫連接。您可以:
● 為 DB2 數(shù)據(jù)庫搜索網(wǎng)絡(luò)
● 使用 DB2 訪問配置文件
● 手動配置連接
5、通過搜索網(wǎng)絡(luò)自動配置數(shù)據(jù)庫連通性
DB2 Discovery 搜索并定位您的網(wǎng)絡(luò)上的 DB2 服務(wù)器,您可以選擇使用搜索 或已知 發(fā)現(xiàn)方法。
搜索方法將在網(wǎng)絡(luò)中搜索任意 DB2 服務(wù)器。這種方法需要花上一些時間才能返回結(jié)果。
如果您知道一些關(guān)于希望定位的 DB2 服務(wù)器的信息,則可使用已知方法,并提供數(shù)據(jù)庫或服務(wù)器名稱之類的信息來約束搜索。
DB2 允許某些 DB2 服務(wù)器、實(shí)例或數(shù)據(jù)庫可以被發(fā)現(xiàn)或者不被發(fā)現(xiàn)。
僅在 DB2 服務(wù)器上運(yùn)行 Administration Server(DAS)服務(wù)、且 discover 配置參數(shù)被設(shè)置為 search 時,該 DB2 服務(wù)器才可被搜索到,如下所示:
db2admin start db2 update admin configuration using discover search |
您還可控制哪些實(shí)例是可被發(fā)現(xiàn)的,只需設(shè)置 discover_inst 數(shù)據(jù)庫管理器配置參數(shù)即可,如下所示:
db2 update database manager configuration using discover_inst enable |
各數(shù)據(jù)庫都擁有一個相似的配置參數(shù) —— discover_db,它可啟用或禁用數(shù)據(jù)庫發(fā)現(xiàn),如下所示:
db2 update database configuration for database_name using discover_db enable |
這里要重點(diǎn)指出,在 DAS、實(shí)例或數(shù)據(jù)庫級別禁用發(fā)現(xiàn)不會限制 DB2 客戶機(jī)通過其他方法設(shè)置數(shù)據(jù)庫連通性(下文將詳細(xì)討論)。DB2 客戶機(jī)仍然可以連接到遠(yuǎn)程數(shù)據(jù)庫 —— 即便其數(shù)據(jù)庫配置 discover_db 被禁用也是如此。
6、使用 DB2 訪問配置文件自動配置數(shù)據(jù)庫連通性
如果您要為 1,000 臺或更多的工作站設(shè)置 DB2 客戶機(jī)/服務(wù)器連通性,那么您會怎么做?您當(dāng)然可以前往每一臺工作站,使用Configuration Assistant 中的發(fā)現(xiàn)方法,但可能要花上很長一段時間才能完成這個任務(wù)。在此類情況下,您應(yīng)考慮使用 DB2 訪問配置文件。
訪問配置文件中包含客戶機(jī)配置與 DB2 服務(wù)器的連通性時所必需的信息。訪問配置文件有兩種類型:
● 服務(wù)器訪問配置文件 是在 DB2 服務(wù)器上生成的。它包含服務(wù)器上定義的全部或選定的部分實(shí)例和數(shù)據(jù)庫的相關(guān)信息。
● 客戶機(jī)配置文件 是在 DB2 客戶機(jī)上生成的。它包含客戶機(jī)上已編目的實(shí)例(也稱為節(jié)點(diǎn))和數(shù)據(jù)庫的相關(guān)信息。
讓我們逐步地看一下 DB2 訪問配置文件方法。
(1)、使用 Configuration Assistant 將信息導(dǎo)出到訪問配置文件(該文件就是一個 ASCII 文件)。
(2)、將導(dǎo)出的文件發(fā)送給客戶機(jī)。
(3)、在客戶機(jī)上使用 Configuration Assistant 將文件導(dǎo)入 DB2 客戶機(jī)。
第三個步驟也可以使用命令實(shí)現(xiàn):
db2cfimp access_profile_name |
7、手動配置數(shù)據(jù)庫連通性
如果您了解配置連通性所必需的所有信息,那么可以使用 Configuration Assistant 中的 Add Database 向?qū)А?/p>
(1)、必須首先編目節(jié)點(diǎn)(或 DB2 服務(wù)器)與實(shí)例的結(jié)合。
db2 catalog tcpip node mynode remote db2server.mycompany.com server db2icdb db2 catalog netbios node jeremy remote N01FCBE3 adapter 0 |
(2)、編目數(shù)據(jù)庫
db2 catalog database sample as mysamp at node mynode db2 catalog database baydb as newbaydb at node mynode |
8、列舉節(jié)點(diǎn)和數(shù)據(jù)庫目錄 要在 node 目錄中列舉服務(wù)器與實(shí)例的結(jié)合,可使用如下命令:
要列舉 database 目錄,可使用如下命令:
db2 list database directory |
9、附加到實(shí)例并連接到數(shù)據(jù)庫
通過編目節(jié)點(diǎn)和數(shù)據(jù)庫設(shè)置完客戶機(jī)/服務(wù)器連通性后,您可附加到實(shí)例以進(jìn)行實(shí)例級管理任務(wù),也可連接到數(shù)據(jù)庫以讀取該數(shù)據(jù)庫中的數(shù)據(jù)或向數(shù)據(jù)庫寫入數(shù)據(jù)。
要附加到 DB2 實(shí)例,可使用 DB2 命令 attach,如下所示:
attach to nodename user username using password |
附加到實(shí)例后,您可在該實(shí)例上執(zhí)行管理任務(wù),例如:
● 創(chuàng)建和刪除數(shù)據(jù)庫
● 檢索、更新和重置數(shù)據(jù)庫管理器及數(shù)據(jù)庫配置參數(shù)
● 管理數(shù)據(jù)庫監(jiān)控程序
● 備份、還原和前滾數(shù)據(jù)庫
● 強(qiáng)制用戶和應(yīng)用程序與實(shí)例中定義的數(shù)據(jù)庫斷開連接
要連接到數(shù)據(jù)庫,以選擇、插入、更新或刪除數(shù)據(jù),您必須首先通過以下方式連接到數(shù)據(jù)庫:
connect to database_name user username using password [new new_password confirm new_password ] |
連接到數(shù)據(jù)庫之后,就可以進(jìn)行數(shù)據(jù)庫的相應(yīng)操作了。