DB2最新维护手册_第1页
DB2最新维护手册_第2页
DB2最新维护手册_第3页
DB2最新维护手册_第4页
DB2最新维护手册_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DB2DB2 维护手册维护手册 目录 DB2DB2 维护手册维护手册.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、

2、检查有没有死锁.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、检查许可证(LICENSE)安装情况

3、.30 6、创建数据库前调整好系统时间.30 7、不要随便执行 CHOWN (CHMOD) R (UNIX/LINUX).30 8、在归档日志模式下使用 LOAD 记得加 NONRECOVERABLE 参数 .31 六、六、附:以脱机方式重组表附:以脱机方式重组表.31 七、七、附:索引重组附:索引重组.32 八、八、收集和更新统计信息的准则收集和更新统计信息的准则.35 九、九、附:使用附:使用 CLP 捕获数据库运行状况快照捕获数据库运行状况快照.39 十、十、IBM DB2 日常维护汇总日常维护汇总.41 十一、十一、DB2 常用命令集常用命令集.51 一、一、 DB2 入门入门-数据库

4、实例数据库实例 在本文中,我使用 DB2 来指代 DB2 通用数据库 V8.1 for UNIX、Linux 和 Windows。在 DB2 中,实例提供了独立的环境, 可在其中创建数据库对象并针对这些对象运行应用程序。由于这些 环境是独立的,所以两个或更多的单独实例的对象可以有相同的名 称。在 图 1 中,有一个名为“MYDB2”的数据库,它与实例 “DB2”相关;还有一个同名的数据库,但它与实例“MyInst”相 关。实例允许用户具有用于生产、测试和开发目的的不同环境。 以下是一些与实例相关的命令: 通过从命令行处理器(CLP)发出下列命令来显式地创建实例: db2icrt 在 Windo

5、ws 平台上首次安装 DB2 时,缺省情况下会创建一个称 为“DB2”的实例。在 UNIX 环境中,如果您选择创建实例,那么 缺省的实例名称为“db2inst1”。 要删除实例,请使用这条命令: db2idrop 要启动实例,请使用这条命令: db2start 要停止实例,请使用这条命令: db2stop 创建了实例后,就会生成到 DB2 代码的链接。对于 图 1 中的 示例而言,已创建了实例“DB2”和实例“MyInst”,两者都链接 至同一段 DB2 代码。 V8 之前,曾有两种实例类型:“DB2”类型和“DAS”类型。 V8 中已经除去了 DAS 类型的实例;它的功能已经被作为服务器 进

6、程集成到产品中了。 和许多其它关系数据库管理系统(RDBMS)一样,DB2 使用 不同的机制来管理、监视和控制 DB2 系统的行为。这些机制包括: 环境变量环境变量 环境变量是在操作系统级别上定义的变量。例如,在 Windows 2000 平台中,您可以为一个变量创建新的项,或者通过选择 Control Panel - System - Advanced Tab - Environment Variables 来编辑现有变量的值。在 UNIX 中,您通常可以将安装了 DB2 之 后所提供的脚本 db2profile (Bourne 或 Korn shell)或 db2cshrc (C shel

7、l)添加到 .login 或 .profile UNIX 初始化文件中。 db2profile/db2cshrc 文件包含了“export”UNIX 命令,这些命令能 确保每次调用 shell 时就传递一个 UNIX 环境变量。 最常使用的 DB2 环境变量是“DB2INSTANCE”变量。该环境变 量允许您指定当前活动实例,所有命令都将应用于该实例。对于本 例而言,如果将 DB2INSTANCE 设置成“MyInst”,那么发出命 令“ create database mydb ”会创建出与实例“MyInst”相关的数据 库。但是如果您想创建与实例“DB2”相关的该数据库,那么首先 您必须将

