1. 程式人生 > >驗證通過的db2客戶端連線服務端

驗證通過的db2客戶端連線服務端

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

第一部分:新建例項

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

[[email protected] ~]$ db2icrt

-bash: db2icrt: command not found

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

[[email protected]

~]$ find /opt/ibm/ -name db2icrt

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

[[email protected] ~]$ /opt/ibm/db2/V9.7/instance/./db2icrt -h

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

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

[[email protected] instance]# su - db2inst2

[[email protected] ~]$ su - root

Password:

[[email protected]

~]# cd /opt/ibm/db2/V9.7/instance

[[email protected] instance]# ./db2icrt -h

DBI1001I Usage:

 db2icrt [-h|-?]

        [-d]

        [-a AuthType]

        [-p PortName]

        [-s InstType]

        -u FencedID InstName

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

 [[email protected] ~]# useradd inst2Fence

[[email protected] ~]# 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.

 [[email protected] ~]# useradd db2inst2

[[email protected] ~]# 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使用者名稱過長,建立失敗:

[[email protected] instance]#./db2icrt -a server -p 55555 -s ese -u inst2Fence db2inst2

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

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

[[email protected] instance]# ./db2icrt -a server -p 55555 -s ese -u Fence2 db2inst2

DBI1070I Program db2icrt completed successfully.

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

[[email protected] instance]# su - db2inst2

[[email protected] ~]$ db2 get instance

 The current database manager instance is: db2inst2

檢視所有例項:

[[email protected] ~]$ db2ilist

db2inst2

db2inst1

        總結:

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

第二部分

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

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

1、配置服務名

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

[[email protected] ~]$ db2 get dbm cfg | grep SVC

 TCP/IP Service name                         (SVCENAME) = 55555

 SSL service name                        (SSL_SVCENAME) =

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

[[email protected] ~]$ db2 update dbm cfg using SVCENAME db2c_db2inst2

DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed

successfully.

[[email protected] ~]$ db2 get dbm cfg | grep SVC     

 TCP/IP Service name                         (SVCENAME) = db2c_db2inst2

 SSL service name                        (SSL_SVCENAME) =

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

[[email protected] instance]# vi /etc/services

db2c_db2inst2 55555/tcp

3、確認好通訊協議是tcpip:

[[email protected] ~]$ db2set

DB2COMM=tcpip

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

[[email protected] instance]# netstat -a | grep db2c_db2inst2

tcp       0     0 *:db2c_db2inst2            *:*                        LISTEN     

5、新建一個數據庫,供客戶端連線:

db2 => create database demo

DB20000I The CREATE DATABASE command completed successfully.

 注意:

在伺服器上使用db2 list node directory 可以參考客戶端能連線的ip和埠(在/ect/service檔案中檢視)

在伺服器上使用db2 list db directorty 可以檢視客戶端能連線的資料庫

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

 db2 catalog tcpip node <node_name> remote <hostname|ip_address> server <svcname|port_number> ostype 
<OS2|AIX|WIN95|NT|HPUX|SUN|MVS|OS400|VM|VSE|SCO|SGI|LINUX|DYNIX>

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  (此處使用者名稱密碼為例項的使用者名稱密碼,而非ssh的使用者名稱密碼)

  資料庫連線資訊

 資料庫伺服器        = 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、客戶端的配置,比較關鍵的步驟是節點目錄和資料庫編目的建立。

3、連線完成後 即可以在本地進行嵌入式資料庫程式設計等

相關推薦

驗證通過db2客戶連線服務

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

DB2客戶連線服務的方法

1. 埠檢視 1. 在DB2命令列中, 執行: DB2 GET DBM CFG |FIND "SVCENAME", 將會獲得如下輸出: TCP/IP Service name    (SVCENAME) = db2c_DB2 2. 開啟c:/windows/system32/drivers/etc/serv

boost::asio伺服器處理多個客戶連線(服務程式)

class talk_to_client //: boost::enable_shared_from_this<talk_to_client> { public:     talk_to_client():m_sock(service),already_r

本地同時安裝oracle客戶服務(通過plSql連線)

前期準備 之前本站已經分享了oracle伺服器端(資料庫)的安裝,接下來只需要下個oracle的客戶端以及PLSQL Developer資料庫管理軟體,即能實現本地操控自己電腦上的oracle資料庫。 可以從我的百度雲連結:http://pan.baidu.com/s/1

Java 關於生成WebService客戶以及服務存在賬號密碼登入如何通過程式碼模擬登入解決方案

首先,這篇文章主要是用來做一個記錄,方便以後使用,所以不會有太多關於webService以及wsdl的一些原理上的講解,主要是為了解決實際問題,即:如何生成webService客戶端去呼叫服務端,以及當服務端需要進行賬號密碼登入時,我們該如何模擬登入,來繼續呼叫裡面的介面。 主

從零開始學Socket:(二)連線服務客戶

