一、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
努力让自己变得不那么low