8、 DB2INSTANCE 变量的值更改成“DB2”。 使用控制面板(在 Windows 中)db2profile(在 UNIX 中)来设 置环境变量的值,将保证您下次打开窗口会话时该值不变;但是, 如果您想在给定的窗口会话中临时更改该值,那么在 Windows 中您可以使用操作系统的“ set ”命令,或者在 UNIX 中使用 “export”命令。例如,在 Windows 平台中,下面这个命令: set DB2INSTANCE=DB2 会将环境变量 DB2INSTANCE 的值设置成“DB2”。使用 set 命 令时常犯的错误是在等号(=)前后留有空格。绝对不能有空格! 要查看该变量的当前设

9、置,您可以使用下面三个方法中的任何一个: echo %DB2INSTANCE% (Windows only) set DB2INSTANCE db2 get instance 要获取系统中您可以执行的所有可用实例的列表,请发出下面这个 命令: db2ilist DB2 概要注册表概要注册表 在 Windows 平台上使用 DB2 时,单词“注册表(Registry)” 的使用往往会造成混淆。DB2 概要注册表(Profile Registry)变量 与 Windows 注册表变量没有任何关系。过去,对某些环境变量进 行更改时,会要求用户重新引导机器。如果所有 DB2 变量都已被 定义成环境变量

10、,那么对变量值进行更改将会很麻烦。因此,当时 决定将大多数 DB2 变量组成一个专门的 DB2 注册表,在其中进 行更改无需重新引导机器。 DB2 概要注册表分成四类;但是下面这两个是最常用的: DB2 全局级概要注册表(Global-Level Profile Registry) DB2 实例级概要注册表(Instance-Level Profile Registry) 两者的主要区别(您从它们的名称就可以看出)是变量适用的级别。 全局级概要注册表变量的值适用于所有实例。因此,可以从图中看 到,该注册表画在了两个实例框的外面。实例级概要注册表变量的 值适用于特定的实例。因此,您可以看到 图中

11、那两个实例每个内部 都有单独的“Instance-Level Profile Registry”框。 要查看所设置的当前注册表变量,请从 CLP 发出下面这个命令: db2set -all 您可能会得到类似下面这样的输出: i DB2INSTPROF=C:PROGRAM FILESSQLLIB g DB2SYSTEM=RAULCHONG 正如您可能已经猜测到的那样,i 表明该变量是在实例级上定义的, 而 g 表明它是在全局级上定义的。以下是一些与变量相关的命令: 要查看可以在 DB2 中进行定义的所有注册表变量,请使用这个命 令: db2set -lr 要在全局级上设置特定变量(在这个示例中为

12、 DB2INSTPROF ) 的值,请使用: db2set DB2INSTPROF=C:PROGRAM FILESSQLLIB -g 要在实例级上为实例“MyInst”设置变量,请使用: db2set DB2INSTPROF=C:MY FILESSQLLIB -i MyInst 请注意上面的示例,在两个级别(实例级和全局级)上设置了同一 个变量。当注册表变量在不同级别上进行定义时,DB2 总是会选择 最低级别的值;在本例中,它将选择实例级的值。 db2set 命令和前一节中的 set 命令一样,等号(=)前后不该留有 空格。 某些注册表变量为了使更改生效,要求您停止和启动实例( db2stop

13、/db2start )。另一些注册表变量则没有这个需求。为了安全 起见,建议您在对注册表变量作了更改后总是停止和启动实例。 配置参数配置参数 配置参数是在两个不同的级别(实例级和数据库级)上定义的。 每个级别上的变量都是不同的(不象注册表变量那样可以在不同级 别上定义相同的变量)。 在实例级上,变量被存储在数据库管理器配置文件(dbm cfg) 中;对这些变量所作的更改会影响与该实例相关的“所有”数据库, 这就是图中显示了 dbm cfg 框(每个实例定义了一个),并且该框 都显示在数据库框外面的原因。以下是一些与配置参数相关的命令: 要从 CLP 查看 dbm cfg 的内容,请发出下面这个

