suse linux上安装DB2 数据库手记.docx
《suse linux上安装DB2 数据库手记.docx》由会员分享,可在线阅读,更多相关《suse linux上安装DB2 数据库手记.docx(10页珍藏版)》请在冰豆网上搜索。
suselinux上安装DB2数据库手记
suselinux上安装DB2数据库手记
因生产需要,在一台IBMX3850服务器上安装DB2数据库,下面是具体过程。
软硬件系统配置:
操作系统:
suseenterprise10linux(64bit)sp3
硬件配置:
32G内存
数据库软件:
DB2V9.7(64bit)
一、检查所需的环境和软件包
在suseLinux操作系统上安装DB2数据库之前,应确保系统满足必需的操作系统、硬件、软件和通信要求。
DB2数据库产品有若干不同版本。
某些DB2数据库产品和功能部件仅在特定操作系统上可用。
这个可参阅IBM官方网站来获取每个操作系统上可用的DB2数据库产品。
先用rpm-qa查找所需的软件包,没有的包可用yast2-i来安装。
linux-uu1q:
#rpm-qa|greplibaio
libaio-0.3.104-14.2
libaio-devel-0.3.104-14.2
linux-uu1q:
#rpm-qa|greplibstdc
libstdc++-devel-4.1.2_20070115-0.29.6
libstdc++-4.1.2_20070115-0.29.6
linux-uu1q:
#rpm-qa|grepnfs-utils
nfs-utils-1.0.7-36.36.47
linux-uu1q:
/home/server#rpm-qa|grepcompat-libstdc
compat-libstdc++-33-3.2.3-61
(检查是否有libstdc++.so.5
linux-uu1q:
/usr/lib64#ls-llibstdc++.so.*
lrwxrwxrwx1rootroot 18Feb2203:
34libstdc++.so.5->libstdc++.so.5.0.7
-rwxr-xr-x1rootroot825400Apr 9 2007libstdc++.so.5.0.7
lrwxrwxrwx1rootroot 18Feb2121:
57libstdc++.so.6->libstdc++.so.6.0.8
-rwxr-xr-x1rootroot969048Sep 5 2009libstdc++.so.6.0.8)
注意这个compat-libstdc++-33-3.2.3-61.x86_64.rpm的包在SUSELINUX10的光盘里并没有,需要自己下载并安装,另外如果没有安装这个包,则在安装DB2时会报找不到libstdc++.so.5的告警。
(对于DB2数据库服务器和客户机,libstdc++.so.5是必需的。
还有如果你在RHEL5或SLES10上使用g++4.1来编译C++应用程序,那么将生成下列警告:
libdb2.so所需要的libstdc++.so.5可能与libstdc++.so.6冲突)
修改系统核心参数
vi/etc/sysctl.conf
kernel.msgmni=16384
kernel.sem=250256000324096
#sysctl-p
#vi/etc/security/limits.conf
* softnofile10240
二、开始进行安装和配置
#tar -xvf DB2v9.7_linux64_server.tar
#cdserver
#./db2setup(或也可使用db2_install)
安装到默认路径/opt/ibm/db2/V9.7下面,安装类型选择ESE
最后一步一步安装下去,直至完成。
三、添加用户和组
#groupadd-g995db2grp
#useradd-u1000-d/home/db2inst1-gdb2grp-mdb2inst1
#groupadd-g996db2fgrp
#useradd-u1001-d/home/db2fenc1-gdb2fgrp -mdb2fenc1
#groupadd-g997db2asgrp #(安装DB2administrationserver的组)
#useradd-u1002-d/home/dasusr1 -gdb2asgrp -mdasusr1
(建立安装DB2administrationserver(DAS)的用户)
# passwddb2inst1
#passwddb2fenc1
#passwddasusr1
四、在安装目录中找到许可证文件:
db2ese.lic
检查license的内容
$db2licm-l
执行如下安装授权许可
#/opt/ibm/db2/V9.7/adm/db2licm -a /mnt/cdrom/db2/license/db2ese.lic
五、创建db2实例
#cd/opt/ibm/db2/v9.7
# ls-l
#cdinstance
#./db2icrt-sese-udb2fenc1db2inst1(建立数据库实例)
#./dascrt-udasusr1(建立das)
#cd/opt/ibm/db2/V9.7/cfg
#./db2ln(建立DB2文件的链接)
六、设定服务端口,配置数据库实例通信
以root用户
vi/etc/services
新增如下行
DB2_db2inst1 60000/tcp
DB2_db2inst1_1 60001/tcp
DB2_db2inst1_2 60002/tcp
DB2_db2inst1_END 60003/tcp
DB2c_db2inst1 60005/tcp
保存退出
七、启动实例
#su-db2inst1
$db2setDB2RSHCMD=/usr/bin/ssh
这里需要先设置DB2RSHCMD这个变量,再设置DB2COMM等变量
$db2setDB2COMM=tcpip(设置DB2的通信方式为tcpip)
$db2updatedbmcfgusingSVCENAMEdb2c_db2inst1(设置dbm参数SVCENAME为db2c_db2inst1 )
$db2setDB2AUTOSTART=YES(设置数据库自动启动)
然后通过DB2START命令启动当前实例
$db2start
02/22/201301:
40:
54 0 0 SQL1063N DB2STARTprocessingwassuccessful.
SQL1063N DB2STARTprocessingwassuccessful.
(创建数据库之前需要指定数据库存放目录并配置相应的权限
#mkdir-p/db2data/database
#chown-Rdb2inst1:
db2grp/db2data/database)
创建数据库
$db2"CREATEDATABASEtestdbon/db2data/databaseUSINGCODESETGBKTERRITORYCN"
$db2connecttotestdb
注意在连接数据库时,如果报下述错误
SQL0332N Characterconversionfromthesourcecodepage"1386"tothetarget
codepage"819"isnotsupported. SQLSTATE=57017
上边的错误则说明server端的字符集是1386的,而客户端的字符集是819(cn)的,db2不能server端1386的字符集转化为client端819的字符集。
解决这个问题的思想是将client端的字符集改为与server端兼容的
那么需要设置这个参数
db2inst1@linux-uu1q:
~>db2setdb2codepage=1386
然后退出当前db2inst1用户
db2inst1@linux-uu1q:
~>exit
logout
再切换回db2inst1用户,参数生效后就可以正常登录进来了。
linux-uu1q:
/#su-db2inst1
db2inst1@linux-uu1q:
~>db2connecttotestdb
DatabaseConnectionInformation
Databaseserver =DB2/LINUXX86649.7.6
SQLauthorizationID =DB2INST1
Localdatabasealias =TESTDB
为方便客户端连接数据库,还需设置
$db2updatedbmcfgusingsvcename60005 (如果netstat还看不到这个端口,需重启数据库)
$db2catalogtcpipnodenode_8remote192.168.0.8server60005(编目节点)
$db2catalogdbtestdb astestdb1 atnodenode_8(编目数据库在节点上)
(Db2connecttodbnameuserusernameusingpasswd#数据库链接
Db2uncatalogdbdbname;#反编目数据库
Db2uncatalognodenodename#反编目节点)
创建节点组
首先可以查询一下目前数据库环境中的partitiongroups有哪些,使用下面命令:
$db2listdatabasepartitiongroupsshowdetail
创建下面的partitiongroup
$db2"CREATEDATABASEPARTITIONGROUPdpgodsONDBPARTITIONNUMS(0)"
$db2"CREATEDATABASEPARTITIONGROUPdpgedwONDBPARTITIONNUMS(0)"
$db2"CREATEDATABASEPARTITIONGROUPdpgddwONDBPARTITIONNUMS(0)"
创建缓冲池
$db2connecttotestdb
$db2"ALTERBUFFERPOOLIBMDEFAULTBPSIZE2000"
$db2"CREATEBUFFERPOOLbp32kALLDBPARTITIONNUMSSIZE983040PAGESIZE32K"
创建表空间
$db2"CREATELARGETABLESPACEtbs32kdpgodsINDATABASEPARTITIONGROUPdpgodspagesize32kMANAGEDBYDATABASEUSING(file'/db2data/dpgtbs32k/dpgtbs32k.data'500M)ONDBPARTITIONNUM(0)bufferpoolbp32k"
$db2"CREATELARGETABLESPACEtbs32kdpgedwINDATABASEPARTITIONGROUPdpgedwpagesize32kMANAGEDBYDATABASEUSING(file'/db2data/edw/dpgtbs32k/dpgtbs32k.data'500M)ONDBPARTITIONNUM(0)bufferpoolbp32k"
$db2"CREATELARGETABLESPACEtbs32kdpgddwINDATABASEPARTITIONGROUPdpgddwpagesize32kMANAGEDBYDATABASEUSING(file'/db2data/ddw/dpgtbs32k/dpgtbs32k.data'500M)ONDBPARTITIONNUM
(2)bufferpoolbp32k"
$db2"CREATELARGETABLESPACEidx32kdpgodsINDATABASEPARTITIONGROUPdpgodspagesize32kMANAGEDBYDATABASEUSING(file'/db2data/dpgidx32k/dpgidx32k.data'100M)ONDBPARTITIONNUM(0)bufferpoolbp32k"
$db2"CREATELARGETABLESPACEidx32kdpgedwINDATABASEPARTITIONGROUPdpgedwpagesize32kMANAGEDBYDATABASEUSING(file'/db2data/edw/dpgidx32k/dpgidx32k.data'100M)ONDBPARTITIONNUM(0)bufferpoolbp32k"
$db2"CREATELARGETABLESPACEidx32kdpgddwINDATABASEPARTITIONGROUPdpgddwpagesize32kMANAGEDBYDATABASEUSING(file'/db2data/ddw/dpgidx32k/dpgidx32k.data'100M)ONDBPARTITIONNUM
(2)bufferpoolbp32k"
将下面语句复制到文件中,然后db2-tvfcrt_tbs.sql执行这个脚本
CREATELARGETABLESPACEtbs32kodsINDATABASEPARTITIONGROUPIBMDEFAULTGROUPpagesize32kMANAGEDBYDATABASE
USING(file'/db2data/ods/tbs32k/tbs32k_0.data'1000M)ONDBPARTITIONNUM(0)
USING(file'/db2data/ods/tbs32k/tbs32k_1.data'1000M)ONDBPARTITIONNUM
(1)
USING(file'/db2data/ods/tbs32k/tbs32k_2.data'1000M)ONDBPARTITIONNUM
(2)
USING(file'/db2data/ods/tbs32k/tbs32k_3.data'1000M)ONDBPARTITIONNUM(3)
autoresizeyes bufferpoolbp32k;
CREATELARGETABLESPACEtbs32kedwINDATABASEPARTITIONGROUPIBMDEFAULTGROUPpagesize32kMANAGEDBYDATABASE
USING(file'/db2data/edw/tbs32k/tbs32k_0.data'1000M)ONDBPARTITIONNUM(0)
USING(file'/db2data/edw/tbs32k/tbs32k_1.data'1000M)ONDBPARTITIONNUM
(1)
USING(file'/db2data/edw/tbs32k/tbs32k_2.data'1000M)ONDBPARTITIONNUM
(2)
USING(file'/db2data/edw/tbs32k/tbs32k_3.data'1000M)ONDBPARTITIONNUM(3)
autoresizeyes bufferpoolbp32k;
CREATELARGETABLESPACEtbs32kddwINDATABASEPARTITIONGROUPIBMDEFAULTGROUPpagesize32kMANAGEDBYDATABASE
USING(file'/db2data/ddw/tbs32k/tbs32k_0.data'1000M)ONDBPARTITIONNUM(0)
USING(file'/db2data/ddw/tbs32k/tbs32k_1.data'1000M)ONDBPARTITIONNUM
(1)
USING(file'/db2data/ddw/tbs32k/tbs32k_2.data'1000M)ONDBPARTITIONNUM
(2)
USING(file'/db2data/ddw/tbs32k/tbs32k_3.data'1000M)ONDBPARTITIONNUM(3)
autoresizeyes bufferpoolbp32k;
CREATELARGETABLESPACEidx32kodsINDATABASEPARTITIONGROUPIBMDEFAULTGROUPpagesize32kMANAGEDBYDATABASE
USING(file'/db2data/ods/idx32k/idx32k_0.data'100M)ONDBPARTITIONNUM(0)
USING(file'/db2data/ods/idx32k/idx32k_1.data'100M)ONDBPARTITIONNUM
(1)
USING(file'/db2data/ods/idx32k/idx32k_2.data'100M)ONDBPARTITIONNUM
(2)
USING(file'/db2data/ods/idx32k/idx32k_3.data'100M)ONDBPARTITIONNUM(3)
autoresizeyes bufferpoolbp32k;
CREATELARGETABLESPACEidx32kedwINDATABASEPARTITIONGROUPIBMDEFAULTGROUPpagesize32kMANAGEDBYDATABASE
USING(file'/db2data/edw/idx32k/idx32k_0.data'100M)ONDBPARTITIONNUM(0)
USING(file'/db2data/edw/idx32k/idx32k_1.data'100M)ONDBPARTITIONNUM
(1)
USING(file'/db2data/edw/idx32k/idx32k_2.data'100M)ONDBPARTITIONNUM
(2)
USING(file'/db2data/edw/idx32k/idx32k_3.data'100M)ONDBPARTITIONNUM(3)
autoresizeyes bufferpoolbp32k;
CREATELARGETABLESPACEidx32kddwINDATABASEPARTITIONGROUPIBMDEFAULTGROUPpagesize32kMANAGEDBYDATABASE
USING(file'/db2data/ddw/idx32k/idx32k_0.data'100M)ONDBPARTITIONNUM(0)
USING(file'/db2data/ddw/idx32k/idx32k_1.data'100M)ONDBPARTITIONNUM
(1)
USING(file'/db2data/ddw/idx32k/idx32k_2.data'100M)ONDBPARTITIONNUM
(2)
USING(file'/db2data/ddw/idx32k/idx32k_3.data'100M)ONDBPARTITIONNUM(3)
autoresizeyes bufferpoolbp32k;
CREATESYSTEMTEMPORARYTABLESPACEtmp32k
PAGESIZE32k
MANAGEDBYSYSTEM
USING('/db2data/database/db2inst1/NODE0000/SQL00001/systmptbs_32k')ONDBPARTITIONNUM(0)
USING('/db2data/database/db2inst1/NODE0001/SQL00001/systmptbs_32k')ONDBPARTITIONNUM
(1)
USING('/db2data/database/db2inst1/NODE0002/SQL00001/systmptbs_32k')ONDBPARTITIONNUM
(2)
USING('/db2data/database/db2inst1/NODE0003/SQL00001/systmptbs_32k')ONDBPARTITIONNUM(3)
BUFFERPOOLbp32k;
CREATEUSERTEMPORARYTABLESPACEusrtmp32k
PAGESIZE32k
MANAGEDBYDATABASE
USING(FILE'/db2data/database/db2inst1/NODE0000/SQL00001/usrtmptbs_32k/tbs32k_0.data'100M)ONDBPARTITIONNUM(0)
USING(FILE'/db2data/database/db2inst1/NODE0001/SQL00001/usrtmptbs_32k/tbs32k_1.data'100M)ONDBPARTITIONNUM
(1)
USING(FILE'/db2data/database/db2inst1/NODE0002/SQL00001/usrtmptbs_32k/tbs32k_2.data'100M)ONDBPARTITIONNUM
(2)
USING(FILE'/db2data/database/db2inst1/NODE0003/SQL00001/usrtmptbs_32k/tbs32k_3.data'100M)ONDBPARTITIONNUM(3)
bufferpoolbp32k;
九、配置数据库和实例的相关参数:
#su-db2inst1
$db2_all"db2updatedbcfgfortestdbusingLOGPRIMARY16"
$db2