用友股份-LE服务支持部技术方案--《NCV5技术顾问手册之Db2篇》建立日期:2013-01-01修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-JS-2013-00162/53文档控制创建记录审阅人姓名所属部门职位审阅签字发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-01-01V1.03目录DB2...............................................................................................................................4Db2安装:..............................................................................................................4Db2性能查看以及优化脚本:...........................................................................444DB2Db2安装:先决条件在学习本教程之前,您应该具备基本的AIX系统的概念,有一定的AIX系统的操作能力。系统需求本文描述的安装环境是基于IBMSystemp服务器,同样也适用于基于IBMSystemi/p的AIX分区环境DB2的安装配置。硬件需求DB2支持IBMSystemp的全系列的硬件产品,这里列出DB2需要最低内存和硬盘空间的大小做为参考。需求最小要求物理内存256MB磁盘空间不小于500MB(此空间是DB2的安装后的程序文件,不是数据文件)5对于一个只运行DB2和DB2GUI工具的系统,至少需要512MB内存。但建议提供1GB的内存以提高性能。这些需求并不包括在系统上运行的其他软件所需要的内存。当确定内存要求时,应了解下列事项:对于DB2客户机支持,这些内存要求是按照存在五个并发客户机连接的情况来计算的。每增加五个客户机连接,就需要增加16MB内存。内存要求会受到数据库系统的大小和复杂程度的影响,还会受到数据库活动范围和访问系统的客户机数量的影响。在Linux®上,建议使交换空间至少为物理内存的两倍。在DB2版本9.1中,新的自调整内存功能会自动设置几个内存配置参数值,从而简化内存配置任务。启用此功能后,内存调整器就会在几个内存使用者(包括排序、程序包高速缓存、锁定列表和缓冲池)之间动态地分配可用内存资源,从而提高DB2数据库的性能。软件需求DB2对AIX操作系统和C++运行的具体环境要求如下:AIX版本操作系统硬件5.2需要64位AIX内核技术级别(TL)5200-08和ServicePack(SP)5200-08-02最低C++运行时级别为xlC.rte8.0.0.4和xlC.aix50.rte8.0.0.8下列其中一项IBMSystemp™eServer™pSeries甛highlight4065.2需要64位AIX内核技术级别(TL)5300-04和ServicePack(SP)5300-04-02最低C++运行时级别为xlC.rte8.0.0.4和xlC.aix50.rte8.0.0.8下列其中一项IBMsystemp™eServer™pSeries甛highlight40软件注意事项:使用bosboot命令切换至64位内核。要切换至64位内核,需要root用户权限并应输入下列命令:#ln-sf/usr/lib/boot/unix_64/unix#ln-sf/usr/lib/boot/unix_64/usr/lib/boot/unix#bosboot-a#shutdown-FrDB2版本9需要“用于AIX的IBMC++运行时环境组件”,它包含xlC.rte8.0.0.4。可以从AIX支持Web站点获得。需要下列浏览器中的一个来查看联机帮助并运行“第一步”(db2fs):Mozilla1.4和更高版本Firefox1.0和更高版本Netscape7.0和更高版本71安装前的准备工作在开始安装DB2v9.1前,需要以下步骤配置您的服务器,具体步骤如下:配置VNCServer如果您的硬件系统中已安装有图形显示卡,可以跳过此步骤。从bullfreeware网站上下载VNC和zlib软件。zlib软件是VNC的依赖包,所以也需要安装。VNC的软件版本为3.3.3.2,文件为vnc-3.3.3.2.exe是个自解压文件。使用以下命令进行安装。#chmod+x./vnc-3.3.3.2.exe#./vnc-3.3.3.2.exe#chmod+x./zlib-1.1.4.0.exe#./zlib-1.1.4.0.exe将会解压出vnc-3.3.3.2.bff、vnc-3.3.3.2.bff.asc和zlib-1.1.4.0.bff文件,可用smittyinstallp命令来安装,安装完成后需要将/usr/local/bin目录加入$PATH环境变量。这是由于vncserver和vncpasswd等程序都在此目录。编辑/etc/environment文件,加入环境变量。#vi/etc/environment,修改后的内容如下:8PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java14/jre/bi:/usr/java14/bin:/usr/local/bin保存environment文件后,就可以正常是用VNC了。如果系统中安装了CDE,当你用vnc打开图形界面时就会出现CDE的界面。如果没有安装可以使用smitty或installp来安装CDE图形界面,安装完成后,需要重新启动AIX系统。vnc的使用方法如下:第一次使用时,输入vncserver命令会要求你输入vnc的密码。然后使用vncserver:1命令在服务器上启动VNCServer,最后在客户端使用vncviewer(可以是TightVNC或UltraVNC)即可。可以从以下网站下载VNC软件:TightVNChttp://www.tightvnc.com/UltraVNChttp://www.uvnc.com/安装xlC++DB2v9.1要求安装xlC.rte的文件集最低版本不能低于8.04,可以从IBM支持网站下载,文件为:xlc.rte.aix50.apr2006.ptf.tar.Z。解压缩tar包后,使用smitinstallp进行安装即可。创建DB2的用户和组在安装DB2v9.1过程中,DB2安装向导会自动创建下列用户和组。如果使用DB2安装向导,则不需要手工创建以下这些用户和组,创建的三个用户和三个组如下。用户作用用户名组名实例所有者db2inst1db2iadm1受保护用户db2fenc1db2fadm1管理服务器用户dasusr1db2adm19实例所有者(db2inst1)DB2实例是在实例所有者主目录中创建的。此用户控制所有DB2进程并拥有由包含在该实例中的数据库所使用的所有文件系统和设备。缺省用户为db2inst1,缺省组为db2iadm1。当使用DB2安装向导时,缺省的操作是为DB2实例创建一个新用户db2inst1,如果此用户名已存在,则DB2将尝试创建另一个用户名db2inst2。如果这个用户名也存在,DB2将继续搜索用户名db2inst3、db2inst4等等,直到它标识出系统上不是现有用户的第一个用户名作为缺省的实例所有者ID。受防护的用户(db2fenc1)受防护的用户用于在DB2数据库所使用的地址空间之外运行用户定义的函数(UDF)和存储过程。缺省用户为db2fenc1,缺省组为db2fadm1。如果不需要此安全级别(例如,在测试环境中),则可以使用实例所有者作为受防护的用户。DB2管理服务器用户(dasusr1)DB2管理服务器用户的用户标识用于在系统上运行DB2管理服务器,缺省用户为dasusr1,缺省组为dasadm1。DB2GUI工具也会使用此用户标识来对本地服务器数据库实例和数据库执行管理任务。此用户不包含任何数据库,且每台机器仅有一个管理服务器。例如,一个管理服务器可以服务多个数据库实例。在AIX系统下,以root用户身份,使用如下命令创建用户和组:#mkgroupid=999db2iadm1#mkgroupid=998db2fadm1#mkgroupid=997dasadm1##mkuserid=1004pgrp=db2iadm1groups=db2iadm1home=/home/db2inst1core=-1data=491519stack=32767rss=-1fsize=-1db2inst110#mkuserid=1003pgrp=db2fadm1groups=db2fadm1home=/home/db2fenc1db2fenc1#mkuserid=1002pgrp=dasadm1groups=dasadm1home=/home/dasusr1dasusr1通过输入如下命令,为每个用户设置初始化密码:#passwddb2inst1#passwddb2fenc1#passwddasusr1配置AIX系统参数AIX操作系统在安装完成后,系统的许多默认参数需要手工来修改这些参数,为提高DB2数据库的性能。需要调整以下参数,需要首先以root用户身份登陆。设置每个用户的最大进程数#chdev-lsys0-amaxuproc='4096'设置文件的缓存DB2数据库有自己的文件缓存,一般情况下不需要使用系统的文件缓存。11在AIX系统中,默认情况,系统的文件缓存设置的过大,影响了DB2使用更多的系统内存。这里通过vmo命令限制AIX系统的文件缓存大小,分别为最小为15%,最大为系统的40%。在进行调整前,首先通过命令vmo-a来查看目前的参数值;minperm及maxperm的缺省值分别是30%和80%。#vmo–p–ominperm%=15#vmo–p–omaxperm%=40设置系统的PagingSpaceAIX安装完成后,默认的PagingSpace的大小为512MB,需要设置其他,设置PagingSpace的大小的原则是:1)系统实际内存在64MBto256MB之间,PageSpace=RAMsize+16MB;2)系统实际内存大于256MB,PageSpace=512+(RAM-256)*1.25;3)当内存超过4GB时,则需要根据实际情况来定,一般可初始3GB,然后观察PagingSpace的使用情况,如果使用率超过70%,则需要增加pagingspace。可以通过chps命令直接修改或smittychps来修改。#chps-s16hd6(系统的PPS大小为128M)2图形安装步骤DB2v9.1的安装需要启动图形界面,如果一台IBMSeverp服务器没有图形显示卡,则需要借助于第三方的工具如Xmanager,或使用VNC方式连接到系统的图形界面,建议使用VNC方式连接,具体配置方式参考配置VNCServer。DB2的安装整个安装配置流程如下:12图1.安装流程图具体的安装的步骤如下:以root用户身份登陆AIX系统的CDE界面,如果是DB2数据库的光盘介质,放入系统的光驱,可直接进行安装。也可从IBMWeb站点下载DB2的安装文件db2_v9_ese_aix.tar.gz,解压缩包之后。运行如下命令,以图形方式安装DB2数据库。13#gunzip–dcdb2_v9_ese_aix.tar.gz|tarxvf–#cdese_t#cddisk1#./db2setup此时就会启动Java的图形界面,如下图所示,选择安装新的DB2数据库。图1.安装新DB2启动DB2的安装向导,开始安装配置,首先DB2的软件许可协议。14图2.接受协议选择安装类型,默认情况可选择典型安装即可,本次安装选择定制方式来进行个。15图3.选择安装类型是否创建安装响应文件,如果是要安装DPF,可选第三项,创建响应文件,由于是单机版安装,选择安装本地DB2企业数据库。16图4.选择安装到本地服务器在选择属性安装时,选择取消安装Clientsupport—〉DB2LDAPsupport的支持。如果您的系统环境中,有LDAP服务器,可选择此项功能。DB2的安装目录位置在默认安装位置/opt/IBM/db2/V9.117图5.选择安装选择安装语言,使用默认语言:English即可。18图6.选择安装语言是否安装在本地安装DB2informationCenter,这里选择informationcenter的位置在IBMWeb站点。19图7.选择informationcenter创建服务器管理用户dasusr1和组db2adm1,如果使用前面手工创建的用户或组,选择已存在的用户即可。20图8.创建管理服务器用户选择创建DB2的实例21图9.创建DB2实例选择DB2的实例类型,是单实例还是多分区实例。22图10.选择DB2的实例类型创建DB2的实例管理用户db2inst1和组db2iadm1,同样如果已创建了db2的实例管理用户和组的话,这里选择已存在的用户和组即可。23图11.创建实例管理用户创建受保护的用户db2fenc1和dbfadm1,如果已存在,可选择已存在的用户和组。24图12.创建受保护的用户配置DB2实例通讯端口,默认是50000,一般不要修改。取消在系统启动后,自动启动数据库,使用手工方式启动数据库。这个选择可根据环境需要点选。25图13.配置DB2通讯端口这里选择不配置DB2的工具编目,可根据实际需要来创建DB2的工具编目。26图14.选择工具编目设置DB2的警告通知,如果数据库有问题或不正常,可在此处输入要发送的邮件地址,DB2会自动地发送邮件,提醒管理用户。由于服务器没有上网,故这里选择这次不设置警告通知。27图15.设置DB2的警告通知在开始拷贝数据库前,列出要拷贝的所有操作,并列出摘要信息。28图16.DB2安装摘要开始拷贝安装DB2数据文件。29图17.DB2安装过程DB2安装成功,并列出相关的信息。30图18.DB2安装成功DB2安装完成后,分别在DB2的实例管理用户db2inst1创建sqllib和dbinst1文件夹;sqllib文件存放的一些链接岛db2安装主目的链接文件以及管理实例相关的命。Db2inst1目录为DB2存放数据库文件以及日志文件的目录,在实际生产过程中,db2inst1用户的主目录建议存放在比较大的磁盘容量的分区内。安装后的任务验证安装是否成功通过创建样本数据库并运行SQL命令来搜索样本数据,从而验证安装。以db2inst1用户登录系统,使用db2start启动db2数据库。具体的验证过程如下:$db2start3109/26/200701:08:5500SQL1063NDB2STARTprocessingwassuccessful.SQL1063NDB2STARTprocessingwassuccessful.$db2samplCreatingdatabase"SAMPLE"...Connectingtodatabase"SAMPLE"...Creatingtablesanddatainschema"DB2INST1"...'db2sampl'processingcomplete.$db2db2=>connecttosampledb2=>select*fromstaffwheredept=20IDNAMEDEPTJOBYEARSSALARYCOMM--------------------------------------------------10Sanders20Mgr798357.50-20Pernal20Sales878171.25612.4580James20Clerk-43504.60128.20190Sneider20Clerk834252.75126.50324record(s)selected.db2=>db2terminate$db2dropdatabasesampleDB20000ITheDROPDATABASEcommandcompletedsuccessfully.$在运行db2sampl创建样本数据库时,可能需要花几分钟时间。使用db2命令进入DB2CLP环境,使用select语句查询staff表中部门号为20的所有员工,能正确的显示结果,则说明数据库正常。在完成测试后,需要删除样本数据库,使用db2dropdatabasesample命令来删除,以释放磁盘空间。5.2.安装后的配置DB2单机版安装完成,通常IBM建议更新到DB2的最新的补丁包,以避免遇到IBM已知并且已更正的软件缺陷所导致的问题。升级DB2的补丁包在升级DB2的补丁包前,可以使用db2ls命令查看当前DB2版本的安装路径以及当前DB2的版本及补丁集,并使用db2stop命令停止DB2数据库。33#cd/usr/local/bin#./db2lsInstallPathLevelFixPackSpecialInstallNumberInstallDate----------------------------------------------------------------------/opt/IBM/db2/V9.1_019.1.0.00MonSep1022:40:452007CDT#su–db2inst1$db2stopforce09/26/200719:06:5100SQL1064NDB2STOPprocessingwassuccessful.SQL1064NDB2STOPprocessingwassuccessful.如果想查询更详细的信息,可以使用db2ls–q–b$DB2HOME即可显示更详细的DB2的组件的版本信息。下载补丁包,在DB2UNIX版产品支持Web站点上查找修订包。网址为:http://www.ibm.com/software/data/db2/udb/support.html安装补丁包,从IBM站点下载补丁包名为:db2_v9_ese_aix.tar.gz,具体的安装过程如下:#gunzip–cdb2_v9_ese_aix.tar.gz|tar–xvf–…..#cdese_t/disk1#./installFixPack–f–b$DB2HOME34Theforceoption-fisusedtoforcetheinstallation...DBI1017IinstallFixPackisupdatingtheDB2product(s)installedinlocation/db2_home/IBM/db2/V9.1.DB2HOME是已安装DB2的目录,使用-f选项是强制升级安装,接下来就开始升级DB2的补丁包。也可使用db2setup启动图形界面来升级安装。DB2许可证的管理DB2产品安装可能会应用未经许可的DB2产品版本。要正确完整使用DB2的功能,必须对DB2产品注册正确的许可证密钥。在产品激活CD中提供了许可证密钥并且详细描述了许可证的注册过程。DB2的许可证管理是通过db2licm命令来进行的。查看DB2的许可证使用-g参数,来查看当前DB2的许可证使用情况,后面需要一个文件名,db2licm会写入此文件中,然后即可查看。db2licm-gdb2licmout.txt增加DB2的许可证使用-a参数来为DB2添加一个新的许可证。后面同样是文件名。dblicm-afilename.lic删除DB2的许可证使用-r参数来删除DB2的许可证卸载DB2在服务器上要卸载DB2的运行环境,具体步骤如下:删除所有数据库(可选)。可使用“控制中心”或dropdatabase命令删除数据库。当删除一个实例却没有首先删除数据库时,数据库文件在文件系统上保持完整。35停止DB2管理服务器.以dasusr1用户登录系统,使用db2adminstop来停止DB2管理服务器。除去管理服务器必须在除去DB2管理服务器(DAS)之后才能除去DB2产品,以root用户身份登录系统,运行DB2HOME/instance/dasdrop命令来移除db2的管理服务器。#cd/opt/IBM/DB2/V9.1/instance#./dasdropSQL4410WTheDB2AdministrationServerisnotactive.DBI1070IProgramdasdropcompletedsuccessfully.停止DB2实例。首先以root用户登录查看db2的实例名称列表,运行DB2HOME/bin/db2ilist命令,确认是否是要停止的db2实例名;然后再以db2inst1用户登录系统,运行db2stopforce来停止db2实例。除去DB2实例。以root用户身份登录系统,使用db2idrop命令来删除DB2的实例。#cd/opt/IBM/DB2/V9.1/instance#./db2idropdb2inst1(实例名)DBI1070IProgramdb2idropcompletedsuccessfully.36db2idrop命令从实例列表中除去实例条目,并除去INSTHOME/sqllib目录,其中INSTHOME是实例的主目录。如果将任何文件存储在sqllib目录中,则此操作将除去这些文件。如果仍需要这些文件,则必须在删除实例之前将它们复制一份。如果不再需要这些数据库,则在删除实例之前将这些数据库文件从系统中除去或者删除这些数据库,在实例删除后数据库文件保持完整。删除DB2实例用户和组(可选)如果打算重新安装DB2产品,可以不用删除DB2实例用户和组。如果确认不需要再使用db2数据库了,可以以root用户身份,删除DB2的实例用户和组。最后移除DB2产品。移除DB2是通过DB2HOME/db2_deinstall命令来完成,如果安装了DB2的文档中心,可以使用/DB2HOME/doc/install/doce_deinstall命令来删除。#cd/opt/IBM/DB2/V9.1/install#./db2_deinstall-aDBI1016IProgramdb2_deinstallisperforminguninstallation.Pleasewait.Theexecutioncompletedsuccessfully.FormoreinformationseetheDB2installationlogat3文字安装步骤要使用db2_install脚本安装DB2产品:1.作为具有root用户权限的用户登录。2.插入并装上适当的CD-ROM。3.在shell提示符处输入./db2_install命令来启动db2_install脚本。37可以在DB2版本8产品CD-ROM上的根目录中找到db2_install脚本。db2_install脚本将提示您输入下列其中一个关键字(这取决于您要安装的DB2产品):例如:db2.ESE。DB2软件的安装目录为:/usr/opt/db2_08_01(对于AIX)•实例所有者主目录是将在其中创建DB2实例的位置。•受防护的用户用来在DB2数据库使用的地址空间外部运行用户定义函数(UDF)和存储过程。•DB2管理服务器用户的用户标识用来在系统上运行DB2管理服务器。使用db2icrt创建实例DB2实例是一个环境,您在其中存储数据并运行应用程序。使用db2icrt命令来创建实例。先决条件必须具有root用户权限。要使用db2icrt创建实例:1.作为具有root用户权限的用户登录。2.运行db2icrt命令。例如:DB2DIR/instance/db2icrt-aAuthType-uFencedIDInstNameDB2DIR是DB2安装目录。在AIX上,DB2安装目录为/usr/opt/db2_08_01在所有其它基于UNIX的操作系统上,安装目录为/opt/IBM/db2/V8.1-aAuthType38表示实例的认证类型。AuthType可为SERVER、CLIENT、DCS、SERVER_ENCRYPT和DCS_ENCRYPT其中之一。SERVER是缺省值。此参数是可选的。-uFencedID表示将用来运行受防护用户定义函数(UDF)和受防护存储过程的用户的名称。若您正在DB2客户机上创建实例,则此标志不是必需的。指定您创建的受防护用户的名称。-s指定所创建的实例的类型-p用于指定实例概要文件路径。-u用于指定DB2服务的帐户名和密码。创建ese实例时需要此选项。-r用于指定当在MPP方式下运行时,分区数据库实例要使用的一系列TCP/IP端口。如果指定了此选项,则本地机器的services文件将更新为下列条目:DB2_InstNamebaseport/tcpDB2_InstName_1baseport+1/tcpDB2_InstName_2baseport+2/tcpDB2_InstName_ENDendport/tcp-w参数创建32位或64位实例的参数(db28以及以前版本,db29取消了该参数)InstName表示实例的名称。实例的名称必须与拥有实例的用户的名称相同。指定您创建的拥有实例的用户的名称。将在拥有实例的用户的主目录中创建该实例。例如,如果正在使用服务器认证,受防护用户为db2fenc1,并且拥有实例的用户为db2inst1,则使用以下命令以在AIX系统上创建实例:/usr/opt/db2_08_01/instance/db2icrt-aserver-udb2fenc1db2inst139在创建实例后,可能想要为健康监视配置通知。可以使用“健康中心”或CLP执行此任务。4创建nc数据库语句如下:CREATEDATABASENCTESTON'/BigData'USINGCODESETGBKTERRITORYCNCOLLATEUSINGSYSTEMCATALOGTABLESPACEMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/Catalogdata1'128000)USERTABLESPACEMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/Userdata1'512000)TEMPORARYTABLESPACEMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/Tempspace1'768000)注意:路径可以修改,GBK是建库的字符集。创建缓存池和表空间(NC5.02以前):connecttoNCTESTuserdb2inst1usingdb2inst1CREATEBufferpoolNCUSED4SIZE102400PAGESIZE4KCREATEBufferpoolNCUSED16SIZE38400PAGESIZE16K40CREATEREGULARTABLESPACENNC_DATA01PAGESIZE16KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/nnc_data01'204800)EXTENTSIZE8OVERHEAD24.1PREFETCHSIZE8TRANSFERRATE0.9BUFFERPOOLNCUSED16CREATEREGULARTABLESPACENNC_INDEX01PAGESIZE4KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/nnc_index01'204800)EXTENTSIZE32OVERHEAD24.1PREFETCHSIZE32TRANSFERRATE0.9BUFFERPOOLNCUSED4CREATEREGULARTABLESPACENNC_DATA02PAGESIZE16KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/nnc_data02'20480)EXTENTSIZE8OVERHEAD24.1PREFETCHSIZE8TRANSFERRATE0.9BUFFERPOOLNCUSED16CREATEREGULARTABLESPACENNC_INDEX02PAGESIZE4KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/nnc_index02'40960)EXTENTSIZE32OVERHEAD24.1PREFETCHSIZE32TRANSFERRATE0.9BUFFERPOOLNCUSED4CREATEREGULARTABLESPACENNC_DATA03PAGESIZE16KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/nnc_data03'204800)EXTENTSIZE8OVERHEAD24.1PREFETCHSIZE8TRANSFERRATE0.9BUFFERPOOLNCUSED16CREATEREGULARTABLESPACENNC_INDEX03PAGESIZE4KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/nnc_index03'204800)EXTENTSIZE32OVERHEAD24.1PREFETCHSIZE32TRANSFERRATE0.9BUFFERPOOLNCUSED4CREATEUSERTEMPORARYTABLESPACEUSERTEMPPAGESIZE4KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/Usertemp1'2560000)EXTENTSIZE64OVERHEAD10.67PREFETCHSIZE64TRANSFERRATE0.04BUFFERPOOLNCUSED441CREATESYSTEMTEMPORARYTABLESPACETEMPSPACE2PAGESIZE16KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/Tempspace2'192000)EXTENTSIZE32OVERHEAD10.67PREFETCHSIZE32TRANSFERRATE0.04BUFFERPOOLNCUSED16建立nc50用户并授权:GRANTDBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECTONDATABASETOUSERdb2inst1;GRANTUSEOFTABLESPACENNC_DATA01TOUSERnc50WITHGRANTOPTION;GRANTUSEOFTABLESPACENNC_DATA02TOUSERnc50WITHGRANTOPTION;GRANTUSEOFTABLESPACENNC_DATA03TOUSERnc50WITHGRANTOPTION;GRANTUSEOFTABLESPACENNC_INDEX01TOUSERnc50WITHGRANTOPTION;GRANTUSEOFTABLESPACENNC_INDEX02TOUSERnc50WITHGRANTOPTION;GRANTUSEOFTABLESPACENNC_INDEX03TOUSERnc50WITHGRANTOPTION;GRANTUSEOFTABLESPACEUSERTEMPTOUSERnc50WITHGRANTOPTION;CONNECTRESET;创建缓存池和表空间(NC5.02):CREATEDATABASENCTESTON'/BigData'USINGCODESETGBKTERRITORYCNCOLLATEUSINGSYSTEMCATALOGTABLESPACEMANAGEDBYDATABASEUSING42(FILE'/BigData/NCTEST/Catalogdata1'128000)USERTABLESPACEMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/Userdata1'512000)TEMPORARYTABLESPACEMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/Tempspace1'768000)connecttoNCTESTuserdb2inst1usingdb2inst1CREATEBufferpoolNCUSED4SIZE102400PAGESIZE4KCREATEBufferpoolNCUSED16SIZE38400PAGESIZE16KCREATEBUFFERPOOLNCTMPUSED16SIZE38400PAGESIZE16KCREATEREGULARTABLESPACENNC_DATA01PAGESIZE16KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/nnc_data01'204800)EXTENTSIZE8OVERHEAD24.1PREFETCHSIZE8TRANSFERRATE0.9BUFFERPOOLNCUSED16CREATEREGULARTABLESPACENNC_INDEX01PAGESIZE4KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/nnc_index01'204800)EXTENTSIZE32OVERHEAD24.1PREFETCHSIZE32TRANSFERRATE0.9BUFFERPOOLNCUSED4CREATEREGULARTABLESPACENNC_DATA02PAGESIZE16KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/nnc_data02'20480)EXTENTSIZE8OVERHEAD24.1PREFETCHSIZE8TRANSFERRATE0.9BUFFERPOOLNCUSED1643CREATEREGULARTABLESPACENNC_INDEX02PAGESIZE4KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/nnc_index02'40960)EXTENTSIZE32OVERHEAD24.1PREFETCHSIZE32TRANSFERRATE0.9BUFFERPOOLNCUSED4CREATEREGULARTABLESPACENNC_DATA03PAGESIZE16KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/nnc_data03'204800)EXTENTSIZE8OVERHEAD24.1PREFETCHSIZE8TRANSFERRATE0.9BUFFERPOOLNCUSED16CREATEREGULARTABLESPACENNC_INDEX03PAGESIZE4KMANAGEDBYDATABASEUSING(FILE'/BigData/NCTEST/nnc_index03'204800)EXTENTSIZE32OVERHEAD24.1PREFETCHSIZE32TRANSFERRATE0.9BUFFERPOOLNCUSED4CREATEUSERTEMPORARYTABLESPACEUSERTEMPPAGESIZE16KMANAGEDBYSYSTEMUSING('/BigData/NCTEST/Usertemp1')EXTENTSIZE32OVERHEAD10.67PREFETCHSIZE32TRANSFERRATE0.04BUFFERPOOLNCTMPUSED16CREATESYSTEMTEMPORARYTABLESPACETEMPSPACE2PAGESIZE16KMANAGEDBYSYSTEMUSING('/BigData/NCTEST/Tempspace2')EXTENTSIZE32OVERHEAD10.67PREFETCHSIZE32TRANSFERRATE0.04BUFFERPOOLNCTMPUSED16GRANTDBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADMONDATABASETOUSERdb2inst1;GRANTDBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEM44A,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADMONDATABASETOUSERdb2inst1;GRANTUSEOFTABLESPACENNC_DATA01TOUSERdb2inst1WITHGRANTOPTION;GRANTUSEOFTABLESPACENNC_DATA02TOUSERdb2inst1WITHGRANTOPTION;GRANTUSEOFTABLESPACENNC_DATA03TOUSERdb2inst1WITHGRANTOPTION;GRANTUSEOFTABLESPACENNC_INDEX01TOUSERdb2inst1WITHGRANTOPTION;GRANTUSEOFTABLESPACENNC_INDEX02TOUSERdb2inst1WITHGRANTOPTION;GRANTUSEOFTABLESPACENNC_INDEX03TOUSERdb2inst1WITHGRANTOPTION;GRANTUSEOFTABLESPACEUSERTEMPTOUSERdb2inst1WITHGRANTOPTION;CONNECTRESET;Db2性能查看以及优化脚本:1统计信息分析分析单张表:db2runstatsontablenc50.gl_detailwithdistributionanddetailedindexesall分析整个用户下面所有表:db2"connecttoNC50userdb2inst1usingdb2inst1"45db2"reorgchkupdatestatisticsontableall"2db2执行计划文件来显示执行计划:1.如果第一次执行,请先connecttodbname,执行db2-tvf$HOME/sqllib/misc/EXPLAIN.DDL建立执行计划表2.db2setcurrentexplainmodeexplain设置成解释模式,并不真正执行下面将发出的sql命令3.db2"selectcount(*)fromstaff"执行你想要分析的sql语句4.db2setcurrentexplainmodeno取消解释模式5.db2exfmt-dsample-gTIC-w-l-s%-n%-odb2exmt.out执行计划输出到文件db2exmt.out6.查看输出文件分析sql的运行开销。定时执行计划任务:1.操作系统定时任务执行,通过windows的计划任务和unix的crontab来配置执行。2.通过db2的任务中心来执行,如图:463db2的监视器为了管理所有方面,包括性能,首先必须能够对之进行测量。DB2UDBonLinux、UNIX和Windows包括了很多用来测量性能和跟踪系统活动的工具。这些工具允许根据数据库管理员(DBA)、应用程序开发人员和系统管理员所需的任何级别的粒度来测量活动。监视器的类型47为了帮助实现这些监控目标,DB2提供了两种类型的监视器:快照监视器和事件监视器。快照监视器显示给定时间点上的活动。您可以将它看成是系统活动的一张图片。这样您便可以看到是什么应用程序正连接到数据库,还可以诊断锁问题,并允许查看缓冲池、表空间和表的使用情况,以及正在执行的语句。如果保存历史数据,并不时地比较快照,那么快照监视器会变得更加有用。事件监视器与快照不同,它可以捕捉一段时间内您所感兴趣的特定范围内所发生的所有事情。事件监视器不只是拍一张快照,可以将它看作是一部电影,这部电影可以捕捉随时间流逝而发生的事情。在很多事件的开始和结束,DB2都会产生事件记录。虽然当一个问题发生时,快照是最为有用的,但是,对于跟踪系统历史使用情况,例如系统chargeback、资源规划和趋势分析,事件是最精确的。在DB2Version8中,由于可以直接将事件监视器写入DB2表中,并且可以使用快照表功能将快照存储到DB2表中,因此保存历史信息变得更加容易。Db2使用方法:要使用快照监视器,首先必须使用以下命令将监视器开关打开:db2updatemonitorswitchesusingbufferpoolonlockonsortonstatementontableonuowon也可以在数据库管理器配置中控制监视器开关,不过,对于表监视器开关存在一个例外,因为您必须总是使用上述命令来启动它。48要检查监视器开关的状态,可以使用GetMonitorSwitches命令:取决于DB2的版本,输出会稍有不同下面的表展示了用来打开一个快照监视器的命令,以及所收集的信息的类型:监视器开关收集的信息打开监视器的命令BufferPool缓冲池使用情况统计信息updatemonitorswitchesusingBUFFERPOOLonLockInfo已经出现的锁和死锁的数量updatemonitorswitchesusingLOCKonSortInfo排序溢出,排序的数量updatemonitorswitchesusingSORTonStatement查看DB2服务器上当前在运行的SQL语句(这对于发现长时间运行的语句很有用)updatemonitorswitchesusingSTATEMENTonTableActivity读和写使用情况统计信息updatemonitorswitchesusingTABLEonTimestampInfo时间戳信息(很多快照功能都需要该信息)updatemonitorswitchesusingTIMESTAMPonUnitofWork在开始和停止时所包括的工作单元updatemonitorswitchesusingUOW49的统计信息及状态on一旦打开了开关,便可以查看已经提供的数据。要查看一个快照,可以使用GETSNAPSHOT命令。图3展示了可以用来查看DB2内部状态的命令:快照命令BufferPooldb2getsnapshotforbufferpoolsondatabase_nameLocksdb2getsnapshotforlocksondatabase_nameDynamicSQLdb2getsnapshotfordynamicsqlondatabase_nameTableActivitydb2getsnapshotfortablesondatabase_nameApplicationsdb2getsnapshotforapplicationsondatabase_nameTablespacedb2getsnapshotfortablespacesondatabase_nameDatabasedb2getsnapshotfordatabaseondatabase_nameDatabaseManagerdb2getsnapshotforDBM注解:通常,打开快照开关所导致的开销非常小,因为在内部,大部分数据已经在DB2中。但通常,您只需打开语句开关和锁开关。因为工作负载的缘故,如果将所有开关打开,则可能招致2%到5%的额外开销。504语句查询getsnapshotforlocksondbname确定那些对象被锁了(主看是那些表)getsnapshotfordynamicsqlondbname查看数据库执行的sql语句用SQL语句实现DB2主要指标的监控--Databasemanager:Tocaptureasnapshotofdatabasemanagerinformation:SELECT*FROMTABLE(SNAPSHOT_DBM(-1))asSNAPSHOT_DBMSNAPSHOT_DBM数据库管理器信息。--Database:Tocaptureasnapshotofdatabaseinformation:SELECT*FROMTABLE(SNAPSHOT_DATABASE('SAMPLE',-1))asSNAPSHOT_DATABASESNAPSHOT_DATABASE数据库信息。只有当至少有一个应用程序连接至数据库时,才会返回信息。51--Application:Tocaptureasnapshotofapplicationinformation:SELECT*FROMTABLE(SNAPSHOT_APPL('SAMPLE',-1))asSNAPSHOT_APPLSNAPSHOT_APPL连接至分区上数据库的应用程序上有关锁等待的应用程序信息。这包括累积计数器、状态信息和最近执行的SQL语句(如果设置了语句监视器开关)。--Tocaptureasnapshotofapplicationidentificationinformation:Chapter3.UsingtheSnapshotMonitor23SELECT*FROMTABLE(SNAPSHOT_APPL_INFO('SAMPLE',-1))asSNAPSHOT_APPL_INFOSNAPSHOT_APPL_INFO每个连接至分区上数据库的应用程序的常规应用程序标识信息。--Tocaptureasnapshotoflockwaitinformation:SELECT*FROMTABLE(SNAPSHOT_LOCKWAIT('SAMPLE',-1))asSNAPSHOT_LOCKWAITSNAPSHOT_LOCKWAIT有关锁等待连接至分区上数据库的应用程序的应用程序信息。--Tocaptureasnapshotofstatementinformation:SELECT*FROMTABLE(SNAPSHOT_STATEMENT('SAMPLE',-1))asSNAPSHOT_STATEMENTSNAPSHOT_STATEMENT有关连接至分区上数据库的应用程序的语句的应用程序信息。这包括最近执行的SQL语句(如果设置了语句监视器开关)。52--Bufferpool:Tocaptureasnapshotofbufferpoolinformation:SELECT*FROMTABLE(SNAPSHOT_BP('SAMPLE',-1))asSNAPSHOT_BPSNAPSHOT_BP指定数据库的缓冲池活动计数器。需要缓冲池监视器开关。--Tablespace:Tocaptureasnapshotoftablespaceinformation:SELECT*FROMTABLE(SNAPSHOT_TBS('SAMPLE',-1))asSNAPSHOT_TBSSNAPSHOT_TBS数据库级别上的表空间活动信息、每个连接至数据库的应用程序在应用程序级别上的表空间活动信息以及连接至数据库的应用程序已访问过的每个表空间在表空间级别上的表空间活动信息。需要缓冲池监视器开关。--Table:Tocaptureasnapshotoftableinformation:SELECT*FROMTABLE(SNAPSHOT_TABLE('SAMPLE',-1))asSNAPSHOT_TABLESNAPSHOT_TABLE连接至数据库的应用程序所访问的每个表的表活动信息。需要表监视器开关。--Lock:Tocaptureasnapshotoflockinformation:SELECT*FROMTABLE(SNAPSHOT_LOCK('SAMPLE',-1))asSNAPSHOT_LOCKSNAPSHOT_LOCK数据库级别上的锁信息,以及每个连接至数据库的应用程序在应用程序级别上的锁信息。需要锁监视器开关。53--DynamicSQLcache:TocaptureasnapshotofdynamicSQLstatementcacheinformation:Snapshotmonitor24SystemMonitorGuideandReferenceSELECT*FROMTABLE(SNAPSHOT_DYN_SQL('SAMPLE',-1))asSNAPSHOT_DYN_SQLSNAPSHOT_DYN_SQL来自用于数据库的SQL语句高速缓存的某个时间点语句信息。