14、命令: db2 get dbm cfg 要更新特定变量的值,请发出下面这个命令: db2 update dbm cfg using 例如: db2 update dbm cfg using INTRA_PARALLEL YES V8 之前,对“所有”dbm cfg 变量所作的更改都要求您停止和启 动实例( db2stop/db2start )。现在,V8 中有大约 40的参数是 “可联机配置的”参数;也就是说,不再需要停止和启动实例了。 请参考“DB2 V8 管理指南(DB2 V8 Administration Guide)”以获 取更多详细信息。 在数据库级别上,变量被存储在数据库配置文件(

15、db cfg)中; 对这些变量所作的更改会影响特定的数据库。从 图 1 中,您可以 看到每个定义的数据库内部都有一个 db cfg 框。 要查看 db cfg 的内容,请从 CLP 发出下面这个命令: db2 get db cfg for 例如: db2 get db cfg for mydb1 要更新特定变量的值,请发出下面这个命令: db2 update db cfg for using 例如: db2 update db cfg for mydb1 using MINCOMMIT 3 V8 之前,对“所有”db cfg 变量进行更改都要求您断开与该数 据库的所有连接;然后,在进行第一个新

16、连接时,这些更改将生效。 V8 中有大约 50的参数可以进行联机配置;也就是说,无需为了 使更改生效而断开到数据库的所有连接。请参考“DB2 V8 管理指 南(DB2 V8 Administration Guide)”以获取更多详细信息。 在 DB2 中,目录是存储有关数据库及其连接信息的二进制文件。 DB2 中有四个如下所描述的主目录。还包括了相应的建立连接的命 令;但是,许多用户发现客户机配置助手 GUI 工具(Client Configuration Assistant GUI Tool)非常便于建立连通性。 系统数据库目录(或系统系统数据库目录(或系统 db 目录)目录) 系统数据库目

17、录是主要的“目录(table of contents)”,它包含 了有关可以从您的 DB2 系统进行连接的所有数据库的信息。正如 您可以从 图 1 看到的那样,系统 db 目录是在实例级上进行存储 的;因此,如果您打算删除一个实例,那么您应当考虑备份其内容。 要列出系统 db 目录的内容,请从 CLP 发出下面这个命令: db2 list db directory 该命令输出中的任何项都包含单词“indirect”,这意味着:该 项适用于本地数据库(即,驻留在您当前正在使用的机器上的数据 库)。该项还会指向由“Database drive”项(在 Windows 中)或 “Local data

18、base directory”项(在 UNIX 中)所指示的本地数据库 目录。 任何包含单词“Remote”的项都意味着:该项适用于远程数据 库(即,驻留在其它机器上而非您当前正在使用的机器上的数据库) 。该项还会指向由“Node name”项所指示的节点目录项。 要将信息输入系统 db 目录,您需要使用 catalog 命令: db2 catalog db as at node 例如: db2 catalog db mydb as yourdb at node mynode 节点名是指向节点目录中某一项的指针。在发出这条命令之前该项 必须已经存在。 通常只有在将信息添加到远程数据库的系统 d

19、b 目录时才使用 catalog 命令。对于本地数据库来说,在用 create database 命令创建 数据库之后就自动创建 Catalog 项。 本地数据库目录(或本地本地数据库目录(或本地 db 目录)目录) 本地数据库目录包含了有关本地数据库(即,驻留在您目前正 在使用的机器上的数据库)的信息。正如您可以从 图 1 中看到的 那样,本地数据库目录驻留在数据库结构内部。注意从该图还可以 看到没有专门的命令用于将信息输入到该目录中。当您用 create database 命令创建数据库时,在该目录中会添加一项。 要列出本地数据库目录的内容,请发出以下命令: db2 list db dir

