[DB2]原創--新建例項與網路通訊配置

zad800發表於2010-08-04

         最近白天上DB2課程,晚上準備OCP考試複習,有一段時間沒寫部落格了。現在先將今晚的實驗給總結一下,有空再將前些日子的實驗進行整理。

         本實驗分為上下兩部分,第一部分:建立一個DB2例項;第二部分,進行了DB2網路通訊配置(Server驗證模式)的詳解,演示了使用DB2 命令列客戶端(windows環境下),連線遠端資料庫的配置過程,這其中涉及到伺服器端的配置、客戶端的編目節點目錄和編目資料庫的內容。

第一部分:新建例項

1、欲使用db2icrt命令來建立例項,卻發現找不到該命令:

[db2inst1@localhost ~]$ db2icrt

-bash: db2icrt: command not found

2、查詢該命令工具的路徑,並嘗試執行,發現許可權不足,需要在root使用者下執行該命令:

[db2inst1@localhost ~]$ find /opt/ibm/ -name db2icrt

/opt/ibm/db2/V9.7/instance/db2icrt

[db2inst1@localhost ~]$ /opt/ibm/db2/V9.7/instance/./db2icrt -h

-bash: /opt/ibm/db2/V9.7/instance/./db2icrt: Permission denied

3、切換到root使用者,使用-h來檢視幫助:

[root@localhost instance]# su - db2inst2

[db2inst2@localhost ~]$ su - root

Password:

[root@localhost ~]# cd /opt/ibm/db2/V9.7/instance

[root@localhost instance]# ./db2icrt -h

DBI1001I  Usage:

 

 db2icrt [-h|-?]

         [-d]

         [-a AuthType]

         [-p PortName]

         [-s InstType]

         -u FencedID InstName

4、發現需要指定FencedIDInstName引數,而這兩個引數,實際上就是要指定兩個使用者名稱,FencedID使用者主要管理使用者定義的函式(UDF)和受防護儲存過程。而InstName是新例項的名稱,也是我們新例項的管理員的使用者名稱。下面我們,分別新建這兩個使用者:

 [root@localhost ~]# useradd inst2Fence

[root@localhost ~]# passwd inst2Fence

Changing password for user inst2Fence.

New UNIX password:

BAD PASSWORD: it is based on a dictionary word

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

 

 [root@localhost ~]# useradd db2inst2

[root@localhost ~]# passwd db2inst2

Changing password for user db2inst2.

New UNIX password:

BAD PASSWORD: it is based on a dictionary word

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

 

5、現在是最關鍵的步驟,使用如下命令來建立例項,客戶驗證的方式採用server-a引數),指定埠號為55555-p 引數),結果因Fenced使用者名稱過長,建立失敗:

[root@localhost instance]#./db2icrt -a server -p 55555 -s ese -u inst2Fence db2inst2

 

ERROR: The length of the fenced user name inst2Fence is invalid. It must not be longer than 8.

 

我們再建立一個名字較短的使用者,以滿足要求:

[root@localhost instance]# ./db2icrt -a server -p 55555 -s ese -u Fence2 db2inst2

DBI1070I  Program db2icrt completed successfully.

 

6、切換使用者登陸,檢視下系統當前的預設例項:

[root@localhost instance]# su - db2inst2

[db2inst2@localhost ~]$ db2 get instance

 

 The current database manager instance is:  db2inst2

 

檢視所有例項:

[db2inst2@localhost ~]$ db2ilist

db2inst2

db2inst1

 

         總結:

1、建立例項使用的是db2icrt命令,由於版本的原因,預設是找不到該命令工具的路徑。2、在建立例項之前,需要先建立好FencedID使用者和InstName使用者。

 

第二部分

         此部分實驗,演示瞭如何使用命令列客戶端如何與db2伺服器進行通訊。

首先,在服務端需要配置好服務名、監聽埠、通訊協議,並且需要建立一個資料庫,供客戶端連線:

1、配置服務名

1.1、檢視一下服務名,發現建立例項時指定的-p引數(埠名或埠號),成為了服務名:

[db2inst2@localhost ~]$ db2 get dbm cfg | grep SVC

 TCP/IP Service name                          (SVCENAME) = 55555

 SSL service name                         (SSL_SVCENAME) =

1.2、指定例項的服務名為db2c_db2inst2:

[db2inst2@localhost ~]$ db2 update dbm cfg using SVCENAME db2c_db2inst2

DB20000I  The UPDATE DATABASE MANAGER CONFIGURATION command completed

successfully.

[db2inst2@localhost ~]$ db2 get dbm cfg | grep SVC     

 TCP/IP Service name                          (SVCENAME) = db2c_db2inst2

 SSL service name                         (SSL_SVCENAME) =

2、指定監聽客戶端請求的埠,修改service檔案:

[root@localhost instance]# vi /etc/services

db2c_db2inst2  55555/tcp

3、確認好通訊協議是tcpip

[db2inst2@localhost ~]$ db2set

DB2COMM=tcpip

4、重啟db2例項(執行db2stopdb2start兩條命令),檢視監聽是否開啟:

