[DB2]原創--新建例項與網路通訊配置
最近白天上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、發現需要指定FencedID和InstName引數,而這兩個引數,實際上就是要指定兩個使用者名稱,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例項(執行db2stop和db2start兩條命令),檢視監聽是否開啟:
[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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【原創】Oracle 事務探索與例項(二)Oracle
- 【原創】 Oracle 事務探索與例項(一)Oracle
- Android 網路通訊API的選擇和實現例項AndroidAPI
- 【原創】Oracle execute plan 原理分析與例項分享Oracle
- java串列埠通訊例項 -Java串列埠
- 網路通訊
- 【原創】webservice xfire框架例項筆記Web框架筆記
- 網際網路創業原創精品?創業
- Java的Socket通訊簡單例項Java單例
- Java 下 SSL 通訊原理及例項Java
- udp網路通訊UDP
- 【原創】使用普通檔案建立ASM例項ASM
- 網路通訊2:TCP通訊實現TCP
- 網路通訊3:TCP互動通訊TCP
- 網路通訊2:TCP簡單通訊TCP
- OpenHarmony雙網路卡配置例項
- 三通基礎與例項
- 轉:DB2聯合資料庫(FEDERATED DATABASE)配置例項DB2資料庫Database
- 文字水印技術與網路安全通訊 (轉)
- DB2-WINDOWS測試新建例項資料庫配置管理DB2Windows資料庫
- [原創]SAP方丈-SAP增強應用例項
- dubbo網路通訊(四)
- 網路通訊1:UDPUDP
- 19作 網路通訊
- 網路通訊協議協議
- 網路通訊基礎
- windows訊息機制與例項Windows
- USB共享網路:android手機通過USB與Ubuntu進行socket網路通訊AndroidUbuntu
- 附例項!實現iframe父窗體與子窗體的通訊
- Flutter 例項 - 從本地到Flutter通訊 - Event ChannelsFlutter
- linux程式間通訊-----管道總結例項Linux
- k8s網路模型與叢集通訊K8S模型
- WPF新建viewModel例項化成員的注意事項View
- 板橋里人:J2EE原創教程和例項
- 【轉】新建例項開啟已有的資料庫 — 資料庫與例項的區分測試資料庫
- docker系列(五):網路通訊Docker
- 網路通訊程式設計程式設計
- BZOJ3651 : 網路通訊