20、ectory on 其中,可以从系统 db 目录相应项中的“Database drive”项 (Windows 中)或“Local database directory”项(UNIX 中)获取 。 节点目录节点目录 节点目录用于存储远程数据库的所有连通性信息。V8 仅支持 TCPIP 协议;因此,该目录中的大多数项将显示 TCPIP 信息,比 如机器(其中包含了您想连接的数据库)的主机名或 IP 地址,还 有相关的 DB2 实例的端口号。下面是一些与节点目录相关的命令: 要列出节点目录的内容,请从 CLP 发出下面这个命令: db2 list node directory 要将信息输入节点目录

21、,请从 CLP 发出 catalog 命令: db2 catalog tcpip node remote server 例如: db2 catalog tcpip node mynode remote 5 server 60000 要想得到您想要连接的远程实例的端口号,可以查看该实例的 dbm cfg 中的 svcename 参数来实现。该值通常对应于 TCP/IP services 文件中的某一项。 DCS 目录目录 DCS 目录包含了通常驻留在 zSeries(S/390)或 iSeries (AS/400)机器上的主机数据库的连通性信息。您需要安装 DB2 Conne

22、ct 软件。下面是一些命令: 要列出 DCS 目录的内容,请从 CLP 发出下面这个命令: db2 list dcs directory 要将信息输入 DCS 目录,请从 CLP 发出 catalog 命令: db2 catalog dcs db as 例如: db2 catalog dcs db as db1g 数据库是与实例相关的封闭且独立的单元。由于这个独立性, 所以两个或更多的数据库的对象可以有相同的名称。例如, 图 1 显示了一个名为“MyTablespace1”的表空间,它位于与实例 “DB2”相关的数据库“MYDB1”内部。还有一个同名的表空间, 它位于也与实例“DB2”相关的数

23、据库“MYDB2”内部。 由于数据库是封闭单元,所以您不能执行涉及了两个不同数据 库表的查询(除非您使用 Information Integrator(II)/ Relational Connect,这已经超出本文的讨论范畴)。例如,涉及数据库 “MYDB1”中的“Table1”和数据库“MYDB2”中的“TableZ”的 查询是不允许的。 数据库是用命令 create database 创建的。请注意,这被认为是 一个命令,而非 SQL 语句。 当您创建数据库、表空间、日志和缓冲池时,会自动地创建配 置文件,这就是完成该命令需要花费几秒钟的原因。 表空间是用作逻辑表和物理容器之间中间层的逻辑

24、对象。创建 表空间时,您可以将它与特定的缓冲池(数据库高速缓存)以及特 定的容器进行关联。容器是物理存储数据的地方,可以分成文件、 目录和原始设备等几类。 Catalog(SYSCATSPACE)、系统临时空间(TEMPSPACE1) 和用户空间(USERSPACE1)都是表空间,并且都会在创建数据库 时自动创建。Catalog 和系统临时空间都可以看作是系统结构,因为 它们是数据库的正常操作所必需的。Catalog 包含了元数据(有关数 据的数据)。一些其它 RDBMS 把这个结构称作“数据字典”。不 要把这一节的术语“Catalog”和早先提到的 catalog 命令混淆起来; 它们毫无关

25、系。 系统临时表空间是数据库管理器执行操作(比如连接和排序) 的工作区。至少必须有一个系统临时表空间。缺省情况下会创建 USERSPACE1 表空间,但是可以删除它。它是用来存储用户表的缺 省位置。 表是由行和列组成的无序的数据记录集。索引是与表相关的有 序指针集,用于性能目的并确保唯一性。视频、音频和扫描文档等 可以作为大对象(LOB)存储在数据库中。表、索引和 LOB 驻留 在表空间中。 日志是用于恢复目的的文件。日志记录了对数据库进行的每个 操作。万一发生故障,在将数据库恢复到某个一致的点方面,日志 就显得至关重要了。 缓冲池是一块内存区域,所有索引和数据页(除了 LOB)都必 须有序地

