https://www.cnblogs.com/JamesHao/p/12991870.html
一、db2prereqcheck預檢查
首先進入到壓縮包所在的目錄,執行tar
命令對.tar.gz壓縮文件進行解壓
# 解壓到當前目錄 tar -zxvf v10.5_linuxx64_expc.tar.gz # 后面加 -C 目錄 可以指定需要解壓到的目錄。 # 如:tar -zxvf v10.5_linuxx64_expc.tar.gz -C /home/wells/soft
第一次解壓的時候失敗了,刪了重新從網盤下了一次再解壓,解壓完成!
解壓完成后,進入當前目錄下剛剛解壓出來的expc
文件夾,通過ll
命令可以看到,有一個叫db2prereqcheck
的文件,這個文件是用於db2安裝預檢查的,命令如下:
# 進入解壓出來的文件夾 cd expc/ # 查看當前所在目錄下的所有文件信息 ll # 執行預檢查程序 ./db2prereqcheck
預檢查程序顯示未滿足的條件,這里出現了4個問題。
-
/lib/libpam.so*
錯誤信息
英文: DBT3514W The db2prereqcheck utility failed to find the following 32-bit library file: "/lib/libpam.so*" 中文: DBT3514W db2prereqcheck 實用程序未能找到以下 32 位庫文件:"/lib/libpam.so*"
解決方案:
yum install pam-devel.i686 yum install pam.i686
這里我只執行成功了
yum install pam-devel.i686
,執行yum install pam.i686
時提示沒有可以安裝的依賴包。
-
sg3_utils / sg_persist
錯誤信息
英文: DBT3507E The db2prereqcheck utility failed to find the following package or file: "sg_persist". DBT3507E The db2prereqcheck utility failed to find the following package or file: "sg3_utils". 中文: DBT3507E db2prereqcheck 實用程序未能找到以下程序包或文件:"sg_persist" DBT3507E db2prereqcheck 實用程序未能找到以下程序包或文件:"sg3_utils"
解決方案:
yum install sg3_utils-*
運行一行解決兩個!nice!
sg_persist也解決了
openibd 缺少,可以不用安裝。主要用於圖形化界面的安裝方式(./db2_install),可以使用./db2_install 命令行版安裝跳過該驅動
-
關閉SELinux
這里我使用永久關閉,百度有臨時關閉的方法~
使用
vi
命令編輯/etc/selinux/config
vi /etc/selinux/config
將
SELINUX=enforcing
注釋,新增一行SELINUX=disabled
。:wq
保存退出設置完成后,記得使用
reboot
命令重啟。
重啟后再次執行預檢查程序。
# 執行預檢查程序 ./db2prereqcheck
如下圖所示,剛剛出現的問題已經解決了!
二、db_install安裝
還是在剛剛的expc
文件夾,運行db2_install
進行安裝:
./db2_install
這里有詢問是否安裝到缺省目錄。我這里選擇是
,當然,也可以輸入 否 ,安裝到指定的目錄。
三、創建用戶組和用戶
創建實例前,需要先創建用戶組和用戶
# 創建兩個組 groupadd db2adml groupadd db2fenl # 創建兩個用戶,並將他們分配給剛剛創建好的用戶組 # 在這里-d指定目錄,-m 表示如果用戶目錄不存在,則創建, -g指定用戶組 useradd -d /home/db2instl -m db2instl -g db2adml useradd -d /home/db2fenc1 -m db2fencl -g db2fenl
給db2instl
和db2fencl
兩個賬戶設置密碼,如果沒有設置密碼后面會出現問題。
tip: 密碼不能小於8位,且不能與用戶名相同
passwd db2instl
passwd db2fencl
現在可以創建實例啦~
首先進入我們前面的安裝路徑/opt/ibm/bd2/V10.5
下的/instance/
目錄。在這個目錄下,用ls
或ll
命令可以看到一個叫db2icrt
的命令。他是db2 instance create 的縮寫,我們用這個命令來創建一個實例。
cd /opt/ibm/db2/V10.5/instance/
ll
# 創建一個叫db2instl的實例 ./db2icrt -u db2fencl db2instl
驗證是否創建成功
# 切換用戶 su - db2instl # 啟動數據庫實例 db2start
# 查看當前實例下所存在的數據庫 db2 list db directory
# 連接到數據庫 db2 connect to wellsdb
# 查看當前數據庫下的表空間有哪些,可以看到,我的數據庫中有3個表空間,id 分別為 0,1,2 db2 list tablespaces
執行sql語句
db2 "create table user(id int,name varchar(10))"
db2 "insert into user values(1,'wells')"
db2 "insert into user values(2,'974')"
db2 "select id,name from user"
關閉數據庫
db2 terminate
db2stop
tip:
terminate 、db2stop、db2start三個命令的意義
db2 terminate
斷開當前與數據庫的連接
終止后台對應的db2bp進程
db2start/db2stop
啟動/停止數據庫服務器
客戶端連接配置:
db2set -all
如果沒有DB2COMM=TCPIP
則需要添加執行
db2set DB2COMM=TCPIP
然后確認執行 db2 get dbm cfg | grep "SVCENAME"
如果是上圖結果,則需要執行
db2 update database manager configuration using svcename db2c_db2instl
切換root用戶
vi /etc/services
增加:
db2c_db2instl 50000/tcp
db2c_db2instl 50000/udp
切換db2instl 用戶
重啟db2服務
db2stop force
db2start