11.27 记DB2安装时遇到的坑
linux下DB2 v9.7的安装(命令行)
首先解压DB2:
tar -zxvf /*/*.tar.gz -C /*/dir
然后cd到解压目录/expc:
先运行./db2prereqcheck 之后再运行./db2_install(安装时需要使用root用户)
之后默认就好,提示信息输入“否/no”回车,默认安装路径/opt/ibm/db2/V9.7
默默等待安装完成...................................successful.............................................
(以下为root用户下:【$su】)
注册DB2:
/opt/ibm/db2/V9.7/adm/db2licm -a /*/license/db2expc_uw.lic
安装完之后要新建三个组:
groupadd -g 901 db2iadm1 //实例用户组(组名以及之后的用户名都是自定义的)
groupadd -g 902 db2fadm1//受防护用户组
groupadd -g 903 db2dadm1//DAS用户组
之后添加用户:
useradd -g db2iadm1 -u 101 -d /home/db2inst -m db2inst1 //拥有实例的用户,-g指定用户组;-u指定uid必须唯一不可为负数;-d用户文件目录;-m 如果用户文件目录不存在就创建
useradd -g db2fadm1 -u 101 -d /home/db2fenc -m db2fenc1 //受防护的用户
useradd -g db2dadm1 -u 101 -d /home/db2dasusr -m db2dasusr1 //DAS用户 (DAS:DB2 administration server)
之后指定用户密码:
passwd user_name
创建实例:
/opt/ibm/db2/V9.7/instance/dascrt -u db2dsusr1 //指定用户db2dsusr1为DAS管理用户,DB2 administration server 每个服务器只能有一个这种server,为进行DB2管理
/opt/ibm/db2/V9.7/instance/db2icrt -u db2fenc1 db2inst1 //db2icrt创建的是实例,[-u FencedID InstName]
(FencedID:指定创建的受防护用户的名称。 InstName:指定您创建的拥有实例的用户的名称。注意:实例的名称必须与拥有实例的用户的名称相同。)
/opt/ibm/db2/V9.7/instance/db2iauto -on db2inst1 设置实例db2inst1在linux启动时自启动
(切换到db2inst1用户下 【#su db2inst1】)
运行:
db2 update dbm cfg using SVCENAME 50658 //修改db2服务端口,默认状态为50000(未改)
db2set DB2COMM=TCPIP //设置db2连接方式为TCPIP然后就可通过jdbc\odbc访问db2服务器上的数据库
之后运行 db2stop 、db2start这两个命令重启db2服务。。。(一定要重启DB2....)
(临时开启端口://直到下次重启服务器之前均生效,此处为开启端口52452
iptables -I OUTPUT -p tcp --dport 52452 -j ACCEPT
iptables -I INPUT -p tcp --dport 52452 -j ACCEPT)
DB2的使用:
首先用之前创建的实例用户登录Linux
运行DB2实例:$db2start
查看实例中的全部数据库:$db2 list db directory
创建数据库:$db2 create database dbname
带用户名密码连接数据库:$db2 connect to <database> user <username> using <password>
修改数据库编码格式,设置语言
{db2 create database db_name [automatic storage yes] using codeset 编码格式 territory cn pagesize ***}
以下是一些导入导出数据时常用的命令用法:
导入/导出数据库:
db2move dbname import -u uer_name -p passwd
db2move dbname export -u uer_name -p passwd
导入导出单个ixf文件:
导出:db2 EXPORT TO <文件路径>/文件名.IXF OF IXF SELECT * FROM 表名
导入:db2 IMPORT FROM <路径>/<文件名>.IXF OF IXF MODIFIED BY FORCECREATE COMMITCOUNT 10000 REPLACE_CREATE INTO <表名>
db2 IMPORT FROM <路径>/<文件名>.IXF OF IXF messages msg2.txt INSERT INTO <表名>
导入的目标列指定为generated always 时
使用:load from ixf_dir/*.ixf of ixf modified by identityoverride insert into tab_name
注:使用insert into 在重复导入的时候不会考虑其他问题就会直接导入数据,因此重复导入会出现数据重复
而使用replace into 会先清空表中数据然后再插入
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面是使用DB2导入数据时遇到的一些问题:
连接遇到问题: Character conversion from the source code page "1386" to the target
code page "819" is not supported.
解决方法:
db2set db2codepage=1208
db2set db2country=86
db2 terminate
导入时遇到 A default table space could not be found with a page size of at
least "8192" that authorization ID "DB2IDEV1" is authorized to use.
解决方法:
db2 create bufferpool bufferpool_name pagesize 32k//创建缓冲池
db2 create tablespace tablespace_name pagesize 32k bufferpool bp32k//凭缓冲池创建表空间
db2 grant use of tablespace tablespace_name to user user_name //允许用户在表空间中建表
浙公网安备 33010602011771号