26、经过该区域,从而进行处理。它是数据库管理器所使用的 主要高速缓存。在数据库性能问题方面,缓冲池是进行调优的最重 要的对象。 案例研究案例研究 既然您已经熟悉了 DB2 环境,那么让我们通过简单的案例研 究来回顾一下本文中提到的所有概念: DB2 数据库管理员(DBA)由于突发的个人原因离开了公司, 经理要您负责所有 DB2 系统。这是您担任新 DB2 DBA 的第一天, 因而您想熟悉系统。您登录到安装了 DB2 的开发机器(Windows 2000),并打开 CLP 窗口。下面是您要进行的步骤: 1. 首先,您想要知道该机器中有多少实例: db2ilist 2. 然后,您想要知道当前哪个实例是

27、活动的: db2 get instance 3. 用 db2ilist 命令,您发现该机器上定义了两个实例 实例 “DB2”和实例“MyInst”。用 db2 get instance 命令,您发现 “DB2”实例是当前的活动实例。 4. 现在您想要列出“MyInst”实例中的数据库。由于这个实例不 是当前的活动实例,所以您首先得在当前 CLP 窗口中临时切换到 该实例: set DB2INSTANCE=MyInst 5. 您再次发出 db2 get instance ,以查看 MyInst 现在是否是当前 实例,然后为列出该实例中定义的数据库,请发出以下命令: db2 list db dir

28、ectory 6. 该命令显示出该实例中只有一个数据库(MYDB2)。您想试着 创建一个新的数据库(您随后将删除它),为此您执行: db2 create database temporal 7. 数据库的创建需要花些时间,因为在缺省情况下会在数据库内 部创建几个对象。发出另一个 db2 list db directory 命令将会显示两 个数据库:“MYDB2”和“temporal”。 8. 连接至“MYDB2”数据库(db2 connect to mydb2),并查看该 数据库中有多少表( db2 list tables )。您还可以查看定义了多少表 空间( db2 list tablesp

29、aces )。 午餐时间到了,因此您决定把某些东西复原。首先,您决定删除临 时数据库。当三秒钟掉电引起机器自动重新引导时,您正处于输入 命令的过程中。您并不担心 DB2 数据库状态,因为您知道 DB2 崩溃恢复会确保其前后一致;因此您在重新引导之后打开新的 CLP 窗口,接下来删除该数据库。 db2idrop MyInst 啊呀!出错了,您使用了错误的命令并删除了整个 MyInst 实例而 不只是删除了数据库“temporal”。您是否因此丢失了与实例 “MyInst”相关的数据库“MYDB2”和“temporal”? 查看 图 1,您可能会觉得是丢失了;但是,情况并非如此。删除实 例时,您并

30、未删除与之相关的数据库。实例为您提供了链接 DB2 代码的环境,以便这些代码依据用户数据使用实例。数据库被“关 联”到实例。但是安装 DB2 新版本时,您通常会将实例“升级” 成新的代码版本;而数据库保持不变。 既然您已经镇定下来,知道并未丢失数据库,那么该开始思考 db2idrop 命令的工作原理。通常,如果您的实例是活动的,那么该 命令会给您一个警告。然后您意识到重新引导机器后,实例 “MyInst”并未自动启动,而“DB2”实例已经被配置成在引导机 器后自动启动。还有,打开新的 CLP 窗口时, db2instance 环境变 量的值被设置成“DB2”而不是“MyInst”,假设“DB2

31、”是在机器 的控制面板中为该环境变量指定的值。 既然您意识到了这一点,那么您该继续努力使一切恢复原样: 1. 首先,您需要再次创建实例 MyInst: db2icrt MyInst 3. 现在,切换到该实例(set DB2INSTANCE=MyInst)。如果发出 list db directory 命令,您会得到一个指出系统 db 目录不存在的错 误。如果看一下 图 1,您会明白:第一次删除实例时,所有实例范 围内的配置文件和目录也都被删掉了。因此,实例级概要注册表、 dbm cfg、系统 db 目录、节点目录和 dcs 目录都不见了。创建实例 时,也创建了带有缺省值的 dbm cfg 和实

