DB2数据业务工程师DB2数据库快乐入门.docx
《DB2数据业务工程师DB2数据库快乐入门.docx》由会员分享,可在线阅读,更多相关《DB2数据业务工程师DB2数据库快乐入门.docx(60页珍藏版)》请在冰豆网上搜索。
DB2数据业务工程师DB2数据库快乐入门
关键词:
DB2数据库
摘要:
本文介绍了DB2数据库的相关基础知识及产品开局、维护中常用命令,作为学习DB2数据库的
参考
缩略语清单:
无
参考资料清单:
主机空间第八期、DB2数据库管理与应用教程、短消息产品安装指南、维护指南及巡检指南、
短消息OSTA项目经验案例集.chm
无
第1章DB2相关知识介绍
1.1概述
本文介绍了DB2数据库的相关基础知识及产品开局、维护中常用命令,作为学习DB2数据库的参考。
1.2系统结构
DB2数据库的系统结构
1.2.1实例instance
实例(instance):
指后台进程与共享存储器的组合,DB2UDB中一个实例可以包括多个数据库,一个数据库只能属于一个实例(Oracle中每个实例只包含一个数据库)。
Oracle中因为数据库和实例之间存在一对一的对应关系,所以要通过用CREATEDATABASE命令创建数据库来显式地创建实例。
在DB2UDB中,Windows平台,默认创建“DB2”实例。
Linux和UNIX中,其默认实例名为“db2inst1”。
若要在同一台机器上创建另一个实例,您只需执行命令db2icrt,可以单独创建实例,后续在对应的实例下创建数据库。
―――――――――――――――――――――――――――――――――――――――――
和windows不同,Suselinux下要单独创建实例用户。
需要注意一下,suselinux下,创建、查询、删除实例是通过root用户执行的。
而启动和关闭实例是通过实例用户db2inst1来执行的。
并且,如果有多个实例,则必须创建多个实例用户。
Linux下DB2安装需要以下三个用户和用户组
● DB2Instance用户
● DB2Fenced用户
● AdministrationServer用户
―――――――――――――――――――――――――――――――――――――――――
实例相关的常用指令:
1、创建实例:
db2icrt
C:
\DocumentsandSettings\Administrator>db2icrtitest
DB20000IDB2ICRT命令成功完成。
2、查询实例:
db2ilist
C:
\DocumentsandSettings\Administrator>db2ilist
ITEST
DB2
3、删除实例:
db2idrop
C:
\DocumentsandSettings\Administrator>db2idropitest
DB20000IDB2IDROP命令成功完成。
·4、启动实例:
db2start
C:
\DocumentsandSettings\Administrator>db2start
2007-06-1210:
43:
3400SQL1063NDB2START处理成功。
SQL1063NDB2START处理成功。
5、停止实例:
db2stop
C:
\DocumentsandSettings\Administrator>db2stop
2007-06-1210:
43:
0800SQL1064NDB2STOP处理成功。
SQL1064NDB2STOP处理成功。
6、查看当前实例:
db2getinstance
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2getinstance
当前数据库管理器实例是:
DB2
1.2.2数据库database
数据库(database):
数据库是与实例相关的封闭且独立的单元,DB2UDB中,一个实例可以容纳多个数据库。
每个数据库都有自己的目录表空间、临时表空间和用户表空间,它们是随数据库的成功创建而被默认创建的。
由于数据库的独立性,所以不同数据库中可以有相同名称的对象,例如表空间、表等。
当创建一个实例时,默认情况下不创建数据库。
需要使用createdatabase命令显式地创建数据库。
也可以使用ControlCenter来创建数据库。
数据库相关的常用指令:
1、创建数据库:
db2createdatabase…
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2createdatabasedbtest
DB20000ICREATEDATABASE命令成功完成。
2、查看目前实例能够识别的本地与远程数据库:
db2listdatabasedirectory(showdetail)
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2listdatabasedirectory
系统数据库目录
目录中的条目数=5
数据库1条目:
数据库别名=DBTEST
数据库名称=DBTEST
数据库驱动器=C:
\DB2
数据库发行版级别=a.00
注释=
目录条目类型=间接
目录数据库分区号=0
备用服务器主机名=
备用服务器端口号=
数据库2条目:
数据库别名=TBC_MD
数据库名称=TBC_MD
节点名=NDE9F105
数据库发行版级别=a.00
注释=BIsamplemetadatadatabase
目录条目类型=远程
目录数据库分区号=-1
备用服务器主机名=
备用服务器端口号=
2、启动数据库:
db2activatedatabase
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2activatedatabaseDBTEST
DB20000IACTIVATEDATABASE命令成功完成。
3、列出实例中正在使用的数据库:
db2listactivedatabases
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2listactivedatabases
活动数据库
数据库名称=DBTEST
当前连接的应用程序=0
数据库路径=C:
\DB2\NODE0000\SQL00006\
数据库名称=SAMPLE
当前连接的应用程序=1
数据库路径=C:
\DB2\NODE0000\SQL00002\
4、停止数据库:
db2deactivatedatabase
该命令只能停止使用activate启动的数据库,对于采用connect方式的,数据库会在最后一个用户离开后,自动停止。
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2deactivatedatabaseDBTEST
DB20000IDEACTIVATEDATABASE命令成功完成。
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2deactivatedatabaseSAMPLE
SQL1495W释放数据库成功,然而,仍然存在一个与数据库之间的连接。
(该数据库是通过connect的方式登录的)
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2listactivedatabases
活动数据库
数据库名称=SAMPLE
当前连接的应用程序=1
数据库路径=C:
\DB2\NODE0000\SQL00002\
5、强制断开数据库连接:
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2listactivedatabases
活动数据库
数据库名称=SAMPLE
当前连接的应用程序=1
数据库路径=C:
\DB2\NODE0000\SQL00002\
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2listapplications(列出当前所有的数据库会话)
授权标识应用程序名应用程序应用程序标识DB代理进程
句柄名称序号
---------------------------------------------------------------------------
ADMINIST>javaw.exe12*LOCAL.DB2.070612030039SAMPLE1
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2forceapplication(12)(强制关闭应用程序标识号为12的进程,也可一用all来关闭所有会话)
DB20000IFORCEAPPLICATION命令成功完成。
DB21024I该命令为异步的,可能不会立即生效。
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2listactivedatabases
SQL1611W“数据库系统监视器”没有返回任何数据。
SQLSTATE=00000
6、删除数据库:
db2dropdatabase
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2dropdatabaseDBTEST
SQL1035N当前正在使用数据库。
SQLSTATE=57019(删除激活的数据库失败)
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2deactivatedatabaseDBTEST
DB20000IDEACTIVATEDATABASE命令成功完成。
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2dropdatabaseDBTEST
DB20000IDROPDATABASE命令成功完成。
7、连接到一个本地或远端数据库:
db2connecttouser<用户名>using<密码>
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2connecttosample(连接到本地sample数据库)
数据库连接信息
数据库服务器=DB2/NT8.2.0
SQL授权标识=ADMINIST...
本地数据库别名=SAMPLE
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2getconnectionstate(查询本实例下数据库连接状态)
数据库连接状态
连接状态=可连接并已连接
连接方式=SHARE
本地数据库别名=SAMPLE
数据库名称=SAMPLE
主机名=
服务名称=
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2connectreset(断口与sample的连接)
DB20000ISQL命令成功完成。
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2getconnectionstate
数据库连接状态
连接状态=可连接而未连接
连接方式=
本地数据库别名=
数据库名称=
主机名=
服务名称=
8、重启数据库:
db2restartdatabase
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2restartdatabasesample
DB20000IRESTARTDATABASE命令成功完成。
1.2.3配置文件
DB2UDB中,所有会话和系统相关的参数配置参数存储在实例级别(称为数据库管理器配置文件)和数据库级别(称为数据库配置文件)。
这些参数大多数都可以被动态更改,即在对于参数值的更改生效之前,不需要停止并重启该实例或者强制所有连接。
。
1、系统环境参数
DB2有一些参数是在操作系统环境设置的,例如DB2INSTANCE、DB2PATH等。
Linux下,可以通过db2inst1用户执行env命令查看对应的环境变量。
smcsrv1:
~#su-db2inst1
db2inst1@smcsrv1:
~>env
MODULE_VERSION_STACK=3.1.6
LESSKEY=/etc/lesskey.bin
DB2INSTANCE=db2inst1
在windows平台,则可以通过查看系统环境变量的方式,查询对应的DB2相关的环境参数。
Linux下可以使用setenv来设置环境变量
setenvDB2INSTANCEdb2inst1
windows下,可以使用set命令来设置环境变量,set命令时常犯的错误是在等号(=)前后留有空格。
绝对不能有空格!
C:
\ProgramFiles\IBM\SQLLIB\BIN>setDB2INSTANCE=DB2INST2
C:
\ProgramFiles\IBM\SQLLIB\BIN>echo%DB2INSTANCE%
DB2INST2
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2start
SQL1063NDB2START处理成功。
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2getinstance
当前数据库管理器实例是:
DB2INST2
2、DB2注册配置文件
概要注册表(ProfileRegistry)变量与Windows注册表变量没有任何关系。
过去,对某些环境变量进行更改时,会要求用户重新引导机器。
如果所有DB2变量都已被定义成环境变量,那么对变量值进行更改将会很麻烦。
因此,当时大多数DB2变量组成一个专门的DB2注册表,在其中进行更改无需重新引导机器。
DB2概要注册表分成四类;但是下面这两个是最常用的:
·DB2全局级概要注册表(Global-LevelProfileRegistry)
·DB2实例级概要注册表(Instance-LevelProfileRegistry)
两者的主要区别是变量适用的级别。
全局级概要注册表变量的值适用于所有实例。
要查看所设置的当前注册表变量,请从CLP发出下面这个命令:
db2set–all
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2set-all
[e]DB2PATH=C:
\ProgramFiles\IBM\SQLLIB
[i]DB2_SKIPDELETED=on
[i]DB2ACCOUNTNAME=HWSRV51\db2admin
[i]DB2COMM=TCPIP
[g]DB2PATH=C:
\ProgramFiles\IBM\SQLLIB
[g]DB2INSTDEF=DB2
[g]DB2ADMINSERVER=DB2DAS00
I表示实例级别,g表示全局,e表示环境变量
该命令的具体使用可以通过如下方式进行查询。
db2inst1@smcsrv1:
~>db2set/?
DBI1300Ndb2setdisplays,sets,orremovesDB2profile
variables.
db2set[[[variable=[value]]
[-g|-iinstance[
node-number]]]
[-all][-null]
[-r[instance[node-number]]]
[-nDASnode[
-uuser[-ppassword]]]
[-l|-lr][-v][-ul|-ur]
[-?
|-h]
3、实例设置参数
DB2的每一个实例,都有一组设置参数。
查看参数的指令:
db2getdbmcfg
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2getdbmcfg|more
数据库管理器配置
节点类型=带有本地客户机和远程
客户机的企业服务器版
数据库管理器配置发行版级别=0x0a00
打开的文件的最大总数(MAXTOTFILOP)=16000
CPU速度(毫秒/指令)(CPUSPEED)=3.227686e-007
通信带宽(MB/秒)(COMM_BANDWIDTH)=1.000000e+002
。
。
。
。
。
db2start/db2stoptimeout(min)(START_STOP_TIME)=10
修改参数的指令:
updatedbmcfgusing
db2inst1@smcsrv1:
~>db2updatedbmcfgusingstart_stop_time11
DB20000ITheUPDATEDATABASEMANAGERCONFIGURATIONcommandcompleted
successfully.
db2inst1@smcsrv1:
~>db2getdbmcfgshowdetail|grepSTART_STOP_TIME
db2start/db2stoptimeout(min)(START_STOP_TIME)=11
备注:
部分参数修改后,需要重启实例才能生效
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2updatedbmcfgusingMAXTOTFILOP16070
DB20000IUPDATEDATABASEMANAGERCONFIGURATION命令成功完成。
SQL1362W为立即修改而提交的一个或多个参数未动态更改。
直到下次启动应用程序或发出
TERMINATE命令之后,客户机更改才会生效。
直到下一条DB2START
命令之后,服务器更改才会生效。
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2getdbmcfgshowdetail(检查详细状态)
描述参数当前值延迟的值
打开的文件的最大总数(MAXTOTFILOP)=1607016000
4、数据库设置参数
DB2的每一个数据库,都有一组设置参数。
查看参数的指令:
db2getdbcfgfor
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2getdbcfgforsample
数据库共享内存大小(4KB)(DATABASE_MEMORY)=435
目录高速缓存大小(4KB)(CATALOGCACHE_SZ)=326
应用程序组内存集的最大大小(4KB)(APPGROUP_MEM_SZ)=30000
应用程序组堆的内存百分比(GROUPHEAP_RATIO)=70
最大应用程序控制堆大小(4KB)(APP_CTL_HEAP_SZ)=128
修改参数的指令:
db2updatedbcfgforusing
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2updatedbcfgforsampleusingDATABASE_MEMORY450
DB20000IUPDATEDATABASECONFIGURATION命令成功完成。
备注:
部分参数修改后,需要重启实例才能生效
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2getdbcfgforsampleshowdetail
可以参考参数是否需要通过重启才能生效。
对应参数的修改可以通过控制中心的GUI界面进行操作,如下图所示:
1.2.4表空间tablespace
表空间是用作逻辑表和物理容器之间中间层的逻辑对象。
创建表空间时,可以将它与特定的缓冲池(数据库高速缓存)以及特定的容器进行关联。
Catalog(SYSCATSPACE)、系统临时空间(TEMPSPACE1)和用户空间(USERSPACE1)都是表空间,并且都会在创建数据库时自动创建。
创建表的时候,如果没有指定对应的表空间,则缺省情况下会使用USERSPACE1表空间
表空间的分类:
1、按照存储方式进行划分
SystemManagedSpaces(SMS)
所有表数据和索引都共享同一个表空间。
表空间中每张表都有其自己的文件名,可由所有容器使用。
文件扩展名表示存储在文件中的数据类型。
文件大小有可能动态增长,其大小上限由容器数量、操作系统在文件系统大小方面的限制以及操作系统在单个文件大小方面的限制所决定。
当单个容器中的所有空间都已分配之后,就认为该表空间已满,即使其它容器中还有剩余空间。
只可以将新容器添加到还没有任何容器的分区上的SMS中。
在Linux或UNIX上,文件系统大小可能会增加。
DatabaseManagedSpaces(DMS)
空间是在创建该表空间时分配的
可以使用altertablespace命令添加或删除表空间容器
添加或删除容器时,会自动并异步地重新均衡数据
可以动态扩展、减少容器的数目或调整其大小
表空间容量只受物理存储器限制
文件系统I/O用于DMS文件操作
直接I/O用于DMS原始操作
2、按照存储内容进行划分
REGULAR(常规)
存放除临时表数据以外的所有数据
LARGE(大对象)
存放大对象类型,该类型的表空间只能使用DMS的存储方式
TEMPORARY(临时)
临时表空间,又可分为系统临时表空间和用户临时表空间
表空间相关指令:
1、创建表空间
创建SMS类型表空间举例:
createtablespacets1managedbysystemusing('D:
\DIR1')
创建DMS类型表空间举例:
createtablespacemytbspcmanagedbydatabaseusing(device'/dev/rmydisk1'10000)
2、查看数据库所有的表空间
C:
\ProgramFiles\IBM\SQLLIB\BIN>db2listtablespaces
当前数据库的表空间
表空间标识=0
名称=SYSCATSPACE
类型=系统管理空间
内容=任何数据
状态=0x0000
详细解释:
正常
表空间标识=1
名称=TEMPSPACE1
类型=系统管理空间
内容=系统临时数据
状态=0x0000
详细解释:
正常
表空间标识=2
名称=USERSPACE1
类型=系统管理空间
内容=任何数据
状态=0x0000
详细解释:
正常
表空间标识=3
名称=SYSTOOLSPACE
类型=系统