Linux下安装DB2数据库
Centos安装DB2数据库
本教程讲解DB2数据库在inux下的安装步骤。
安装前请查看 DB2版本和许可证 说明来增加了解,先弄明白改安装什么版本,这里我用的是Express-C版本,这个版本是提供给个人学习用的免费版本。
Linux版本下的DB2数据库采用的官方免费版本db2_v11.5,操作系统用的CentOS7。
安装过程:
1、下载:v11.5_linuxx64_dec.tar.gz,并放在centos的/root/目录下。
下载地址:
通过网盘分享的文件:
链接: https://pan.baidu.com/s/12nbnZfgboPC-pDAGuyjVkw 提取码: 6j41
2、解压,解压完成后会在当前目录下有一个 ./server_dec 文件夹
[root@localhost ~]# tar -zxvf v11.5_linuxx64_dec.tar.gz
3、进入这个目录
[root@localhost ~]# cd server_dec/
### DB2数据库安装前用于检查系统是否满足安装要求,检查系统是否缺少依赖库,
./db2prereqcheck
### 若缺少,可通过 yum 安装,
• 针对 libstdc++32位库: sudo yum install libstdc++.i686
• 针对 libpam32位库: sudo yum install pam.i686
• 批量安装:sudo yum install glibc* libstdc*
4、执行安装
[root@localhost server_dec]# ./db2_install
### 本机的安装日志 /tmp/db2_install.log.61309
5、安装 license(产品许可证) PS:如果是ExpressC版本就不用做
[root@localhost adm]# cd /opt/ibm/db2/V11.5/adm/
[root@localhost adm]# chmod -R 775 *
[root@localhost adm]# ./db2licm -a /root/server_dec/db2/license/db2expc_uw.lic
5.1 查看db2许可证
./db2licm -l
6、创建组和用户:
组(用户名)
db2iadm1(db2inst1) - 实例用户
db2fadm1(db2fenc1) - 受防护的用户
[root@localhost server_dec]# pwd
/root/server_dec
[root@localhost server_dec]# groupadd -g 2000 db2iadm1
[root@localhost server_dec]# groupadd -g 2001 db2fadm1
[root@localhost server_dec]# useradd -g db2iadm1 -m -d /home/db2inst1 db2inst1
[root@localhost server_dec]# useradd -g db2fadm1 -m -d /home/db2fenc1 db2fenc1
[root@localhost server_dec]# passwd db2inst1
[root@localhost server_dec]# passwd db2fenc1
这里我创建的用户名/密码分别是:db2inst1/db2inst1, db2fenc1/db2fenc1
7、创建DB2数据库实例、DB2防护用户(这2个用户必须创建)
在DB2中,实例名必须与一个已有的操作系统用户名相同
[root@localhost instance]# pwd
/opt/ibm/db2/V11.5/instance
[root@localhost instance]# chmod -R 775 *
[root@localhost instance]# ./db2icrt -p 50000 -u db2fenc1 db2inst1
8、创建样本数据库
[root@localhost instance]# su - db2inst1
[db2inst1@localhost ~]$ db2sampl
Starting the DB2 instance...
Creating database "SAMPLE"...
Connecting to database "SAMPLE"...
Creating tables and data in schema "DB2INST1"...
Creating tables with XML columns and XML data in schema "DB2INST1"...
Stopping the DB2 instance...
'db2sampl' processing complete.
[db2inst1@localhost ~]$
[db2inst1@localhost ~]$ db2start
SQL1026N The database manager is already active.
[db2inst1@localhost ~]$
[db2inst1@localhost ~]$ db2 connect to sample
Database Connection Information
Database server = DB2/LINUXX8664 11.5.0.0
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
[db2inst1@localhost ~]$ db2 "select * from staff"
8.1、创建 DAS 管理服务器(此功能在 DB2-9.7以后的版本中已淘汰,所以这里无需操作)
为了远程客户端能够用控制中心来控制数据库服务器,需要在数据库服务器上安装 DAS,当然,如果只是远程连接而不是远程管理,可以不用装,这里我安装了一下。
[root@localhost server_dec]# groupadd -g 2002 dasadm1
[root@localhost server_dec]# useradd -g dasadm1 -m -d /home/dasusr1 dasusr1
[root@localhost server_dec]# passwd dasusr1
[dasusr1@localhost ~]$ su - dasusr1 # 这里测试新建用户
[dasusr1@localhost ~]$ su # 这里进入root权限
[root@localhost ~]# cd /opt/ibm/db2/V9.7/instance/
[root@localhost instance]# ./dascrt -u dasusr1
DBI1070I Program dascrt completed successfully.
[root@localhost instance]# su - dasusr1
[dasusr1@localhost ~]$ db2admin start
SQL4409W The DB2 Administration Server is already active.
这里我创建的用户名/密码分别是:dasusr1/dasusr1
9、设置端口号
vim /etc/services
在最后增加一行(如果已经存在无需添加) # PS:VIM快捷键,在命令模式下输入“G”跳刀最后一行。
db2c_db2inst1 50000/tcp
10、db2 配置,要切换到用户 db2inst1
su - db2inst1
db2set DB2_EXTENDED_OPTIMIZATION=ON
db2set DB2_DISABLE_FLUSH_LOG=ON
db2set AUTOSTART=YES
db2set DB2_STRIPED_CONTAINERS=ON
db2set DB2_HASH_JOIN=Y
db2set DB2COMM=tcpip
db2set DB2_PARALLEL_IO=*
db2set DB2CODEPAGE=1386 # PS:设置数据库客户端环境的代码页为GBK编码(与DB2数据库的代码页保持一致). 另外db2数据库,系统centos,xhell 三个字符集要一致
# db2 update database manager configuration using svcename db2inst1
查看配置
db2set -all
11.是否将SVCENAME设置成/etc/services中的端口号或者服务名
[db2inst1@localhost ~]$ db2 get dbm cfg|grep SVCENAME
TCP/IP Service name (SVCENAME) =
SSL service name (SSL_SVCENAME) =
找到SVCENAME,如果当前值不是服务器端的端口号或者服务名,进行更新设置。
[db2inst1@localhost ~]$ db2 update dbm cfg using SVCENAME db2inst1
# db2 update dbm cfg using INDEXREC ACCESS
[db2inst1@localhost ~]$ db2 get dbm cfg|grep SVCENAME
TCP/IP Service name (SVCENAME) = 50000
SSL service name (SSL_SVCENAME) =
# PS:svcename 在客户端连接时需要用到
12.在启动DB2之前需要先关闭防火墙,不然的话根本就不能连接,
在root用户下执行:systemctl stop firewalld.service
[root@localhost ~]# systemctl stop firewalld.service
关于防火墙的常用命令如下
systemctl status firewalld #检查防火墙状态
systemctl stop firewalld.service #临时关闭防火墙
systemctl disable firewalld.service #开机禁用防火墙
13.开启DB2数据库,执行:db2start
[db2inst1@localhost ~]$ db2start
14.创建数据库并设置字符集
# 需要在实例用户下操作,切换到实例用户(如果已经是实例用户,无需切换)
su - db2inst1
#创建一个名称是testdb的数据库,
# USING CODESET GBK TERRITORY CN 使用GBK编码(数据库代码页为GBK)和中国区域
# COLLATE USING SYSTEM 指定数据库使用操作系统的默认排序规则进行字符串比较和排序
# PAGESIZE 32768 设置数据库数据页的大小为 32KB(32768 字节)
[db2inst1@localhost ~]$ db2 "CREATE DATABASE testdb AUTOMATIC STORAGE YES ON '/home/db2inst1' DBPATH ON '/home/db2inst1' USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM PAGESIZE 32768"
15.授予newuser用户数据库管理员权限(前提是linux系统上已经有newuser用户,本系统上newuser用户的密码是newuser)
# 连接testdb数据库
[db2inst1@localhost ~]$ db2 connect to testdb
授予newuser用户数据库管理员权限
[db2inst1@localhost ~]$ db2 grant dbadm on database to user newuser
16.用newuser用户连接testdb数据库
[db2inst1@localhost ~]$ db2 connect to testdb user newuser using newuser
17.在newuser用户下建表、插入表、查询表
# 创建表employees
[db2inst1@localhost ~]$ db2 "CREATE TABLE employees(id int, name VARCHAR(30))"
# 插入表employees数据
[db2inst1@localhost ~]$ db2 "INSERT INTO employees (id, name) VALUES (1, '张三'),(2, '李四'),(3, '王五'),(4, '赵六')"
# 查询表employees
[db2inst1@localhost ~]$ db2 "select * from employees"
到此,数据库已经安装完成。
Note: db2数据库安装目录为
/opt/ibm/db2/v11.5
db2的一些常用命令:
# 列出当前实例下所有活动的数据库
db2 list active databases
# 列出所有当前应用程序的连接信息
db2 list applications
断开数据库连接
db2 connect reset
停用活动数据库
在断开所有连接后,如果数据库仍处于活动状态(例如,之前被显式激活),我们需要停用它
db2 deactivate database <数据库名>
停止数据库
db2stop
启动数据库
db2start
18.在linux的newuser用户下连接数据库
1. 切换到root用户,将newuser用户加入到实例用户(db2inst1)所在的组db2iadm1
su - root
[root@localhost ~]# usermod -a -G db2iadm1 newuser
2. 在newuser用户下的.bashrc文件里最后一行添加source /home/db2inst1/sqllib/db2profile,添加完之后需要重新登录newuser用户
[newuser@localhost ~]$ cd /home/newuser
vi .bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific environment
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
then
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
source /home/db2inst1/sqllib/db2profile
3.重新登录newuser用户,即可连接数据库
[newuser@localhost ~]$ db2 connect to testdb user newuser using newuser
#查询数据
[newuser@localhost ~]$ db2 "select * from employees"
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)