32、例级注册表。庆幸的是, 前任 DBA 存储了所有这些文件的内容备份。他发出类似于下面这 样的命令: db2 get dbm cfg dbmcfg.bk db2set -all db2set.bk db2 list db directory systemdbdir.bk db2 list node directory nodedir.bk db2 list dcs directory dcsdir.bk 4. 您必须使用适当的命令来手工恢复基于这些文件内容的值。对 于您创建的“temporal”数据库,它是需要再次编目的本地数据库。 发出命令“ db2 catalog db temporal o

33、n ”将足以在系统 db 目录中创建一个项,它将指向现有的本地 db 目录,因为您用缺 省值创建了该数据库。本地 db 目录属于数据库;因此,当您删除 实例时,并未将其删掉。 5. 既然一切都恢复了,那么现在您可以删除数据库 temporal 了: db2 drop database temporal 7. 将 DB2INSTANCE 的值设回“DB2”( set DB2INSTANCE=DB2 )。 好了,大功告成了! 我们讨论了实例、配置文件、注册表变量、目录、数据库等等概念。 图便于您理解所有这些对象的驻留位置。提供的案例研究用来复习 本文所讨论的所有概念。它包括了使用命令行处理器(CL

34、P)来执 行的命令。在本文中不曾讨论 GUI 工具。虽然使用 GUI 工具更容 易管理 DB2 环境,但出于学习的目的,最好使用 CLP。一旦您对 使用 CLP 的 DB2 环境方面有了坚实的基础,那么学会使用 GUI 工具的技能应当是项很简单的任务。 二、二、 DB2 日常维护日操作日常维护日操作 1、 检查管理服务器是否启动 用 ps 命令查看是否有 dasusr1 后台进程 ps -ef | dasusr1 请确保管理服务器已经启动,如果没有启动,则按以下步骤启动 管理服务器: 以管理服务器用户(UNIX 默认是 DASUSR1)登录 发出 db2admin start 命令 如果是 H

35、A 环境,则要保证在脚本中正确配置了启动命令 2、 检查 DB2 实例是否已经启动 用 ps 命令查看是否有 db2sysc 后台进程 ps -ef | db2sysc 也可以以 DB2 实例所有者登录,通过发出 db2start 命令来确保 启动了实例(如果实例已经启动,则会告知 SQL1026N 数据库 管理器已激活;否则,将把实例启动起来) 3、 查看表空间状态是否正常 以 db2 实例所有者登录 #db2 list tablespaces show detail /在单分区上查看表空间的状 态,正常返回 0 x0000 # db2_all list tablespaces show d

36、etail /在所有分区上查看表空间的 状态 可以使用 LIST TABLESPACES 命令确定连接数据库中表空间 的当前状态,可以使用 SHOW DETAIL 选项查看表空间的详细信息。 比如,我们连上 SAMPLE 数据库,执行 list tablespaces show detail ,可以看到状态返回值是 0 x0000,此时,使用 db2tbst 可以查看状 态编号对于的状态含义,具体语法如下: db2tbst 可以查看编号所代表的状态 db2tbst 命令接收十六进制的状态值,并返回相应的表空间状态。 例如,命令 db2tbst 0 x0008 返回 State = Load P

