项目中使用的数据库是DB2, 比较悲催的是它的连接速度, 有时候开发的时候连接太慢了。但是现在 IBM 推出了免费的 DB2 Express C 版本,我们在开发的过程中是可以自由使用的。
本文记录了我在 一台 64位 Linux 服务器上的安装 DB2 Express C 的过程。
1, 下载 首先先是得到 IBM 网站下载这个软件。 我所使用的是 DB2 Express 10.1 版本。因为我们的平台是 Linux x86_64 64 位, 所以就下了这个 db2_v101_linuxx64_expc.tar.gz。
2, 安装DB2
拷贝 这个文件到 argudev 机器得 /tmp 目录
# cd /tmp
# tar zxvf db2_v101_linuxx64_expc.tar.gz#cd expc
# ./db2_install
安装时若提示找不到libaio.so 及libstdc++.so,则先下载安装相应的软件包。
正常的话 等待 几分钟 你就可以看到
Successfully 的信息了
3, 配置DB2
#创建用户组及用户
groupadd -g 2000 db2iadm1
useradd -m -g db2iadm1 -d /home/db2inst1 db2inst1
passwd db2inst1
>db2inst1
这个时候我们创建了 db2iadm1 用户组 以及 一个 用户名和密码都是db2inst1 的用户。
#创建实例
/opt/ibm/db2/V10.1/instance/db2icrt -a server -u db2inst1 db2inst1
DBI1070I Program db2icrt completed successfully.
#产品许可证
/opt/ibm/db2/V10.1/adm/db2licm -a expc/db2/license/db2expc_uw.lic
LIC1402I License added successfully.
LIC1426I This product is now licensed for use as outlined in your License Agree
ment. USE OF THE PRODUCT CONSTITUTES ACCEPTANCE OF THE TERMS OF THE IBM LICENSE
AGREEMENT, LOCATED IN THE FOLLOWING DIRECTORY: "/opt/ibm/db2/V10.1/license/en_US
.iso88591"
#允许SMS的多页分配
/opt/ibm/db2/V10.1/cfg/db2ln
#添加DB2端口
在文件 /etc/services 加入下面一行
db2inst 50000/tcp
#DB2 配置
su - db2inst1
下面都是以 用户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=819
#Update dbm cfg
#TCP/IP Service name
$ db2 update dbm cfg using SVCENAME db2inst
DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.
$ db2 update dbm cfg using INDEXREC ACCESS
DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.
#运行DB2
必须先运行DB2才能创建数据库,否则报如下错误
SQL1032N No start database manager command was issued. SQLSTATE=57019
$ db2start
SQL1063N DB2START processing was successful.
#创建库
$ db2 "CREATE DATABASE DCDDB1 ALIAS DCDDB1 USING CODESET ISO8859-1 TERRITORY US"
DB20000I The CREATE DATABASE command completed successfully.
$ db2 connect to DCDDB1
Database Connection Information
SQL authorization ID = DB2INST1
Local database alias = DCDDB1
$ db2 "CREATE table mytable ( col1 INTEGER NOT NULL, col2 VARCHAR(40), col3 DECIMAL(9,2))"
DB20000I The SQL command completed successfully.
$ db2 "SELECT * FROM mytable FETCH FIRST 10 ROWS ONLY"
这样就成功了, 如果我们 telnet localhost 50000 发现 端口没有打开
我们需要通过 $db2stop force
来 停掉 db2 数据库 然后 db2start 重新开启db2。 本人安装的时候没有重启 instance , 困惑本机可以用db2 命令可以select, 但是远程就是连不上。
4, 客户端 连接 数据库
DataSource.driverClassName=com.ibm.db2.jcc.DB2Driver
DataSource.url=jdbc:db2://dbServer:50000/DCDDB1
DataSource.username=db2inst1
DataSource.password=db2inst1
DataSource.dialect=org.hibernate.dialect.DB2390Dialect