db2安装、数据库导入导出、字符集设置、日志容量设置

一 安装步骤

Linux版本下的DB2数据库采用的官方版本

操作系统:CentOS7

数据库:db2_v101_linuxx64_expc.tar.gz(EXPRESS-C)

编码:db2的编码采用GBK(设置过程请注意)

 1、下载安装包

下载db2_v101_linuxx64_expc.tar.gz(文件夹准备的有)

下载教程 https://blog.csdn.net/gsls200808/article/details/46455821

 2、

解压完成后会在当前目录下有一个 ./expc 文件夹

 

[root@localhost tmp]# tar -zxvf db2_v101_linuxx64_expc.tar.gz

 

 3、进入目录

[root@localhost tmp]# cd expc/

 

4、执行安装

[root@localhost expc]# ./db2_install

 

5、添加组和用户

组(用户名)
db2iadm1(db2inst1)
db2fadm1( db2fenc1)

[root@localhost expc]# groupadd -g 2000 db2iadm1

[root@localhost expc]# groupadd -g 2001 db2fadm1

[root@localhost expc]# useradd -m -g db2iadm1 -d /home/db2inst1 db2inst1

[root@localhost expc]# useradd -m -g db2fadm1 -d /home/db2fenc1 db2fenc1

[root@localhost expc]# passwd db2inst1

[root@localhost expc]# passwd db2fenc1

 

6、安装 license(产品许可证) 

PS:如果是ExpressC版本就不用做

[root@localhost adm]# pwd

/opt/ibm/db2/v101/adm

[root@localhost adm]# chmod -R 775 *

[db2inst1@localhost adm]$ ./db2licm -a /tmp/seagull/db2v10/license/db2ese_c.lic

 

7、创建实例和样本数据库

[root@localhost instance]# pwd

/opt/ibm/db2/v101/instance

[root@localhost instance]# chmod -R 775 *

[root@localhost instance]# ./db2icrt -p 50000 -u db2fenc1 db2inst1

[root@localhost instance]# su - db2inst1

[db2inst1@localhost ~]$ db2sampl

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"...'db2sampl' processing complete.

[db2inst1@localhost ~]$ db2start

SQL1026N The database manager is already active.

[db2inst1@localhost ~]$ db2 connect to sample

Database Connection Information

Database server = DB2/LINUX 10.1.2

SQL authorization ID = DB2INST1

Local database alias = SAMPLE

[db2inst1@localhost ~]$ db2 "select * from staff"

 

8、创建 das 管理服务器

为了远程客户端能够用控制中心来控制数据库服务器,需要在数据库服务器上安装 das,当然,如果只是远程连接而不是远程管理,可以不用装,这里我安装了一下。

[root@localhost expc]# groupadd -g 2002 db2asgrp

[root@localhost expc]# useradd -m -g db2asgrp -d /home/db2as db2as

[root@localhost expc]# passwd db2as

[db2as@localhost ~]$ su - db2as # 这里测试新建用户

[db2as@localhost ~]$ su # 这里进入root权限

[root@localhost ~]# cd /opt/ibm/db2/v101/instance/

[root@localhost instance]# ./dascrt -u db2as

DBI1070I Program dascrt completed successfully.

[root@localhost instance]# su - db2as

[db2as@localhost ~]$ db2admin start

SQL4409W The DB2 Administration Server is already active.

 

9、设置端口号

(a)vim /etc/services

 

在最后增加一行 # PS:VIM快捷键,在命令模式下输入“G”跳刀最后一行。

db2_server30 50000/tcp

 

(b)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=*

#设置语言的编码格式为gbk(涉及导入导出的问题)

db2set db2codepage=1386(简体中文)

db2set db2country=86(中国)

# PS:这个地方比较重要
# db2 update database manager configuration using svcename db2_server30

(c)设置后查看

db2set -all

 

 

10、修改SVCENAME

将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) = db2_server30