37、ending 。而该十六 进制的状态值反过来又是 LIST TABLESPACES 命令输出的组成部 分。表空间的外部可见状态是由单个状态值的十六进制总和构成的。 例如,如果表空间的状态是 Backup Pending 和 Load in Progress,那 么所返回的十六进制值就是 0 x20020(0 x00020 + 0 x20000) 4、 查看表的状态 查询系统目录视图以获得关于数据库的有用信息。例如,下面 的语句使用 NOT LIKE 断言,返回在 SYSCAT.TABLES 中有项的 所有用户定义的表的名称,以及每个表的列数和表的状态(N = 正 常;C = 待审核(check

38、 pending) #db2 select tabname, colcount, status FROM syscat.tables WHERE tabschema NOT LIKE SYS% ORDER BY tabname 也可以使用 load query 命令查看单个表的状态,比如对表 TEST1,我们可以发出如下命令: #db2 load query table test1 5、 查看磁盘空间 查看数据库活动日志目录是否已满,活动日志目录可以使用 get db cfg 查看,注意一定不要手工删除活动日志 #df -k 查看 SMS 表空间对应的容器目录空间是否满了 #df -k 查看

39、DMS 表空间中是否还有可用页 #db2 list tablespaces show detail /在单分区上查看表空间 的是否还有可用页 # db2_all list tablespaces show detail /在所有分区上查看表空 间是否还有可用页 6、 检查存储管理软件是否正常 请检查 TSM 或其他存储管理软件是否正常,以及磁带机是否运 行正常。 7、 检查数据库备份是否正常 请查看 TSM 或第三方存储管理软件,看备份映像文件是否完整 的保存到了磁带机上了,想在 DB2 上查看备份情况,可以使用 LIST 命令 # db2 list history backup all fo

40、r 数据库名 8、 检查归档日志是否正确归档了 请确保活动日志目录下没有的日志文件都已经正确归档到了带 机上(查看 TSM 或第三方存储管理软件)。 查看活动目录里的日志文件: #ls -l 9、 查看缓冲池的命中率 # db2 get snapshot for bufferpools on 数据库名 查看缓冲池的命中率,看其是否低于 95%(命中率越高越好) 10、查看当前运行最频繁的 SQL,其命中率是否正常 # db2 get snapshot for bufferpools on 数据库名 log.txt 用 grep 命令查看 Number of executions执行次数最频繁的

41、语 句,看其命中率是否正常。比如: grep -n Number of executions snap.out | grep -v = 0 | sort -k 5,5rn | more 11、查看当前连接的应用程序,有没有非法连接 #db2 list applications show detail 看这些连接的情况,看有没有不合适的 IP 连上来,或者不被允 许的第三方工具连上来,比如一些第三方工具连上来会对表进行锁 定,影响业务系统正常运行,这个时候可以用 FORCE APPLICATIONS (应用程序句柄)停下来。 12、检查有没有死锁 # db2 get snapshot for a

42、ll on 数据库名 log.txt 用 grep 命令查看输出的文件中是否有死锁的记录,比如 grep -n Deadlocks detected log.txt | grep -v = 0 | more 13、对表和索引进行 runstats #db2 runstats on table 表名 and index all 对系统表以及变化比较频繁的表运行统计信息,建议写成 shell 脚本自动运行。 14、检查表是否需要重组 使用 REORGCHK 命令,通过统计数据检查表是否需要重组,语 法如下: REORGCHK UPDATE | CURRENT STATISTICS ON TABLE

43、 SYSTEM| TABLE USER | TABLE ALL | TABLE table_name | SCHEMA schema_name UPDATE STATISTICS: 更新表的统计数据,根据该统计数据 判断是否需要重组表 CURRENT STATISTICS:根据当前表统计数据判断是否需要重组 表 TABLE table_name : 对单个表进行分析 TABLE ALL: 对数据库所有的表进行分析 TABLE SYSTEM: 对系统表进行分析 TABLE USER : 对当前用户模式下的所有表进行分析 #db2 reorgchk update statistics on tab

44、le all 15、对需要重组的表进行重组 #db2 reorg table 表名 /通过重构行来消除“碎片” 数据 #db2 reorg indexes all for table 表名 /只重组索引 比如: reorg table index by_id 将根据索引 by_id,如果不加 INDEX 选项将重组表和所有的索引 reorg table index by_id use tempspace1 使用指定的临时表空间重组表 表重组完成后需要进行 RUNSTATS。另外,记住在分区数据库 环境中,如果想在所有节点运行命令,需要使用 d

45、b2_all 命令。 三、三、 DB2 日常维护月操作日常维护月操作 1、查看 DB2 日志 请至少每月查看一次 db2diag.log 文件,看其中是否有异常。 2、检查备份和日志是否都保存好了 通过 TSM 或第三方存储管理软件,查看备份和归档日志是否都 保存好了,在数据库级别查看备份,可以使用: # db2 list history backup all for 数据库名 四、四、 DB2 日常维护季度操作日常维护季度操作 1、通过快照监控器,查看系统性能如何 通过快照监控器,抓取数据库的信息,分析数据库性能是否合理: # db2 get snapshot for all on 数据库名

46、 log.txt 2、数据库补丁级别 # db2level 五、五、 注意事项注意事项 1、不要删除活动日志文件 DB2 的活动日志文件不能被删除。一旦 DB2 的活动日志文件 被删除,或者所在的存储设备出现问题,则不可避免地造成 DB2 数据库系统宕机。 2、注意交易日志存储空间 在归档日志模式下,如果没有使用自动归档方式,则存储的日 志文件会不断增多,有可能造成日志所在的文件系统空间满。 当这 种情况发生时,会根据参数 BLK_LOG_DSK_FUL 的配置而有不同的 现象: 1)如果该参数启用,则 DB2 数据库可继续读操作,但是写操作会 挂起 2)如果该参数没有启用,则 DB2 数据库

47、会停止工作 两种情况下,都需要到日志所在的文件系统添加了空间才恢复正常。 3、按照系统的实际工作量配置日志空间 DB2数据库通过日志文件维护数据的完整性和一致性。DB2 数据库的 日志空间可通过如下公式计算: 日志空间 = (主日志文件 + 二级日志文件) * 日志文件尺寸 其中: 1)主日志文件由参数 LOGPRIMARY 控制, 2)二级日志文件由参数 LOGSECOND 控制 3)日志文件尺寸由参数 LOGFILSIZ 控制 4)LOGPRIMARY + LOGSECOND 宕机 3)常见错误 只调整时间,未调整时区 7、不要随便执行 chown (chmod) R (UNIX/Linu

48、x) 在实例目录下 chown (chmod) -R 会造成 1)在数据库服务器上 db2 connect to 能连接上 数据库 2)db2 connect to user . using .连接不上 8、在归档日志模式下使用 LOAD 记得加 NONRECOVERABLE 参数 六、六、 附:以脱机方式重组表附:以脱机方式重组表 以脱机方式重组表是整理表碎片的最快方法。重组可减少表所 需的空间量并提高数据访问和查询性能。 必须具有 SYSADM、SYSCTRL、SYSMAINT 或 DBADM 权 限,或者必须具有对表的 CONTROL 权限才能重组表。必须具有 数据库连接才能重组表。 标

