Docker - 通过容器安装部署DB2数据库教程

我之前写过文件介绍如何使用 DB2 官方的安装程序进行 DB2 数据库的安装(点击查看)。本文介绍另一种方式:通过 Docker 来快速搭建 DB2 数据库环境,使用这种方式可以免去很多安装配置上的麻烦,方便快捷。

1,拉取镜像

(1)首先执行如下命令将镜像下载到本地:

1

docker pull ibmcom/db2


(2)由于镜像比较大(2.69G),执行如下命令删除所有 dangling 数据卷(即无用的 Volume),避免空间不足:

1

docker volume rm $(docker volume ls -qf dangling=true)

2,启动容器 

(1)执行如下命令实例化 DB2 服务:参数说明:

  • -d: 表示在后台启动容器;
  • -p 50000:50000: 容器内部的 50000 端口映射主机的 50000 端口;
  • --name db2:将容器命名为 db2
  • --privileged=true:使得容器内的 root 拥有真正的 root 权限。
  • -e DB2INST1_PASSWORD=marco-1234:设置内置实例用户 db2inst1 的密码为 marco-1234
  • -e DBNAME=testdb:容器启动时自动创建一个名为 testdb 的数据库,如果不指定该参数则不创建数据库
  • -e LICENSE=accept:接受协议
  • -v /usr/local/db2:/database:挂载目录,其中 /usr/local/db2 是宿主机的目录

1

docker run -d -p 50000:50000 --name db2 --privileged=true -e DB2INST1_PASSWORD=marco-1234 -e DBNAME=testdb -e LICENSE=accept -v /usr/local/db2:/database ibmcom/db2


(2)执行 docker ps 命令确认容器启动成功。

原文:Docker - 通过容器安装部署DB2数据库教程

3,执行命令

(1)首先执行如下命令进入 DB2 实例的命令环境中:

1

docker exec -it db2 /bin/bash


(2)执行如下命令切换到实例用户 db2inst1:

注意:一定要写中间的那个横条(-)。

1

su - db2inst1


(3)执行如下命令可以查看运行状态:

1

db2pd -

原文:Docker - 通过容器安装部署DB2数据库教程

(4)执行如下命令可以查看数据库和补丁版本:

1

db2level

原文:Docker - 通过容器安装部署DB2数据库教程

(5)执行如下命令可以查看已经创建的数据库,可以发现根据启动时的配置参数,目前创建一个 testdb 数据库:

1

db2 list db directory

原文:Docker - 通过容器安装部署DB2数据库教程

(6)执行如下命令连接 testdb 数据库:

1

db2 connect to testdb


(7)然后执行如下命令创建一个名为 TEST 的表:

注意:db2 命令后面的sql语句需要用引号括起来,否中会报 -bash: syntax error near unexpected token `(' 错误。

1

db2 "create table TEST(ID BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1,INCREMENT BY 1),USER_NAME VARCHAR(20),USER_AGES INT)"


(8)执行如下命令可以查看所以用户表,可以发现 TEST 表创建成功:

1

db2 list tables

原文:Docker - 通过容器安装部署DB2数据库教程


(9)我们还可以执行如下命令再创建一个 SAMPLE 数据库(样例数据库)

1

db2sampl (命令行直接运行)


(10)接着再次执行 db2 list dbdirectory 命令可以看到数据库创建成功:

原文:Docker - 通过容器安装部署DB2数据库教程

(11)最后执行 exit 即可退出容器,返回到宿主机。


 

4,执行命令

DB2数据库常用命令学习

db2start : 启动数据库实例
db2stop force : 停止数据库实例
db2pd - : 查看数据库运行状态
db2level查看数据库和补丁版本
db2ilist: 查看数据库已经安装的实例
db2 list db directory 查看当前实例下有哪些数据库
db2 connect to testdb:  连接到数据库实例testdb
db2 get instance :  显示当前数据库管理实例
db2 select current schema from sysibm.sysdummy1 – 查看当前数据库默认的schema
db2 SELECT CURRENT USER FROM SYSIBM.SYSDUMMY1 – 查看当前数据库默认的user
db2 list tables 列出数据库中的表(需要先连接数据库)
db2 describe table TABLENAME(表名) 查看表的信息
db2 list tables for all – 列出当前数据库下所有的表
db2 list tablespaces show detail – 显示数据库空间使用情况
db2 get db cfg :显示库实例的配置
db2 get db cfg for testdb : 显示testdb数据库配置
db2 list applications show detail 查看数据库连接详细信息
db2 list active databases 列出当前实例中正在使用的数据库
DB2DIR/instance/db2icrt -u FencedID instName : Linux上创建DB2实例
db2 attach to INSTName : 连接DB2实例
db2 detach : 断开DB2 实例
db2 get dbm cfg :查看DB2数据库实例
db2 update dbm cfg using 参数名 参数值
db2 reset dbm cfg : 复位实例参数为默认值
1、db2 connect to <数据库名>    --连接到 本地 数据库名
      db2 connect to <数据库名> user <用户名> using <密码> --连接到 远端 数据库
2、 db2 force application all      --强迫所有应用断开数据库连接
3、db2 backup db db2name<数据库名称>  --备份整个数据库数据
      db2 restore db <db2name>                     --还原数据库
4、 db2 list application --查看所有连接(需要连接到具体数据库才能查看)
5、db2stop    --停止数据库  
      db2start    --启动数据库
6、create database <数据库名> using codeset utf-8 territory CN    --创建数据库使用utf-8编码
7、db2 catalog 命令
    db2 catalog tcpip node <接点名称> remote <远程数据库地址> server <端口号>  --把远程数据库映射到本地接点一般为50000
    db2 catalog db <远程数据库名称> as <接点名称>  at node PUB11                       --远程数据库名称到本地接点
    db2 CONNECT TO <接点名称> user <用户名> using <密码>                               --连接本地接点访问远程数据库
8、数据库导出
db2look -d <数据库名> -u <用户> -e -o <脚本名称>.sql        --导出数据库的表结构,其中用户空间一般为
db2admin/db2inst2
db2look -d <数据库名> -u <用户> -t <表1> <表2>  -e -o <脚本名称>.sql   --导出数据库中表1和表2的表结构
db2move <数据库名> export              --导出数据库数据
db2move <数据库名> export -tn <表1>,<表2>       --导出数据库中表和表数据
9、数据库导入
db2 -tvf  <脚本名称>.sql       --把上述导出的表结构导入到数据库表结构
db2move <数据库名> load -lo replace   --把上述“db2move <数据库名> export “导出的数据导入到数据库中并把相同的数据替换掉
在实际使用过程中,如果用到db2自增主键,需要使用by default, 而不是always,功能是一样的,但这样在数据移植时候会很方便!
10、db2 connect reset 或 db2 terminate    --断开与数据库的连接
11、db2set db2codepage=1208        --修改页编码为1208
12、db2 describe table <表名>       --查看表结构
13、db2 list tables                            --查看数据库中所有表结构
        db2 list tables for system                  --列出所有系统表
14、db2 list tablespaces                  --列出表空间

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