先了解一下執行緒問題,在Main函式裡就是主執行緒他能處理程式碼,而new Thread就是新開一個執行緒,他和主執行緒互不干預,但是主執行緒完了,他也完了。他完了,主執行緒沒事。   在上篇部落格裡,我們已經建立好了伺服器端和客戶端,但是他們倆還沒有聯絡,要把他們聯絡起來,就

python :通過udp協議實現客戶服務的互動

(1)服務端 建立socket 繫結目的ip和埠號、 資料互動 import socket udpSer = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #這裡的SOCK_DGRAM 為udp流 udpSe

python : 通過socket的Tcp/ip協議實現客戶服務的資料互動

#服務端 繫結socket 繫結目的ip和埠 建立監聽 建立連線 資料互動 import socket ''' #建立socket :通過server接收 #繫結目的ip和埠號 #設定監聽 #建立連線Socket,Address接收資訊 #資料互

ignite客戶啟動時無法連線服務

異常 [21:01:02,094][SEVERE][main][IgniteKernal] Failed to startmanager:GridManagerAdapter[enabled=true, name=o.a.i.i.managers.discovery.Gri

iOS 一個HTTPS連線客戶服務互動過程

在一個HTTPS連線的網路中,輸入賬號和密碼並單擊登陸按鈕後,到伺服器返回這個請求前,這期間經歷了什麼? 答:具體經歷了一下8步: 客戶端打包請求。其中包括URL、埠、賬號和密碼等。使用賬號和密碼登陸應該用的是POST方式,所以相關的使用者資訊會被載入到body中。這個請

SOCKET客戶服務長時間通訊後,會連線不上服務的問題,以及serverUDP丟包的問題

人生第一篇部落格,希望能以一個好的開始,持之以恆下去! 這兩天在做有關負載均衡的一個專案,期間在除錯時遇到了一個問題:客戶端與服務端依靠socket通訊,但是長時間通訊後,會發生客戶端連線不上服務端的狀況。而後查詢了一些資料後,終於搞清楚問題的緣由了,在此和大家分享一下!

java--實現多個客戶服務連線

在客戶端與服務端的簡單連線上進行了略微的新增,實現了多個客戶端與服務端的連線 目的: 多個客戶端與服務端的連線,實現服務端發訊息客戶端可以接受到 程式碼: 服務端 import java.io.IOE

Android(客戶通過socket與QT(服務)通訊

一、概述 在這裡我想實現一個跨平臺的socket通訊,Android手機作為客戶端向Ubuntu的QT平臺上的服務端傳送一個字元命令,由於是隻傳送一個字元,這裡我儘可能簡化socket通訊的過程以供後人參考。 文中貼上主要程式碼,末尾會給出完整原始碼的下載。

tcp網路程式設計客戶服務及listen和tcp允許最大連線

tcp網路程式設計 tcp網路程式設計步驟: 由於tcp傳輸特點是可靠有連線,那麼就有 1.客戶端向服務端傳送連線請求(SYN), 2.服務端接受請求並向客戶端傳送(SYN+ACK); 3.客戶端向服務端回覆ACK表明他知道服務端同意連線。 以上三個步驟就是三次

客戶服務如何使用Token和Session

cnblogs blank style ssi exception font 統一 判斷 用戶 一、我們先解釋一下他的含義: 1、Token的引入:Token是在客戶端頻繁向服務端請求數據,服務端頻繁的去數據庫查詢用戶名和密碼並進行對比,判斷用戶名和密碼正確與否,並作

Python socket編程客戶服務通信

eve sock 系統 con conn 綁定 idt 註意 服務 [本文出自天外歸雲的博客園] 目標:實現客戶端與服務端的socket通信,消息傳輸。 客戶端 客戶端代碼: from socket import socket,AF_INET,SOCK_STRE

Netty入門之客戶服務通信(二)

ktr 數據格式 lis boot ride owa 參數 val cef Netty入門之客戶端與服務端通信(二) 一.簡介   在上一篇博文中筆者寫了關於Netty入門級的Hello World程序。書接上回,本博文是關於客戶端與服務端的通信,感覺也沒什麽好說的了,直接

寫給產品經理的技術書:客戶服務和交互相關技術

gif manage 輸入法 fad 圖形 三位數 更換 網購 zoom 產品經理有三大領域的技術是需要去攻克的,分別是:客戶端相關技術、服務端相關技術、交互相關技術 一、客戶端相關技術 1.iOS和安卓產品差異 1.1 應用的設備不同: IOS和安卓最大的區別在於本身所應

基於thrift的java和python分別作為客戶服務的調用實現

Coding except arr pes com ssa utf-8 encoding 中文亂碼 前面已經實現了純java的thrift的實現。 現在實現實現一下python作為客戶端和服務端的thrift的調用 1.python作為客戶端,java作為服務端 java服

python---》客戶服務的基礎(做一個簡單的客戶服務

python 今天我們分享的內容是python簡單的客戶端與服務端,此處僅介紹一些簡單的函數,並作出來一個玩兒玩兒。 在開始之前呢,先用一張圖表示他們之間的關系 我們來按照這個步伐依次介紹:服務端:import socketserver=socket.socket()#此處是為了創建