db2数据库学习笔记.docx
《db2数据库学习笔记.docx》由会员分享,可在线阅读,更多相关《db2数据库学习笔记.docx(83页珍藏版)》请在冰豆网上搜索。
db2数据库学习笔记
db2数据库学习笔记
一、DB2在unix或linux上的安装:
1、安装前准备工作
将下载的安装文件上传到待安装的LINUX机器,解压缩到某个目录,产生了一个名为Server的子目录,进入子目录,可以看到有多个可执行的脚本,其中db2prereqcheck是先决条件检查,db2setup是图形界面安装程序,db2_install是命令行方式安装。
还有一个db2目录,保存了需要安装的二进制文件。
执行db2prereqcheck,如果没有返回任何结果,表明系统符合DB2安装的先决条件,可以进入下一步安装。
如果返回信息,请按信息提示修改配置,然后再次运行,直到没有错误提示。
[root@redflag11012601app]#llv*gz
-rw-r--r--1rootroot81057639205-0319:
44v9.7_linuxx64_server.tar.gz
[root@redflag11012601app]#tarxzfv9.7_linuxx64_server.tar.gz
[root@redflag11012601app]#cdserver
[root@redflag11012601server]#ll
总计64
drwxr-xr-x6binbin40962009-11-16db2
-r-xr-xr-x1binbin53402009-11-16db2ckupgrade
-r-xr-xr-x1binbin52932009-11-16db2_deinstall
-r-xr-xr-x1binbin51632009-11-16db2_install
-r-xr-xr-x1binbin51272009-11-16db2ls
-r-xr-xr-x1binbin51452009-11-16db2prereqcheck
-r-xr-xr-x1binbin51452009-11-16db2setup
drwxr-xr-x15binbin40962009-11-16doc
-r-xr-xr-x1binbin51812009-11-16installFixPack
[root@redflag11012601server]#./db2prereqcheck
2、安装DB2数据库软件
以操作系统root用户执行db2_install,根据提示操作,设定安装目录和要安装的版本等以后,耐心等待安装任务完成。
DB2用一个安装包包括了同一操作系统平台各个版本的功能,只要在安装类型选择企业版即可,这里我们输入ESE。
要注意,由于操作系统默认语言为简体中文,安装界面也是中文提示的,而且,必须输入中文"是"才能更改安装目录。
和大多数unix下的软件一样,软件安装只是整个安装过程很小的一步,要使软件能正常工作,大量的配置和管理任务还在后头。
[root@redflag11012601server]#./db2_install
用于安装产品的缺省目录-/opt/ibm/db2/V9.7
***********************************************************
要选择另一个目录用于安装吗?
[是/否
Y
要选择另一个目录用于安装吗?
[是/否]
Yes
要选择另一个目录用于安装吗?
[是/否]
是
输入安装目录的完整路径名-
-----------------------------------------------
/user1/ibm/db2/V9.7
指定下列其中一个关键字以安装DB2产品。
ESE--企业版
CONSV
WSE--工作组版
EXP--易捷版
PE--个人版
CLIENT
RTCL
按“帮助”以重新显示产品名称。
按“退出”以退出。
***********************************************************
ESE
正在初始化DB2安装。
要执行的任务总数为:
47
要执行的所有任务的总估计时间为:
2070
任务#1启动
描述:
正在检查许可协议的接受情况
估计时间1秒
任务#1结束
任务#47启动
描述:
正在注册DB2更新服务
估计时间30秒
任务#47结束
任务#48启动
描述:
正在更新全局概要文件注册表
估计时间3秒
任务#48结束
已成功完成执行。
有关更多信息,请参阅"/tmp/db2_install.log.27290"上的DB2安装日志。
3、注册license
本安装因为是评估版无须这一步。
用户可以在90天内完全测试全部功能。
对于购买了企业版等版本license的用户,需要注册license才能长期使用。
4、创建DB2运行所需要的用户组和用户
DB2没有独立的用户管理系统,必须借用OS用户来提供安全性认证,所以这里需要创建LINUX用户和组。
一共创建了3个组,每个组一个用户。
其作用和含义分别是:
数据库管理服务器DAS用户dasusr1组名:
dasadm1
管理实例的用户db2inst1组名:
db2iadm1
受防护用户db2fenc1组名:
db2fadm1
其中管理实例的用户db2inst1是最常用的,我们为它设置口令db2,以便下面步骤的正常操作。
创建完成后,执行如下命令查看/etc/group和/etc/passwd,检查用户组和用户是否创建成功。
[root@redflag11012602server]#groupadd-g901db2grp
[root@redflag11012602server]#groupadd-g902db2fgrp
[root@redflag11012602server]#groupadd-g903db2agrp
[root@redflag11012602server]#useradd-gdb2grp-u801-d/home/db2inst1-m-s/bin/shdb2inst1
[root@redflag11012602server]#useradd-gdb2fgrp-u802-d/home/db2fenc-m-s/bin/shdb2fenc
[root@redflag11012602server]#useradd-gdb2agrp-u803-d/home/db2das-m-s/bin/shdb2das
[root@redflag11012602server]#passwddb2inst1
Changingpasswordforuserdb2inst1.
NewUNIXpassword:
BADPASSWORD:
itisWAYtooshort
RetypenewUNIXpassword:
passwd:
allauthenticationtokensupdatedsuccessfully.
[root@redflag11012602server]#more/etc/group|grepdb2
db2grp:
x:
901:
db2fgrp:
x:
902:
db2agrp:
x:
903:
[root@redflag11012602server]#more/etc/passwd|grepdb2
db2inst1:
x:
801:
901:
:
/home/db2inst1:
/bin/sh
db2fenc:
x:
802:
902:
:
/home/db2fenc:
/bin/sh
db2das:
x:
803:
903:
:
/home/db2das:
/bin/sh
5、创建实例
需要以root用户创建das和实例。
分别用下面2个命令:
dascrt创建的是DB2adminstrationserver,每台服务器只有一个这种server,为进行DB2管理(比如运行控制中心)所必须,同时指定其管理用户是db2das;
db2icrt创建的是实例,其名字一般和管理用户名一样,这里均为db2inst1;
创建成功以后,系统在db2das和db2inst1相应的home目录下产生了一个子目录。
/home/db2inst1/sqllib目录中包括了一个db2profile文件,包括了设定各个db2实例中用到的环境变量,如DB2INSTANCE和各种命令的搜索路径,库的路径等,必须执行它,才能进行各种操作,或者将.~/sqllib/db2profile一行加入/home/db2inst1/.profile文件(因为创建db2inst1用户时指定了shell类型是/bin/sh,如果是其他shell,则采用不同的profile文件,比如bash则采用.bash_profile),这样当切换到db2inst1用户时就会自动执行这个脚本。
db2das用户的设置脚本文件位于/home/db2das/das/dasprofile,同样需要执行这个脚本,才能执行db2admin等命令。
用db2ilist命令可以查出当前已创建的实例名。
[root@redflag11012602server]#cd/user1/ibm/db2/V9.7/instance
[root@redflag11012602instance]#./dascrt-udb2das
SQL4406WTheDB2AdministrationServerwasstartedsuccessfully.
DBI1070IProgramdascrtcompletedsuccessfully.
[root@redflag11012602instance]#./db2icrt-udb2inst1db2inst1
DBI1070IProgramdb2icrtcompletedsuccessfully.
-sh-3.2$db2ilist
db2inst1
6、启动DB2实例
切换到db2das用户,执行db2adminstart启动DB2管理服务器。
切换到db2inst1用户,执行db2start启动数据库实例。
root用户也可以执行db2adminstart命令。
如果首次执行,则会提示如下横线以下信息。
一般出现在刚刚用dascrt命令创建das之后。
[root@redflag11012601das]#su-db2das
-sh-3.2$.das/dasprofile
-sh-3.2$db2adminstart
SQL4406WTheDB2AdministrationServerwasstartedsuccessfully.
[root@redflag11012602instance]#su-db2inst1
-sh-3.2$ls
Desktopsqllib
-sh-3.2$.sqllib/db2profile
-sh-3.2$db2start
05/05/201120:
13:
0800SQL1063NDB2STARTprocessingwassuccessful.
SQL1063NDB2STARTprocessingwassuccessful.
----------
[root@redflag11012601bin]#./db2adminstart
SQL4409WTheDB2AdministrationServerisalreadyactive.
7、创建和访问数据库
首先要启动数据库实例,切换到db2inst1用户,执行db2start命令启动数据库实例。
若需要,首先用db2stop命令停止实例,如果db2stop命令不能成功执行,可运行下面的命令来关闭数据库实例。
首先在db2inst1用户下强制关闭实例上的所有应用程序。
$db2forceapplicationsall
$db2stop关闭数据库实例。
上述步骤也可以简化为改用db2stopforce命令。
启动数据库实例后用db2createdatabase命令创建数据库,可以设定字符集、页大小等数据库选项。
数据库创建成功后,可以用db2connectto命令连接数据库。
然后就可以进行创建表、查询等操作了。
如果要尽快测试db2数据库的功能,也可以用命令创建db2自带的sample数据库。
-sh-3.2$db2stop
2011-05-0911:
01:
5600SQL1025NThedatabasemanagerwasnotstoppedbecausedatabasesarestillactive.
SQL1025NThedatabasemanagerwasnotstoppedbecausedatabasesarestillactive.
-sh-3.2$db2forceapplicationsall
DB20000ITheFORCEAPPLICATIONcommandcompletedsuccessfully.
DB21024IThiscommandisasynchronousandmaynotbeeffectiveimmediately.
-sh-3.2$db2stop
2011-05-0911:
06:
0300SQL1064NDB2STOPprocessingwassuccessful.
SQL1064NDB2STOPprocessingwassuccessful.
-sh-3.2$db2start
05/08/201111:
14:
2400SQL1063NDB2STARTprocessingwassuccessful.
SQL1063NDB2STARTprocessingwassuccessful.
-sh-3.2$db2"createdatabasetpchUSINGCODESETUTF-8TERRITORYCNpagesize32K
DB20000ITheCREATEDATABASEcommandcompletedsuccessfully.
-sh-3.2$db2connecttotpch;
DatabaseConnectionInformation
Databaseserver=DB2/LINUXX86649.7.4
SQLauthorizationID=DB2INST1
Localdatabasealias=TPCH
db2=>select*fromdual;
DUMMY
----
X
1record(s)selected.
----------------------------------------------------------------------
-sh-3.2$cd/user1/ibm/db2/V9.7/bin
-sh-3.2$./db2sampl
StartingtheDB2instance...
Creatingdatabase"SAMPLE"...
Connectingtodatabase"SAMPLE"...
Creatingtablesanddatainschema"DB2INST1"...
CreatingtableswithXMLcolumnsandXMLdatainschema"DB2INST1"...
StoppingtheDB2instance...
'db2sampl'processingcomplete.
注意:
如果创建数据库时没有指定创建位置,默认创建在/home/db2inst1/实例名下,在此目录下包括系统表空间、用户表空间的数据文件,通常这个目录下的空间不会太大,当需要导入大量数据时,会发生磁盘空间不足的错误,解决方法是在其他目录创建表空间,然后在创建表时指定表空间,或者在数据库关闭状态下,将此目录移动到其他空间足够的目录,再用Linux的ln-s命令将其他位置映射到此目录下。
更好的办法是在一开始做好容量规划,将数据库创建目录指定到大容量的目录,具体命令行写法参考文档。
软连接的例子如下:
[db2inst1@aix:
/home/db2inst1]#>cp-Rdb2inst1/arch/IBM/ts
[db2inst1@aix:
/home/db2inst1]#>du-s/arch/IBM/ts/db2inst1
20111984/arch/IBM/ts/db2inst1
[db2inst1@aix:
/home/db2inst1]#>mvdb2inst1db2inst1ori
[db2inst1@aix:
/home/db2inst1]#>ls-l
total8
drwxrwxr-x3db2inst1db2iadm1256May1016:
03db2inst1ori
drwxrwsr-t23db2inst1db2iadm14096May1015:
49sqllib
[db2inst1@aix:
/home/db2inst1]#>ln-s/arch/IBM/ts/db2inst1db2inst1
8、设置DB2自启动
使用root用户执行db2iauto命令,设置对db2inst1实例在LINUX启动时自动启动。
这一步是可选的。
用户应该按自己的实际需要决定是否设置。
选项-on表示自动启动,-off表示不随操作系统启动自动启动。
[root@redflag11012601das]#cd/user1/ibm/db2/V9.7/instance
[root@redflag11012601instance]#./db2iauto-ondb2inst1
9、配置网络
DB2软件在创建实例的过程中,自动在操作系统中增加了相关的服务,并指定了相应的端口号。
但db2并没有自动设定为通过TCP/IP协议访问,需要手工配置。
首先查看/etc/services中db2各个服务的端口号,这里DB2_db2inst1默认端口就是60000。
切换到db2inst1用户。
修改DB2连接方式为TCPIP,然后可通过JDBC、ODBC等访问本DB2服务器上的数据库,安装了DB2客户端的其它机器也可访问数据库。
$db2setDB2COMM=TCPIP,设定完成后,可以通过不带参数的db2set命令查看结果。
修改DB2的服务端口为上述默认端口号。
db2updatedbmcfgusingSVCENAME命令提示,需要重新启动实例,再用clpplus命令验证网络设置成功
-sh-3.2$db2setDB2COMM=TCPIP
-sh-3.2$db2set
DB2_COMPATIBILITY_VECTOR=ORA
DB2_EXTENDED_OPTIMIZATION=on
DB2_LIKE_VARCHAR=y,y
DB2_HASH_JOIN=Y
DB2MEMMAXFREE=8000000
DB2MEMDISCLAIM=Y
DB2_MMAP_WRITE=NO
DB2_MMAP_READ=NO
DB2_RR_TO_RS=ON
DB2COMM=TCPIP
-sh-3.2$db2getdbmcfg|grepSVCENAME
TCP/IPServicename(SVCENAME)=
SSLservicename(SSL_SVCENAME)=
-sh-3.2$tail/etc/services
com-bardac-dw48556/udp#com-bardac-dw
iqobject48619/tcp#iqobject
iqobject48619/udp#iqobject
#Localservices
csync2005/tcp#CyrusIMAPReplicationDaemon
csync2005/udp#CyrusIMAPReplicationDaemon
DB2_db2inst160000/tcp
DB2_db2inst1_160001/tcp
DB2_db2inst1_260002/tcp
DB2_db2inst1_END60003/tcp
-sh-3.2$db2updatedbmcfgusingSVCENAME60000
DB20000ITheUPDATEDATABASEMANAGERCONFIGURATIONcommandcompleted
successfully.
SQL1362WOneormoreoftheparameterssubmittedforimmediatemodification
werenotchangeddynamically.Clientchangeswillnotbeeffectiveuntilthe
nexttimetheapplicationisstartedortheTERMINATEcommandhasbeenissued.
ServerchangeswillnotbeeffectiveuntilthenextDB2STARTcommand.
-sh-3.2$db2stopforce
2011-05-0819:
36:
0000SQL1064NDB2STOPprocessingwassuccessful.
SQL1064NDB2STOPprocessingwassuccessful.
-sh-3.2$db2start
05/08/201119:
36:
0600SQL1063NDB2STARTprocessingwassuccessful.
SQL1063NDB2STARTprocessingwassuccessful.
-sh-3.2$clpplusdb2inst1/db2@localhost/sample
输入端口[50000]:
60000
数据库连接信息
主机名=localhost
数据库服务器=DB2/LINUXX8664S