DB2学习总结.docx
- 文档编号:4818275
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:85
- 大小:491.84KB
DB2学习总结.docx
《DB2学习总结.docx》由会员分享,可在线阅读,更多相关《DB2学习总结.docx(85页珍藏版)》请在冰点文库上搜索。
DB2学习总结
资料编码
产品名称
数据业务工程师DB2数据库快速入门
使用对象
华为工程师、合作方工程化是
产品版本
编写部门
数据业务产品服务部
资料版本
V1.0
数据业务工程师DB2入门指南
拟制:
鲁强
日期:
2007-6-13
审核:
日期:
审核:
日期:
批准:
日期:
华为技术有限公司
版权所有XX
修订记录
日期
修订版本
描述
作者
2007-6-13
V1.0
初稿完成
鲁强
目录
第1章DB2相关知识介绍1
1.1概述1
1.2系统结构1
1.2.1实例instance1
1.2.2数据库database3
1.2.3配置文件7
1.2.4表空间tablespace12
1.2.5表table20
1.2.6视图view22
1.2.7索引index23
1.2.8存储过程storeprocedure25
1.2.9缓冲池bufferpool25
1.2.10日志logs28
1.3其他系统管理部分29
1.3.1节点编目(DB2客户机通讯)29
1.3.2Db2license33
1.3.3系统健康状态35
1.4典型案例介绍36
1.4.1创建存储过程时,应先删除已存在的同名同参数的存储过程36
1.4.2应确保处理SQL语句的应用堆有足够的大小37
1.4.3视图无效,需要重建37
1.4.4如果数据库在执行对表插入、删除等操作的同时,进行查询该表,可能导致数据库进程被锁住。
37
1.4.5如何清空一张表37
1.4.6前滚时遇到未记日志的失败操作,表被破坏。
38
1.4.7在客户端查询数据库中文信息会产生乱码38
1.4.8重启动机器后,用于创建表空间的裸设备与逻辑卷挂接失效,数据库无法使用,提示:
SQL0290N Tablespaceaccessisnotallowed. SQLSTATE=5503938
1.4.9编目时确保使用正确的服务端口号38
1.4.10不能分配“应用程序支持层“堆39
1.4.11如何查看数据库占用内存情况40
1.4.12如何查看DB2的进程40
1.4.13如何将数据库运行的环境收集起来40
1.4.14数据库实例用户无法访问裸设备40
1.4.15如何让数据库支持中文字符集41
1.4.16db2select*from…类似这样含有特殊字符的语句在Linux/Unix平台下,执行总是提示错误,无法执行41
1.4.17如何获取当前时间41
1.4.18如何在命令行下查看错误代码的说明41
1.4.19如果查询结果的字段比较少,如何将每条纪录的列在同一行,以增强可读性41
1.4.20常用的几中数据类型的精确度和长度为多少41
1.4.21如何查看DB2的日志42
1.4.22无法删除数据库42
1.4.23查询数据库系统表中的对象失败43
1.4.24在DB2数据库中如何将整型转换为字符型43
1.4.25在SuSe9下执行raw命令将裸设备和逻辑卷挂接时裸设备的归属属性会发生改变。
43
1.5Suse下Oracle移植到db2经验案例44
1.5.1Oracle和db2的数据库44
1.5.2表空间数据文件的差异44
1.5.3数据库使用内存的差异45
1.5.4表空间使用内存的差异46
1.5.5数据库最小分配单元的差异46
1.5.6数据库日志的差异47
1.5.7数据源配置的差异47
1.5.8Db2和oracle的进程差异47
关键词:
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、连接到一个本地或远端数据库:
db2connectto
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)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DB2 学习 总结