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