linux下DB2中在命令行狀態(tài)下如何實(shí)現(xiàn)DB2實(shí)例?
以下的文章主要向大家描述的是在linux操作系統(tǒng)下DB2數(shù)據(jù)庫(kù)中在命令行狀態(tài)下對(duì)第二個(gè)DB2實(shí)例進(jìn)行創(chuàng)建的實(shí)際操作步驟,以下就是DB2實(shí)例進(jìn)行創(chuàng)建的實(shí)際操作步驟具體方案的描述,希望在你今后的學(xué)習(xí)中會(huì)有所幫助。
linux下DB2中,在命令行狀態(tài)下創(chuàng)建第二個(gè)DB2實(shí)例DB2inst2全過程詳解
這個(gè)全過程是***次接觸到DB2時(shí)要求做的,然后當(dāng)時(shí)DB2的安裝文件又找不到了,所以自己從網(wǎng)上找些資料,然后自己摸索著建出來的,如有遺漏錯(cuò)誤,還請(qǐng)不吝賜教。
(這個(gè)***是使用DB2的安裝文件來建第二個(gè)實(shí)例,方便而且不會(huì)出錯(cuò)。下面講的是笨方法~)
首先,系統(tǒng)原有的DB2信息,
安裝目錄 : /opt/IBM/DB2/V8.1
DB2inst1實(shí)例目錄 : /home/DB2inst1
現(xiàn)在需要?jiǎng)?chuàng)建DB2inst2實(shí)例:
1.首先創(chuàng)建實(shí)例目錄:
(( 創(chuàng)建之前,查看磁盤可用空間 以確定剩余空間足夠使用 命令: df -k ))
- cd /home
- mkdir DB2inst2
2.然后給DB2inst2實(shí)例創(chuàng)建實(shí)例用戶和組:
創(chuàng)建組:
- groupadd DB2inst25 O:
創(chuàng)建用戶DB2inst2,設(shè)定設(shè)定用戶主目錄,設(shè)定primaryGroup為DB2grp1:(useradd --help 查看參數(shù))useradd -m -d /home/DB2inst2 -s /bin/bash -g DB2grp1 -G DB2inst2 DB2inst2
如果不知道用戶的密碼,可以在root用戶下 ,命令passwd -d DB2inst2 可以刪除DB2inst2用戶的密碼,然后返回明文的DB2inst2用戶的密碼passwd: Success
然后在DB2inst2用戶下 ,使用命令passwd修改密碼(首先要輸入當(dāng)前密碼:Success)
3.創(chuàng)建實(shí)例
創(chuàng)建DB2實(shí)例DB2inst2:
- ./DB2icrt -u DB2inst2 DB2inst2
4.建數(shù)據(jù)庫(kù),建表
創(chuàng)建數(shù)據(jù)庫(kù)gpending:
(如果需要建立的數(shù)據(jù)庫(kù)目錄為自己設(shè)定的目錄,就需要首先建立好那個(gè)目錄,并設(shè)定好目錄的owener為DB2inst2)
建庫(kù)命令:
- DB2 create db gpending on /home/DB2inst2/pending using codeset UTF-8 territory US
(這條命令中數(shù)據(jù)庫(kù)的目錄/home/DB2inst2/pending中,/pending即為用戶自己設(shè)定的目錄,因此需要修改權(quán)限 chown -R DB2inst2:DB2grp1 pending )
然后命令 DB2
進(jìn)入DB2命令行,connect to gpending 可以返回:數(shù)據(jù)庫(kù)連接信息
數(shù)據(jù)庫(kù)服務(wù)器 = DB2/LINUX 8.2.7
SQL 授權(quán)標(biāo)識(shí) = DB2INST2
本地?cái)?shù)據(jù)庫(kù)別名 = GPENDING
證明數(shù)據(jù)庫(kù)的本地連接成功。
建表語句不再描述。
DB2下 命令list tables for all
可以返回所有的表(包含剛創(chuàng)建的)#p#
5.配置遠(yuǎn)程連接端口
首先為遠(yuǎn)程連接配置空閑端口: (查看端口使用情況命令: netstat -na | grep 50000 查看50000端口是否已使用中 )
vi /etc/services 查看分配給DB2實(shí)例DB2inst2的端口. 返回結(jié)果中db這一塊的有
- # Local services
- DB2_DB2inst1 60000/tcp
- DB2_DB2inst1_1 60001/tcp
- DB2_DB2inst1_2 60002/tcp
- DB2_DB2inst1_END 60003/tcp
- DB2c_DB2inst1 50000/tcp
- DB2i_DB2inst1 50001/tcp)
- DB2_DB2inst2 60004/tcp
- DB2_DB2inst2_1 60005/tcp
- DB2_DB2inst2_2 60006/tcp
- DB2_DB2inst2_END 60007/tcp
- )
在里面添加兩條:
- DB2c_DB2inst2 70000/tcp
- DB2i_DB2inst2 70001/tcp
分別為為DB2inst2實(shí)例的偵聽端口和中斷端口。
網(wǎng)上找到的大部分創(chuàng)建第二個(gè)實(shí)例以及建表的方法就至此結(jié)束了,但是實(shí)際使用的時(shí)候,遠(yuǎn)程連接還是連接不上的。
后來找到了通過另一實(shí)例DB2inst1使用CATALOG編目的方法來實(shí)現(xiàn)遠(yuǎn)程連接的成功方法。
首先切換到另一用戶,這里使用DB2inst1:
在root下:
su - DB2inst1
編目節(jié)點(diǎn)名,取任意名稱,如為inst3,指向DB2機(jī)器所在,之前在etc/services文件中為DB2inst2實(shí)例配置的偵聽端口:
- DB2 "catalog tcpip node inst3 remote 10.213.1.95 server 70000"
然后給節(jié)點(diǎn)指向的DB2inst2實(shí)例新建的數(shù)據(jù)庫(kù)配置別名:
- DB2 "catalog db gpending as gpending at node inst3"
編目成功后,可以嘗試連接(在DB2inst1用戶下):
用命令: connect to gpending user DB2inst2 using password
或命令: DB2 attach to inst3 user DB2inst2 using password
系統(tǒng)會(huì)報(bào)出如下一個(gè)通信協(xié)議的錯(cuò)誤,類似于:SQL30081N 檢測(cè)到通信錯(cuò)誤。正在使用的通信協(xié)議:"TCP/IP"。正在使用的通信API:"SOCKETS"。
檢測(cè)到錯(cuò)誤的位置:"10.213.1.95"。檢測(cè)到錯(cuò)誤的通信函數(shù):"connect"。
協(xié)議特定的錯(cuò)誤代 碼:"111"、"*"、"*"。 SQLSTATE=08001,
(這一段是網(wǎng)上搜索到的:
為什么通訊協(xié)議會(huì)出錯(cuò)呢?系統(tǒng)不是會(huì)默認(rèn)地給實(shí)例設(shè)置一些基礎(chǔ)的屬性嗎?
并非如此!?。?/p>
通過DB2SETUP方式創(chuàng)建的實(shí)例(即使用DB2安裝文件來新建實(shí)例),有些參數(shù)會(huì)默認(rèn)的幫你設(shè)置成缺省的參數(shù)值。
但通過命令行方式創(chuàng)建實(shí)例時(shí),DB2實(shí)例參數(shù)并沒有被設(shè)置。所以DB2inst2實(shí)例的通訊協(xié)議沒有定義,因此發(fā)生剛才的現(xiàn)象。
因此,在用戶DB2inst1下,通過命令DB2set ,你可以看到如下信息:
- DB2 _INLIST_TO_NLJN=YES
- DB2_EVALUNCOMMITTED=yes
- DB2_RR_TO_RS=YES
DB2COMM=tcpip (該屬性是指明該DB2實(shí)例使用的通信協(xié)議,一個(gè)實(shí)例可以使用多個(gè)通信協(xié)議,多個(gè)通信協(xié)議之間使用逗號(hào)分開,如:TCPIP、IPX、APPC、NPIPE……)
DB2AUTOSTART=yes( 設(shè)置實(shí)例是否在系統(tǒng)啟動(dòng)是自動(dòng)啟動(dòng),在Windows系統(tǒng)中DB2的實(shí)例是作為服務(wù)形式啟動(dòng)的)
但是在用戶db2inst2下使用 命令db2set,你將什么也看不到!
所以要手動(dòng)設(shè)置參數(shù):
在 db2inst2下:
- db2set DB2COMM=tcpip
- db2set DB2AUTOSTART=yes
然后給db2inst2實(shí)例指定端口(即在etc/services文件中添加的兩條,之前先做過)
然后查看實(shí)例的配置文件:
命令: db2 get dbm config
返回的結(jié)果中發(fā)現(xiàn)SVCENAME的值是空的配置SVCENAME的值,即在services文件中為db2inst2實(shí)例指定的偵聽端口(70000)的服務(wù)名:db2c_db2inst2
命令:db2 update dbm config using SVCENAME db2c_db2inst2
然后重啟整個(gè)db2……
用客戶端工具連接實(shí)例,成功!
(
要注意的是,用遠(yuǎn)程機(jī)器上的客戶端連接時(shí),要配置的信息:
用戶標(biāo)識(shí):“db2inst2”
密碼下:“password”
數(shù)據(jù)庫(kù)名稱: “gpending”
服務(wù)器 : “10.213.1.95”
端口號(hào):“50000” (注意:這里填的不是70000)
(端口寫為db2inst2分配的70000端口時(shí),客戶端連接時(shí)怎么也不成功,后來改成50000,發(fā)現(xiàn)就可以了,這可能就是編目的原因吧,我自己理解可能就是通過連接50000端口,即db2inst1,然后通過編目gpending 映射到db2inst2的gpending 表,然后用用戶名和密碼連接。)
)
至此,DB2實(shí)例db2inst2的配置成功完成!
【編輯推薦】
- IBM DB2跨平臺(tái)數(shù)據(jù)庫(kù)遷移操作與潛在危機(jī)
- IBM DB2參數(shù)調(diào)優(yōu)如何顯神功?
- DB2 dart恢復(fù)數(shù)據(jù)的操作步驟與應(yīng)用代碼
- DB2數(shù)據(jù)復(fù)制與數(shù)據(jù)庫(kù)遷移追根述源
- DB2 CMO安裝7.1.2.6補(bǔ)丁之后會(huì)出現(xiàn)的錯(cuò)誤