驗證通過的db2客戶端連線服務端
本實驗分為上下兩部分,第一部分:建立一個DB2例項;第二部分,進行了DB2網路通訊配置(Server驗證模式)的詳解,演示了使用DB2命令列客戶端(windows環境下),連線遠端資料庫的配置過程,這其中涉及到伺服器端的配置、客戶端的編目節點目錄和編目資料庫的內容。
第一部分:新建例項
1、欲使用db2icrt命令來建立例項,卻發現找不到該命令:
[[email protected] ~]$ db2icrt
-bash: db2icrt: command not found
2、查詢該命令工具的路徑,並嘗試執行,發現許可權不足,需要在root使用者下執行該命令:
/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] 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客戶端與服務端長時間通訊後,會連線不上服務端的問題,以及server端UDP丟包的問題
人生第一篇部落格,希望能以一個好的開始,持之以恆下去! 這兩天在做有關負載均衡的一個專案,期間在除錯時遇到了一個問題:客戶端與服務端依靠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()#此處是為了創建