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、对表和索引进行RUNSTATS (25)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、检查许可证(L ICENSE)安装情况 (30)6、创建数据库前调整好系统时间 (30)7、不要随便执行CHOWN (CHMOD)–R(UNIX/L INUX) (30)8、在归档日志模式下使用LOAD记得加NONRECOVERABLE参数 (31)六、附:以脱机方式重组表 (31)七、附:索引重组 (32)八、收集和更新统计信息的准则 (35)九、附:使用CLP 捕获数据库运行状况快照 (39)十、IBM DB2 日常维护汇总 (41)十一、DB2常用命令集 (51)一、DB2入门-数据库实例在本文中,我使用DB2 来指代DB2 通用数据库V8.1 for UNIX、Linux 和Windows。
在DB2 中,实例提供了独立的环境,可在其中创建数据库对象并针对这些对象运行应用程序。
由于这些环境是独立的,所以两个或更多的单独实例的对象可以有相同的名称。
在图1中,有一个名为“MYDB2”的数据库,它与实例“DB2”相关;还有一个同名的数据库,但它与实例“MyInst”相关。
实例允许用户具有用于生产、测试和开发目的的不同环境。
以下是一些与实例相关的命令:通过从命令行处理器(CLP)发出下列命令来显式地创建实例:db2icrt <instance name>在Windows 平台上首次安装DB2 时,缺省情况下会创建一个称为“DB2”的实例。
在UNIX 环境中,如果您选择创建实例,那么缺省的实例名称为“db2inst1”。
要删除实例,请使用这条命令:db2idrop <instance name>要启动实例,请使用这条命令:db2start要停止实例,请使用这条命令:db2stop创建了实例后,就会生成到DB2 代码的链接。
对于图1中的示例而言,已创建了实例“DB2”和实例“MyInst”,两者都链接至同一段DB2 代码。
V8 之前,曾有两种实例类型:“DB2”类型和“DAS”类型。
V8 中已经除去了DAS 类型的实例;它的功能已经被作为服务器进程集成到产品中了。
和许多其它关系数据库管理系统(RDBMS)一样,DB2 使用不同的机制来管理、监视和控制DB2 系统的行为。
这些机制包括:环境变量环境变量是在操作系统级别上定义的变量。
例如,在Windows 2000® 平台中,您可以为一个变量创建新的项,或者通过选择Control Panel --> System --> Advanced Tab --> Environment Variables 来编辑现有变量的值。
在UNIX 中,您通常可以将安装了DB2 之后所提供的脚本db2profile (Bourne 或Korn shell)或db2cshrc (C shell)添加到.login 或.profile UNIX 初始化文件中。
db2profile/db2cshrc 文件包含了“export”UNIX 命令,这些命令能确保每次调用shell 时就传递一个UNIX 环境变量。
最常使用的DB2 环境变量是“DB2INSTANCE”变量。
该环境变量允许您指定当前活动实例,所有命令都将应用于该实例。
对于本例而言,如果将DB2INSTANCE 设置成“MyInst”,那么发出命令“createdatabase mydb ”会创建出与实例“MyInst”相关的数据库。
但是如果您想创建与实例“DB2”相关的该数据库,那么首先您必须将DB2INSTANCE 变量的值更改成“DB2”。
使用控制面板(在Windows 中)/db2profile(在UNIX 中)来设置环境变量的值,将保证您下次打开窗口/会话时该值不变;但是,如果您想在给定的窗口/会话中临时更改该值,那么在Windows 中您可以使用操作系统的“set ”命令,或者在UNIX 中使用“export”命令。
例如,在Windows 平台中,下面这个命令:set DB2INSTANCE=DB2会将环境变量DB2INSTANCE 的值设置成“DB2”。
使用set 命令时常犯的错误是在等号(=)前后留有空格。
绝对不能有空格!要查看该变量的当前设置,您可以使用下面三个方法中的任何一个:echo %DB2INSTANCE% (Windows only)set DB2INSTANCEdb2 get instance要获取系统中您可以执行的所有可用实例的列表,请发出下面这个命令:db2ilistDB2 概要注册表在Windows 平台上使用DB2 时,单词“注册表(Registry)”的使用往往会造成混淆。
DB2 概要注册表(Profile Registry)变量与Windows 注册表变量没有任何关系。
过去,对某些环境变量进行更改时,会要求用户重新引导机器。
如果所有DB2 变量都已被定义成环境变量,那么对变量值进行更改将会很麻烦。
因此,当时决定将大多数DB2 变量组成一个专门的DB2 注册表,在其中进行更改无需重新引导机器。
DB2 概要注册表分成四类;但是下面这两个是最常用的:DB2 全局级概要注册表(Global-Level Profile Registry)DB2 实例级概要注册表(Instance-Level Profile Registry)两者的主要区别(您从它们的名称就可以看出)是变量适用的级别。
全局级概要注册表变量的值适用于所有实例。
因此,可以从图中看到,该注册表画在了两个实例框的外面。
实例级概要注册表变量的值适用于特定的实例。
因此,您可以看到图中那两个实例每个内部都有单独的“Instance-Level Profile Registry”框。
要查看所设置的当前注册表变量,请从CLP 发出下面这个命令:db2set -all您可能会得到类似下面这样的输出:[i] DB2INSTPROF=C:\PROGRAM FILES\SQLLIB[g] DB2SYSTEM=RAULCHONG正如您可能已经猜测到的那样,[i] 表明该变量是在实例级上定义的,而[g] 表明它是在全局级上定义的。
以下是一些与变量相关的命令:要查看可以在DB2 中进行定义的所有注册表变量,请使用这个命令:db2set -lr要在全局级上设置特定变量(在这个示例中为DB2INSTPROF )的值,请使用:db2set DB2INSTPROF="C:\PROGRAM FILES\SQLLIB" -g要在实例级上为实例“MyInst”设置变量,请使用:db2set DB2INSTPROF="C:\MY FILES\SQLLIB" -i MyInst请注意上面的示例,在两个级别(实例级和全局级)上设置了同一个变量。
当注册表变量在不同级别上进行定义时,DB2 总是会选择最低级别的值;在本例中,它将选择实例级的值。
db2set 命令和前一节中的set 命令一样,等号(=)前后不该留有空格。
某些注册表变量为了使更改生效,要求您停止和启动实例(db2stop/db2start )。
另一些注册表变量则没有这个需求。
为了安全起见,建议您在对注册表变量作了更改后总是停止和启动实例。
配置参数配置参数是在两个不同的级别(实例级和数据库级)上定义的。
每个级别上的变量都是不同的(不象注册表变量那样可以在不同级别上定义相同的变量)。
在实例级上,变量被存储在数据库管理器配置文件(dbm cfg)中;对这些变量所作的更改会影响与该实例相关的“所有”数据库,这就是图中显示了dbm cfg 框(每个实例定义了一个),并且该框都显示在数据库框外面的原因。
以下是一些与配置参数相关的命令:要从CLP 查看dbm cfg 的内容,请发出下面这个命令:db2 get dbm cfg要更新特定变量的值,请发出下面这个命令:db2 update dbm cfg using <parameter> <value>例如:db2 update dbm cfg using INTRA_PARALLEL YESV8 之前,对“所有”dbm cfg 变量所作的更改都要求您停止和启动实例(db2stop/db2start )。
现在,V8 中有大约40%的参数是“可联机配置的”参数;也就是说,不再需要停止和启动实例了。
请参考“DB2 V8 管理指南(DB2 V8 Administration Guide)”以获取更多详细信息。
在数据库级别上,变量被存储在数据库配置文件(db cfg)中;对这些变量所作的更改会影响特定的数据库。
从图1中,您可以看到每个定义的数据库内部都有一个db cfg 框。
要查看db cfg 的内容,请从CLP 发出下面这个命令:db2 get db cfg for <dbname>例如:db2 get db cfg for mydb1要更新特定变量的值,请发出下面这个命令:db2 update db cfg for <dbname> using <parameter> <value>例如:db2 update db cfg for mydb1 using MINCOMMIT 3V8 之前,对“所有”db cfg 变量进行更改都要求您断开与该数据库的所有连接;然后,在进行第一个新连接时,这些更改将生效。
V8 中有大约50%的参数可以进行联机配置;也就是说,无需为了使更改生效而断开到数据库的所有连接。