49、识需要重组的表之后,可以对这些表运行 REORG 实用程序, 并且可以选择对在这些表上定义的任何索引运行该实用程序。 1. 要使用 CLP 重组表,请发出 REORG TABLE 命令: db2 reorg table test.employee 要使用临时表空间 mytemp 重组表,请输入: db2 reorg table test.employee use mytemp 要重组表并根据索引 myindex 对行进行重新排序,请输入: db2 reorg table test.employee index myindex 2. 要使用 SQL 调用语句重组表,请使用 ADMIN_CMD 过

50、程发 出 REORG TABLE 命令: call sysproc.admin_cmd (reorg table employee index myindex) 3. 要使用 DB2 管理 API 重组表,请使用 db2REORG API。 在重组表之后,应收集有关表的统计信息,以便优化器具有最 准确的数据来评估查询访问方案。 七、七、 附:索引重组附:索引重组 通过删除和插入操作对表进行更新后,索引的性能会降低,其表 现方式如下: 叶子页分段 叶子页被分段之后,由于必须读取更多的叶子页才能访存表页, 因此 I/O 操作成本会增加。 物理索引页的顺序不再与这些页上的键顺序相匹配(此称为不 良集群索引) 。 叶子页出现不良集群情况后,顺序预取操作的效率将降低,因 此会导致更多的 I/O 等待。 形成的索引大于其最有效的级别数。 在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论