DB2最新维护手册.docx
- 文档编号:8120932
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:33
- 大小:41.08KB
DB2最新维护手册.docx
《DB2最新维护手册.docx》由会员分享,可在线阅读,更多相关《DB2最新维护手册.docx(33页珍藏版)》请在冰豆网上搜索。
DB2最新维护手册
DB2维护手册
目录
DB2维护手册1
一、DB2入门-数据库实例5
二、DB2日常维护日操作20
1、检查管理服务器是否启动21
2、检查DB2实例是否已经启动21
3、查看表空间状态是否正常21
4、查看表的状态22
5、查看磁盘空间23
6、检查存储管理软件是否正常23
7、检查数据库备份是否正常24
8、检查归档日志是否正确归档了24
9、查看缓冲池的命中率24
10、查看当前运行最频繁的SQL,其命中率是否正常24
11、查看当前连接的应用程序,有没有非法连接25
12、检查有没有死锁25
13、对表和索引进行runstats25
14、检查表是否需要重组25
15、对需要重组的表进行重组26
三、DB2日常维护月操作27
1、查看DB2日志27
2、检查备份和日志是否都保存好了27
四、DB2日常维护季度操作27
1、通过快照监控器,查看系统性能如何27
2、数据库补丁级别28
五、注意事项28
1、不要删除活动日志文件28
2、注意交易日志存储空间28
3、按照系统的实际工作量配置日志空间29
4、设置正确数据库代码页29
5、检查许可证(License)安装情况30
6、创建数据库前调整好系统时间30
7、不要随便执行chown(chmod)–R(UNIX/Linux)30
8、在归档日志模式下使用LOAD记得加NONRECOVERABLE参数31
六、附:
以脱机方式重组表31
七、附:
索引重组32
八、收集和更新统计信息的准则35
九、附:
使用CLP捕获数据库运行状况快照39
十、IBMDB2日常维护汇总41
十一、DB2常用命令集51
一、
DB2入门-数据库实例
在本文中,我使用DB2来指代DB2通用数据库V8.1forUNIX、Linux和Windows。
在DB2中,实例提供了独立的环境,可在其中创建数据库对象并针对这些对象运行应用程序。
由于这些环境是独立的,所以两个或更多的单独实例的对象可以有相同的名称。
在图1中,有一个名为“MYDB2”的数据库,它与实例“DB2”相关;还有一个同名的数据库,但它与实例“MyInst”相关。
实例允许用户具有用于生产、测试和开发目的的不同环境。
以下是一些与实例相关的命令:
通过从命令行处理器(CLP)发出下列命令来显式地创建实例:
db2icrt
在Windows平台上首次安装DB2时,缺省情况下会创建一个称为“DB2”的实例。
在UNIX环境中,如果您选择创建实例,那么缺省的实例名称为“db2inst1”。
要删除实例,请使用这条命令:
db2idrop
要启动实例,请使用这条命令:
db2start
要停止实例,请使用这条命令:
db2stop
创建了实例后,就会生成到DB2代码的链接。
对于图1中的示例而言,已创建了实例“DB2”和实例“MyInst”,两者都链接至同一段DB2代码。
V8之前,曾有两种实例类型:
“DB2”类型和“DAS”类型。
V8中已经除去了DAS类型的实例;它的功能已经被作为服务器进程集成到产品中了。
和许多其它关系数据库管理系统(RDBMS)一样,DB2使用不同的机制来管理、监视和控制DB2系统的行为。
这些机制包括:
环境变量
环境变量是在操作系统级别上定义的变量。
例如,在Windows2000®平台中,您可以为一个变量创建新的项,或者通过选择ControlPanel-->System-->AdvancedTab-->EnvironmentVariables来编辑现有变量的值。
在UNIX中,您通常可以将安装了DB2之后所提供的脚本db2profile(Bourne或Kornshell)或db2cshrc(Cshell)添加到.login或.profileUNIX初始化文件中。
db2profile/db2cshrc文件包含了“export”UNIX命令,这些命令能确保每次调用shell时就传递一个UNIX环境变量。
最常使用的DB2环境变量是“DB2INSTANCE”变量。
该环境变量允许您指定当前活动实例,所有命令都将应用于该实例。
对于本例而言,如果将DB2INSTANCE设置成“MyInst”,那么发出命令“createdatabasemydb”会创建出与实例“MyInst”相关的数据库。
但是如果您想创建与实例“DB2”相关的该数据库,那么首先您必须将DB2INSTANCE变量的值更改成“DB2”。
使用控制面板(在Windows中)/db2profile(在UNIX中)来设置环境变量的值,将保证您下次打开窗口/会话时该值不变;但是,如果您想在给定的窗口/会话中临时更改该值,那么在Windows中您可以使用操作系统的“set”命令,或者在UNIX中使用“export”命令。
例如,在Windows平台中,下面这个命令:
setDB2INSTANCE=DB2
会将环境变量DB2INSTANCE的值设置成“DB2”。
使用set命令时常犯的错误是在等号(=)前后留有空格。
绝对不能有空格!
要查看该变量的当前设置,您可以使用下面三个方法中的任何一个:
echo%DB2INSTANCE% (Windowsonly)
setDB2INSTANCE
db2getinstance
要获取系统中您可以执行的所有可用实例的列表,请发出下面这个命令:
db2ilist
DB2概要注册表
在Windows平台上使用DB2时,单词“注册表(Registry)”的使用往往会造成混淆。
DB2概要注册表(ProfileRegistry)变量与Windows注册表变量没有任何关系。
过去,对某些环境变量进行更改时,会要求用户重新引导机器。
如果所有DB2变量都已被定义成环境变量,那么对变量值进行更改将会很麻烦。
因此,当时决定将大多数DB2变量组成一个专门的DB2注册表,在其中进行更改无需重新引导机器。
DB2概要注册表分成四类;但是下面这两个是最常用的:
DB2全局级概要注册表(Global-LevelProfileRegistry)
DB2实例级概要注册表(Instance-LevelProfileRegistry)
两者的主要区别(您从它们的名称就可以看出)是变量适用的级别。
全局级概要注册表变量的值适用于所有实例。
因此,可以从图中看到,该注册表画在了两个实例框的外面。
实例级概要注册表变量的值适用于特定的实例。
因此,您可以看到图中那两个实例每个内部都有单独的“Instance-LevelProfileRegistry”框。
要查看所设置的当前注册表变量,请从CLP发出下面这个命令:
db2set-all
您可能会得到类似下面这样的输出:
[i]DB2INSTPROF=C:
\PROGRAMFILES\SQLLIB
[g]DB2SYSTEM=RAULCHONG
正如您可能已经猜测到的那样,[i]表明该变量是在实例级上定义的,而[g]表明它是在全局级上定义的。
以下是一些与变量相关的命令:
要查看可以在DB2中进行定义的所有注册表变量,请使用这个命令:
db2set-lr
要在全局级上设置特定变量(在这个示例中为DB2INSTPROF)的值,请使用:
db2setDB2INSTPROF="C:
\PROGRAMFILES\SQLLIB"-g
要在实例级上为实例“MyInst”设置变量,请使用:
db2setDB2INSTPROF="C:
\MYFILES\SQLLIB" -iMyInst
请注意上面的示例,在两个级别(实例级和全局级)上设置了同一个变量。
当注册表变量在不同级别上进行定义时,DB2总是会选择最低级别的值;在本例中,它将选择实例级的值。
db2set命令和前一节中的set命令一样,等号(=)前后不该留有空格。
某些注册表变量为了使更改生效,要求您停止和启动实例(db2stop/db2start)。
另一些注册表变量则没有这个需求。
为了安全起见,建议您在对注册表变量作了更改后总是停止和启动实例。
配置参数
配置参数是在两个不同的级别(实例级和数据库级)上定义的。
每个级别上的变量都是不同的(不象注册表变量那样可以在不同级别上定义相同的变量)。
在实例级上,变量被存储在数据库管理器配置文件(dbmcfg)中;对这些变量所作的更改会影响与该实例相关的“所有”数据库,这就是图中显示了dbmcfg框(每个实例定义了一个),并且该框都显示在数据库框外面的原因。
以下是一些与配置参数相关的命令:
要从CLP查看dbmcfg的内容,请发出下面这个命令:
db2getdbmcfg
要更新特定变量的值,请发出下面这个命令:
db2updatedbmcfgusing
例如:
db2updatedbmcfgusingINTRA_PARALLELYES
V8之前,对“所有”dbmcfg变量所作的更改都要求您停止和启动实例(db2stop/db2start)。
现在,V8中有大约40%的参数是“可联机配置的”参数;也就是说,不再需要停止和启动实例了。
请参考“DB2V8管理指南(DB2V8AdministrationGuide)”以获取更多详细信息。
在数据库级别上,变量被存储在数据库配置文件(dbcfg)中;对这些变量所作的更改会影响特定的数据库。
从图1中,您可以看到每个定义的数据库内部都有一个dbcfg框。
要查看dbcfg的内容,请从CLP发出下面这个命令:
db2getdbcfgfor
例如:
db2getdbcfgformydb1
要更新特定变量的值,请发出下面这个命令:
db2updatedbcfgfor
例如:
db2updatedbcfgformydb1usingMINCOMMIT3
V8之前,对“所有”dbcfg变量进行更改都要求您断开与该数据库的所有连接;然后,在进行第一个新连接时,这些更改将生效。
V8中有大约50%的参数可以进行联机配置;也就是说,无需为了使更改生效而断开到数据库的所有连接。
请参考“DB2V8管理指南(DB2V8AdministrationGuide)”以获取更多详细信息。
在DB2中,目录是存储有关数据库及其连接信息的二进制文件。
DB2中有四个如下所描述的主目录。
还包括了相应的建立连接的命令;但是,许多用户发现客户机配置助手GUI工具(ClientConfigurationAssistantGUITool)非常便于建立连通性。
系统数据库目录(或系统db目录)
系统数据库目录是主要的“目录(tableofcontents)”,它包含了有关可以从您的DB2系统进行连接的所有数据库的信息。
正如您可以从图1看到的那样,系统db目录是在实例级上进行存储的;因此,如果您打算删除一个实例,那么您应当考虑备份其内容。
要列出系统db目录的内容,请从CLP发出下面这个命令:
db2listdbdirectory
该命令输出中的任何项都包含单词“indirect”,这意味着:
该项适用于本地数据库(即,驻留在您当前正在使用的机器上的数据库)。
该项还会指向由“Databasedrive”项(在Windows中)或“Localdatabasedirectory”项(在UNIX中)所指示的本地数据库目录。
任何包含单词“Remote”的项都意味着:
该项适用于远程数据库(即,驻留在其它机器上而非您当前正在使用的机器上的数据库)。
该项还会指向由“Nodename”项所指示的节点目录项。
要将信息输入系统db目录,您需要使用catalog命令:
db2catalogdb
例如:
db2catalogdb mydb asyourdb atnode mynode
节点名是指向节点目录中某一项的指针。
在发出这条命令之前该项必须已经存在。
通常只有在将信息添加到远程数据库的系统db目录时才使用catalog命令。
对于本地数据库来说,在用createdatabase命令创建数据库之后就自动创建Catalog项。
本地数据库目录(或本地db目录)
本地数据库目录包含了有关本地数据库(即,驻留在您目前正在使用的机器上的数据库)的信息。
正如您可以从图1中看到的那样,本地数据库目录驻留在数据库结构内部。
注意从该图还可以看到没有专门的命令用于将信息输入到该目录中。
当您用createdatabase命令创建数据库时,在该目录中会添加一项。
要列出本地数据库目录的内容,请发出以下命令:
db2listdbdirectoryon
其中,可以从系统db目录相应项中的“Databasedrive”项(Windows中)或“Localdatabasedirectory”项(UNIX中)获取
节点目录
节点目录用于存储远程数据库的所有连通性信息。
V8仅支持TCPIP协议;因此,该目录中的大多数项将显示TCPIP信息,比如机器(其中包含了您想连接的数据库)的主机名或IP地址,还有相关的DB2实例的端口号。
下面是一些与节点目录相关的命令:
要列出节点目录的内容,请从CLP发出下面这个命令:
db2listnodedirectory
要将信息输入节点目录,请从CLP发出catalog命令:
db2 catalogtcpipnode
remote
server
例如:
db2 catalogtcpipnodemynode
remote9.26.138.35
server60000
要想得到您想要连接的远程实例的端口号,可以查看该实例的dbmcfg中的svcename参数来实现。
该值通常对应于TCP/IPservices文件中的某一项。
DCS目录
DCS目录包含了通常驻留在zSeries™(S/390®)或iSeries™(AS/400®)机器上的主机数据库的连通性信息。
您需要安装DB2Connect软件。
下面是一些命令:
要列出DCS目录的内容,请从CLP发出下面这个命令:
db2listdcsdirectory
要将信息输入DCS目录,请从CLP发出catalog命令:
db2catalogdcsdbas
例如:
db2catalogdcsdbasdb1g
数据库是与实例相关的封闭且独立的单元。
由于这个独立性,所以两个或更多的数据库的对象可以有相同的名称。
例如,图1显示了一个名为“MyTablespace1”的表空间,它位于与实例“DB2”相关的数据库“MYDB1”内部。
还有一个同名的表空间,它位于也与实例“DB2”相关的数据库“MYDB2”内部。
由于数据库是封闭单元,所以您不能执行涉及了两个不同数据库表的查询(除非您使用InformationIntegrator(II)/RelationalConnect,这已经超出本文的讨论范畴)。
例如,涉及数据库“MYDB1”中的“Table1”和数据库“MYDB2”中的“TableZ”的查询是不允许的。
数据库是用命令createdatabase创建的。
请注意,这被认为是一个命令,而非SQL语句。
当您创建数据库、表空间、日志和缓冲池时,会自动地创建配置文件,这就是完成该命令需要花费几秒钟的原因。
表空间是用作逻辑表和物理容器之间中间层的逻辑对象。
创建表空间时,您可以将它与特定的缓冲池(数据库高速缓存)以及特定的容器进行关联。
容器是物理存储数据的地方,可以分成文件、目录和原始设备等几类。
Catalog(SYSCATSPACE)、系统临时空间(TEMPSPACE1)和用户空间(USERSPACE1)都是表空间,并且都会在创建数据库时自动创建。
Catalog和系统临时空间都可以看作是系统结构,因为它们是数据库的正常操作所必需的。
Catalog包含了元数据(有关数据的数据)。
一些其它RDBMS把这个结构称作“数据字典”。
不要把这一节的术语“Catalog”和早先提到的catalog命令混淆起来;它们毫无关系。
系统临时表空间是数据库管理器执行操作(比如连接和排序)的工作区。
至少必须有一个系统临时表空间。
缺省情况下会创建USERSPACE1表空间,但是可以删除它。
它是用来存储用户表的缺省位置。
表是由行和列组成的无序的数据记录集。
索引是与表相关的有序指针集,用于性能目的并确保唯一性。
视频、音频和扫描文档等可以作为大对象(LOB)存储在数据库中。
表、索引和LOB驻留在表空间中。
日志是用于恢复目的的文件。
日志记录了对数据库进行的每个操作。
万一发生故障,在将数据库恢复到某个一致的点方面,日志就显得至关重要了。
缓冲池是一块内存区域,所有索引和数据页(除了LOB)都必须有序地经过该区域,从而进行处理。
它是数据库管理器所使用的主要高速缓存。
在数据库性能问题方面,缓冲池是进行调优的最重要的对象。
案例研究
既然您已经熟悉了DB2环境,那么让我们通过简单的案例研究来回顾一下本文中提到的所有概念:
DB2数据库管理员(DBA)由于突发的个人原因离开了公司,经理要您负责所有DB2系统。
这是您担任新DB2DBA的第一天,因而您想熟悉系统。
您登录到安装了DB2的开发机器(Windows2000),并打开CLP窗口。
下面是您要进行的步骤:
1. 首先,您想要知道该机器中有多少实例:
db2ilist
2. 然后,您想要知道当前哪个实例是活动的:
db2getinstance
3. 用db2ilist命令,您发现该机器上定义了两个实例-实例“DB2”和实例“MyInst”。
用db2getinstance命令,您发现“DB2”实例是当前的活动实例。
4. 现在您想要列出“MyInst”实例中的数据库。
由于这个实例不是当前的活动实例,所以您首先得在当前CLP窗口中临时切换到该实例:
setDB2INSTANCE=MyInst
5. 您再次发出db2getinstance,以查看MyInst现在是否是当前实例,然后为列出该实例中定义的数据库,请发出以下命令:
db2listdbdirectory
6. 该命令显示出该实例中只有一个数据库(MYDB2)。
您想试着创建一个新的数据库(您随后将删除它),为此您执行:
db2createdatabasetemporal
7. 数据库的创建需要花些时间,因为在缺省情况下会在数据库内部创建几个对象。
发出另一个db2listdbdirectory命令将会显示两个数据库:
“MYDB2”和“temporal”。
8. 连接至“MYDB2”数据库(db2connecttomydb2),并查看该数据库中有多少表(db2listtables)。
您还可以查看定义了多少表空间(db2listtablespaces)。
午餐时间到了,因此您决定把某些东西复原。
首先,您决定删除临时数据库。
当三秒钟掉电引起机器自动重新引导时,您正处于输入命令的过程中。
您并不担心DB2数据库状态,因为您知道DB2崩溃恢复会确保其前后一致;因此您在重新引导之后打开新的CLP窗口,接下来删除该数据库。
db2idropMyInst
啊呀!
出错了,您使用了错误的命令并删除了整个MyInst实例而不只是删除了数据库“temporal”。
您是否因此丢失了与实例“MyInst”相关的数据库“MYDB2”和“temporal”?
查看图1,您可能会觉得是丢失了;但是,情况并非如此。
删除实例时,您并未删除与之相关的数据库。
实例为您提供了链接DB2代码的环境,以便这些代码依据用户数据使用实例。
数据库被“关联”到实例。
但是安装DB2新版本时,您通常会将实例“升级”成新的代码版本;而数据库保持不变。
既然您已经镇定下来,知道并未丢失数据库,那么该开始思考db2idrop命令的工作原理。
通常,如果您的实例是活动的,那么该命令会给您一个警告。
然后您意识到重新引导机器后,实例“MyInst”并未自动启动,而“DB2”实例已经被配置成在引导机器后自动启动。
还有,打开新的CLP窗口时,db2instance环境变量的值被设置成“DB2”而不是“MyInst”,假设“DB2”是在机器的控制面板中为该环境变量指定的值。
既然您意识到了这一点,那么您该继续努力使一切恢复原样:
1. 首先,您需要再次创建实例MyInst:
db2icrtMyInst
3. 现在,切换到该实例(setDB2INSTANCE=MyInst)。
如果发出listdbdirectory命令,您会得到一个指出系统db目录不存在的错误。
如果看一下图1,您会明白:
第一次删除实例时,所有实例范围内的配置文件和目录也都被删掉了。
因此,实例级概要注册表、dbmcfg、系统db目录、节点目录和dcs目录都不见了。
创建实例时,也创建了带有缺省值的dbmcfg和实例级注册表。
庆幸的是,前任DBA存储了所有这些文件的内容备份。
他发出类似于下面这样的命令:
db2getdbmcfg>dbmcfg.bk
db2set-all>db2set.bk
db2listdbdirectory>systemdbdir.bk
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DB2 最新 维护 手册
![提示](https://static.bdocx.com/images/bang_tan.gif)