SSL service name (SSL_SVCENAME) =

 

# PS:svcename 在客户端连接时需要用到

11、关闭防火墙

在启动DB2之前需要先关闭防火墙,不然的话根本就不能连接,在root用户下执行:service iptables stop/systemctl stop iptables(根据自己的系统自行查找)

12、开启关闭db2

开启DB2,执行:db2start ,如果已经开启状态,那就先停止,执行:db2stop 。

PS:重启机器后遇到了一个问题,就是关闭防火墙无反应,开启关闭数据库无反应,远程不能连接到数据库,解决办法是重启了服务器,然后按照顺序关闭了防火墙,然后重启了DB2数据库

13、安装tooldb

创建toolsbd数据库

db2 create tools catalog systools create new database toolsdb

 

14、小结

按照以上步骤,最后的成功效果就是可以实现su db2inst1用户登录

 

二 操作db2

1、建库前准备

通过db2set -all 查看所有的设置,查看编码是否为gbk

2、新建库

cd /opt/ibm/db2/v101/instance/

 

db2 create db zx using codeset gbk territory CN collate using identity

注:

   zx 为库名

   gbk 为编码格式

 

3、修改参数

建库的时候参数指定就够了。建好数据库后,可以通过

db2 get db cfg for <db_name>

 

来得到数据库的参数,通过

db2 update db cfg for <db_name> using 参数项修改值

来去更改你想设置的参数

 

4、db2数据库相关操作

(a)查看库信息

db2 get db cfg

 

(b)查看数据库列表

db2 list db directory

 

(c)查看当前运行的实例

db2ilist

 

(d)删除数据库

需要先drop

db2 drop db zx

 

然后取消节点

db2 uncatalog database 数据库

 

(e)查看正在运行的数据库

db2 list active databases

(f)连接重置

db2 connect reset

 

(g)断开当前连接

db2 disconnect current

 

(h)连接数据库

db2 connect to 数据库名称 user 用户名 using 密码

其实直接使用下面的也行

db2 connect to 数据库

6、数据库的导入和导出

   (a)导出

db2 connect to zx

 

导出表结构

db2look -d zx -e -a -x -i db2inst1 -w db2inst1 -o /tmp/createdb.sql

 

导出操作

切换目录到/tmp/export_data(这个可能要新建)

db2move zx export

 

(b)导入

db2 connect to 库名 user 用户名 using 密码

 

切换至目录/tmp/

db2 -tvf createdb.sql

 

切换数据目录/tmp/export_data

db2move 库名 import

7、表的操作

(这个注意修改数据库和用户名密码)

(a)列出库中所有的表

list tables  --查看所有的表

(b)备份表结构

 

db2look -d dbname -e -a -x -i db2admin -w db2admin -o d:\createdb.sql

 

(c)导出数据

(进入到指定目录后执行)

 

db2move dbname export -u db2admin -p db2admin

 

(d)导入表结构

 

db2 -tvf createdb.sql

 

(e)导入数据

(进入到指定目录后执行)

 

db2move dbname import -u db2admin -p db2admin

 

 

8、查询表数据

db2 "select * from JBPM_LOG limit 1"

 

三 查看数据库的容量大小,方便导出

db2 "call get_dbsize_info(?,?,?,-1)"

 

四 一些重要的报错信息

1、报错信息

解决

db2 CREATE BUFFERPOOL buf1 IMMEDIATE  SIZE 250 NUMBLOCKPAGES 108 BLOCKSIZE 32 PAGESIZE 32K

db2 update db cfg for DATABASE using LOGFILSIZ 7900

db2 update db cfg for DATABASE using LOGPRIMARY 30

db2 update db cfg for DATABASE using LOGSECOND 20

 

 

2、日志空间不足报错 

 ****************关键点******************  https://yq.aliyun.com/articles/133865

A table space could not be found with a page size of at least "8192"

that authorization ID "DB2INST1" is authorized to use

 