[root@localhost instance]#  netstat -a | grep db2c_db2inst2

tcp        0      0 *:db2c_db2inst2             *:*                         LISTEN     

5、新建一個資料庫,供客戶端連線:

db2 => create database demo

DB20000I  The CREATE DATABASE command completed successfully.

 

 

         以下部分是在客戶端進行配置的操作過程:

1、編目節點目錄:

回到我們的客戶端機器,開啟windows的開始選單,選擇“IBM DB2--“命令列工具”--“命令視窗”:

db2 => catalog TCPIP node n1 remote 192.168.102.163 server db2c_db2inst2

DB20000I  CATALOG TCPIP NODE 命令成功完成。

DB21056W  只有在重新整理目錄快取記憶體以後,目錄更改才會生效。

 

如何才能夠“重新整理”呢?使用如下命令,來檢視幫助:

db2 => ? DB21056W

DB21056W直到重新整理目錄快取記憶體之後,目錄更改才生效。

解釋:

若啟用了目錄快取記憶體(DBM CFG dir_cache),資料庫、節點和 DCS目錄檔案都快取記憶體在記憶體中。直到重新整理該目錄快取記憶體之後,目錄更改才開始生效。參閱“管理指南”中的 dir_cache配置引數以獲取有關目錄快取記憶體的描述。

 

使用者響應:

 

要重新整理 CLP 的目錄快取記憶體,發出 db2TERMINATE。要重新整理另一個應用程式的目錄資訊,停止該應用程式,然後重新啟動它。要重新整理該資料庫的目錄資訊,停止(db2stop)該應用程式,然後重新啟動(db2start)它。

 

檢視幫助後,發現使用terminate即可:

db2 => terminate

DB20000I  TERMINATE 命令成功完成。

 

D:\Program Files\IBM\SQLLIB\BIN>

 

2、在客戶端上編目資料庫,可以給資料庫名在本地取一個“別名”,以防止不同例項下的資料庫出現同名的情況:

db2 => catalog database demo as demo2 at node n1 authentication server

DB20000I  CATALOG DATABASE 命令成功完成。

DB21056W  只有在重新整理目錄快取記憶體以後,目錄更改才會生效。

db2 => terminate

DB20000I  TERMINATE 命令成功完成。

 

3、連線到資料庫時出錯,提示找不到服務:

db2 => connect to demo2 user db2inst2 using passwd

SQL1337N  找不到服務 "db2c_db2inst2"

 

4、分析:建立節點時,指定的最後一個引數可能有問題,因為我們新建例項的時候,指定的是埠號;與之對應得,客戶端的在進行節點編目時也應該指定埠號,而不是服務名:

刪除資料庫編目和節點目錄,為重新配置,做準備:

db2 => uncatalog db demo2

DB20000I  UNCATALOG DATABASE 命令成功完成。

DB21056W  只有在重新整理目錄快取記憶體以後,目錄更改才會生效。

db2 => uncatalog node n1

DB20000I  UNCATALOG NODE 命令成功完成。

DB21056W  只有在重新整理目錄快取記憶體以後,目錄更改才會生效。

db2 => terminate

DB20000I  TERMINATE 命令成功完成。

 

D:\Program Files\IBM\SQLLIB\BIN>db2

 

5、重建節點目錄和資料庫編目:

db2 => catalog TCPIP node n1 remote 192.168.102.163 server 55555

DB20000I  CATALOG TCPIP NODE 命令成功完成。

DB21056W  只有在重新整理目錄快取記憶體以後,目錄更改才會生效。

db2 => terminate

DB20000I  TERMINATE 命令成功完成。

 

db2 => catalog database demo as demo2 at node n1 authentication server

DB20000I  CATALOG DATABASE 命令成功完成。

DB21056W  只有在重新整理目錄快取記憶體以後,目錄更改才會生效。

db2 => terminate

DB20000I  TERMINATE 命令成功完成。

 

6、成功登陸

db2 => connect to demo2 user db2inst2 using passwd

 

   資料庫連線資訊

 

 資料庫伺服器         = DB2/LINUX 9.7.1

 SQL 授權標識         = DB2INST2

 本地資料庫別名       = DEMO2

 

db2 => list node directory

 

 節點目錄

 

 目錄中的條目數 = 2

 

節點 1 條目:

 

 節點名                          = N1

 註釋                            =

 目錄條目型別                    = LOCAL

 協議                            = TCPIP

 主機名                          = 192.168.102.163

 服務名稱                        = 55555

 

節點 2 條目:

 

 節點名                          = NDE5C9F6

 註釋                            =

 目錄條目型別                    = LOCAL

 協議                            = TCPIP

 主機名                          = 192.168.102.163

 服務名稱                        = db2c_db2inst1

 

總結:1、在本實驗中,埠號和通訊協議是伺服器配置的重要引數,服務名的作用沒有體現出來(使用圖形化工具配置時,服務名作用十分重要);

2、客戶端的配置,比較關鍵的步驟是節點目錄和資料庫編目的建立。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14600958/viewspace-670173/,如需轉載,請註明出處,否則將追究法律責任。

相關文章