解决方法

解决方式其实是很简单的,在这个database里新创建一个满足要求的表空间就够了,不过这里需要注意的是,buffer pool和表空间的pagesize大小需要对应。

 

#创建pagesize为32K的bufferpool

db2 => create BUFFERPOOL bigbuffer SIZE 5000 PAGESIZE 32K

DB20000I  The SQL command completed successfully.

 

#创建pagesize为32K的tablespace,同时使用新创建的bufferpool

db2 => CREATE TABLESPACE bigtablespace PAGESIZE 32K BUFFERPOOL bigbuffer

DB20000I  The SQL command completed successfully.

 

3、日志空间太小

日志太小可能导致某一个大表导入不成功

后来在实际的使用过程中遇到过几次问题,现在做一下总结,以后大家遇到也有解决办法了。

 

a、load 的时候可能会由于 log 满的问题,造成记录数过大的时候无法导入,这时这张表的访问可能如下:

 

D:Work>db2 select * from sales

SQL0668N Operation not allowed for reason code "3" on table "YASIR.SALES".

SQLSTATE=57016

 

可使用类似

下面的命令把日志文件的大小和日志文件的数量扩充,如下:

db2 update db cfg for DATABASE using LOGFILSIZ 7900

db2 update db cfg for DATABASE using LOGPRIMARY 30

db2 update db cfg for DATABASE using LOGSECOND 20

 

然后再用类似

DB2 "LOAD FROM EXPORTED_DATA.IXF OF IXF SAVECOUNT 20000 RESTART INTO YASIR.SALES"

重新导入该表

 

b、如果 db2move dbname load 需要执行第二次的时候,可以使用 db2move dbname load -lo REPLACE 来replace 上次导入的记录,否则有些没有主键的表可能会出现重复记录

 

c、如果在导出的时候出现类似下面的提示

SQL3132W The character data in column "PRIORITY" will be truncated to size "64".

是因为 codepage 的问题,通过 db2set 设置 db2codepage 和数据库一致,然后重启 instance 就可以了导出了

 

日志相关

日志查询

db2diag -time 2019-04-18 -level error,severe

 

1、报错信息

FUNCTION: DB2 UDB, data protection services, sqlpgResSpace, probe:2860

MESSAGE : ADM1823E  The active log is full and is held by application handle

          "0-14822".  Terminate this application by COMMIT, ROLLBACK or FORCE

          APPLICATION.

事务日志满解决办法:

操作日志空间大小

增大日志文件大小:

db2 update db cfg for mid using LOGFILSIZ 8192

或者增大主日志文件个数:

db2 update db cfg for mid using LOGPRIMARY 15

或者增大辅助日志文件个数:

db2 update db cfg for mid using LOGSECOND 10 

2、关闭应用

停掉引起这个错误的应用程序或者停掉所有的应用程序,再重启数据库

db2 force applications all

db2 force application (应用程序句柄 通过db2 list applications获取)

db2stop

db2start

 

 

3、日志文件过大的解决方法

在数据库运行过程中,会产生很多的日志,进而使日志文件db2diag.log变大

当占用磁盘空间太大的时候,应该怎么处理呢?

 

方法一:

db2inst1@Linux:/db2home/db2inst1/sqllib/db2dump> db2diag -A /qinys/data

db2diag: Moving "/db2home/db2inst1/sqllib/db2dump/db2diag.log"

          to     "/qinys/data/db2diag.log_2019-01-17-11.55.34"

 

系统会自动将文件db2diag.log移走,并将备份的文件添加上当前的日期时间信息

执行这条命令的前提示:用户db2inst1必须对文件夹/data有写权限

 

方法二:

停止数据库,然后将文件db2diag.log移走,接着重新启动数据库,会在原路径下重新生成文件db2diag.log

 

-->特别注意:

3.0系统的setListView视图需要根据导出的表结构生成,然后自动查询就得出了,导出库时不生效

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值