...

最佳实践 ���® IBM

by user

on
Category: Documents
6

views

Report

Comments

Transcript

最佳实践 ���® IBM
���®
IBM® Smart Analytics System
最佳实践
有关 IBM Smart Analytics
System 数据库管理的常见问题
Alvin Law
高级 IT 顾问,IBM
Enda Mccallig
DB2 QA 工程师,IBM
Garrett Fitzsimons
数据仓库最佳
实践专家,IBM
发布日期:2011 年 12 月
有关 IBM Smart Analytics System 数据库管理的常见问题 .................................... 1
执行摘要 ......................................................................................................... 4
1. 数据库实现和设计...................................................................... 5
1.1 我能否创建额外的数据库分区分组? .............................................. 5
1.2 我能否创建新文件系统来保存我创建的任何新表空间? ................ 6
1.3 应该如何将表和索引组织到表空间中? ..................... 6
1.4 哪些事件监视器会默认启动以及应该如何使用它们? ... 6
1.5 我应该考虑使用其他哪些事件监视器?........................................... 7
1.6 Rah 和 db2_all 在解决多个节点或数据库分区时有何区别?................... 7
2. 数据库管理和维护.............................................................. 8
2.1 如何确定 DB2 表空间使用了多少磁盘空间? ....... 8
2.2 如何降低表空间的高水位线?..................................... 9
2.3 何时应该压缩表和索引? .............................................. 12
2.4 如何确定表是否已压缩?.................................................... 12
2.5 如何确定使用和未使用哪些索引? ...... 12
2.6 能否强制 DB2 优化器使用复制的维度表?.............. 14
2.7 REORG 如何处理固态设备 (SSD) 上的临时表空间?........................................... 14
2.8 实用程序对日志有何影响? ............................................................................. 15
2.9 为什么应该使用 RUNSTATS? ............................................................................ 16
2.10 如何在 IBM Smart Analytics System 中收集统计信息? ................... 17
2.11 应该按何种频率更新一个表的统计信息? ....................................... 17
2.12 如何降低分配给 RUNSTATS 实用程序的优先级?............... 18
2.13 如何加快统计信息收集? ........................................................... 18
3. 高级统计信息维护............................................................................. 20
3.1 如何使用统计信息配置文件收集统计信息?......................................... 20
3.2 能否使用自动统计信息配置文件生成?............................................... 21
3.3 推荐的 IBM Smart Analytics System 配置文件设置是什么? .. 21
3.4 “LIKE STATISTICS”RUNSTATS 参数有何用途?..................... 24
3.5 列分组统计信息是什么? ........................................................................ 24
4. 故障排除 ......................................................................................................... 26
4.1 应该如何管理 DB2 诊断文件? ....................................................... 26
4.2 如果需要有关 IBM Smart Analytics System 或 InfoSphere Balanced
Warehouse 的帮助怎么办?.............................................................. 27
4.3 有哪些工具可用于分析数据库问题? ................................... 27
4.4 如何在执行删除后将 MDC 中的空块返回到表空间?29
4.5 如何在高可用性 (HA) 环境中更改数据库配置............................................. 29
教育:培训和参考资料 ............................................................................ 30
有用的链接................................................................................................................... 30
参考资料 ............................................................................................................. 30
贡献者.................................................................................................................... 31
商标 ..................................................................................................................... 33
有关数据库管理的常见问题
第4页
执行摘要
本文解答一些与 IBM® Smart Analytics System 环境中的数据仓库数据库管理相关的常见问题。
本文中的常见问题可划分为以下类别:

数据库实现和设计。

数据库管理和维护。

高级统计信息维护。

故障排除和解决。
本文中的问题和答案适用于拥有基于 System x® 和 Power Systems® 服务器配置的 IBM® Smart Analytics
System 多代环境。IBM Smart Analytics System 是由 IBM® InfoSphere Balanced Warehouse 演化而来。
两者均基于相同的存储和数据库设计原则。本文使用术语 IBM Smart Analytics System,除了指特定的
InfoSphere Balanced Warehouse 配置。除非另行表明,否则所有内容都适用于DB2® Database for
Linux® , UNIX, and Windows® 软件的 V9.5 和 V9.7 版本。
本文是对现有文章“有关 IBM Smart Analytics System 系统维护的常见问题解答”的补充,该文章也可在
developerWorks 上找到。
请参阅 IBM Smart Analytics System 用户指南和相关文档,了解有关本文中探讨的一些主题的进一步细
节。当希望更改 IBM Smart Analytics System 安装记录中的配置设置时,请联系 IBM 支持人员来帮助确
保这些更改不会带来意外的后果。
有关数据库管理的常见问题
第5页
1. 数据库实现和设计
1.1 我能否创建额外的数据库分区分组?
回答:
避免添加数据库分区分组,仅在特殊情形下咨询 IBM 支持人员之后,方可创建数据库分区分组。
一条简单的经验规则是,当想更改 IBM Smart Analytics System 安装记录中规定的配置时,请咨询 IBM 支持人员。
补充信息:
在系统部署期间会创建 6 个数据库分区分组。所有数据库分区分组均默认在创建数据库时创建。
在所有数据库分区上创建 2 个数据库分区分组:

IBMTEMPGROUP

IBMDEFAULTGROUP
在第一个用户模块上的管理数据库分区上创建 3 个数据库分区分组:

IBMCATGROUP

SDPG

DWECONTROLGROUP
在每个数据节点上的所有数据库分区上创建 1 个数据库分区分组。

PDPG
在一个现有的数据库分区分组中创建表空间。
有关数据库管理的常见问题
第6页
1.2 我能否创建新文件系统来保存我创建的任何新表空间?
回答:
否。当部署系统时,会为所有表空间创建和配置专门的文件系统。当配置高可用性时,这些文件系统会直
接链接到故障转移配置,并且不得对它们进行更改。
补充信息:
对于 IBM Smart Analytics System 5600、7600 和 7700 配置,在 /db2fs 文件系统下创建所有表空间容
器。使用现有的命名约定。例如,对于 5600,第一个数据库分区的所有表空间容器必须在
/db2fs/instancename/NODE0001/databasename 目录下创建。
对于 InfoSphere Balanced Warehouse E7000 和 E7100,在 /db2fsLpP 文件系统下创建所有表空间容器,
其中 P 是平衡分区单元 (Balanced Partition Unit, BPU) 编号,L 从 1 开始并递增到 BPU 中的 LUN 数量。再
次说明,遵守现有的命名约定。例如,对于 E7000,所有表空间容器必须在
/db2fsLpP/instancename/databasename 目录下创建。
1.3 应该如何将表和索引组织到表空间中?
回答:
此问题已在 IBM Smart Analytics System 用户指南和包含“数据生命周期管理”的最佳实践文章
( http://public.dhe.ibm.com/software/dw/dm/db2/bestpractices/DB2BP_Data_Life_Cycle_1009I.pdf
)中介绍。
在设计表空间时,要考虑对所有数据库操作的影响,包括查询、数据加载、数据归档、备份、还原和数据
库维护任务。
1.4 哪些事件监视器会默认启动以及应该如何使用它们?
回答:
只有 DB2DETAILDEADLOCK 事件监视器是默认启动的。历史数据未配置为刷新到磁盘。当 IBM DB2®
Performance Expert 或 IBM InfoSphere Optim™ Performance Manager 4.1.1 激活时,将启动更多事件监视
器。使用下面的 SELECT 语句查询事件监视器的活动和状态:
SELECT EVMONNAME FROM SYSCAT.EVENTMONITORS WHERE
EVENT_MON_STATE(EVMONNAME)=1
有关数据库管理的常见问题
第7页
1.5 我应该考虑使用其他哪些事件监视器?
回答:
有关如何在您环境中设置和配置监视的建议和详细信息已在 IBM Smart Analytics System 用户指南中介绍。
1.6 Rah 和 db2_all 在解决多个节点或数据库分区时有何区别?
回答:
db2_all 实用程序会为 db2nodes.cfg 配置文件中定义的每个数据库分区执行一次指定的命令。rah
实用程序会为每个物理节点执行一次指定的命令。
db2_all
如果一个数据节点上有 4 个数据库分区,db2_all 会执行四次指定命令,针对每个数据库分区执行一次
命令。db2_all 命令为 db2nodes.cfg 配置文件中定义的每个数据库分区设置合适的 DB2NODE 环境
变量。
rah
如果一个数据节点上有 4 个数据库分区,rah 实用程序会执行一次指定命令。不引用 DB2NODE 环境变
量。
有关数据库管理的常见问题
第8页
2. 数据库管理和维护
本节将探讨一般的数据库管理问题。
2.1 如何确定 DB2 表空间使用了多少磁盘空间?
回答:
参考每个用户和数据节点上的 /db2fs 文件系统来确定每个表空间容器使用的存储量。
查询 SYSIBMADM.MON_TBSP_UTILIZATION 视图,如下列样例语句所示:
SELECT * FROM SYSIBMADM.MON_TBSP_UTILIZATION ORDER BY TBSP_NAME, MEMBER
要获得每个节点上特定表空间使用的实际磁盘空间,使用下面的语句:
SELECT TBSP_TOTAL_SIZE_KB, MEMBER FROM SYSIBMADM.MON_TBSP_UTILIZATION
WHERE TBSP_NAME = 'MY_TABLESPACE1' ORDER BY MEMBER
要获得每个节点上所有表空间使用的磁盘空间总量,执行 SELECT 语句:
SELECT SUM(TBSP_TOTAL_SIZE_KB) AS TOTAL_KB, MEMBER FROM
SYSIBMADM.MON_TBSP_UTILIZATION GROUP BY MEMBER
ORDER BY MEMBER
将结果以及时间戳一起加载到一个表或电子表格中,以不断跟踪使用情况。对于 DB2 9.7 之前的版
本,使用 SYSIBMADM.TBSP_UTILIZATION 视图,并使用 DBPARTITIONNUM 列代替前一个查询
中的 MEMBER 列。
补充信息:
在分区数据库环境中,执行命令 LIST TABLESPACES SHOW DETAIL 仅提供您所连接的数据库分区的
相关信息。
有关数据库管理的常见问题
第9页
2.2 如何降低表空间的高水位线?
回答:
在一些情形下,表空间会包含一些空页面。由于高水位线 (HWM) 值的缘故,您可能无法减少表空间的
大小。表空间中的空白空间可用于插入该表空间中的新数据,但无法供其他表空间使用。
如果尝试从未由自动存储 (AS) 管理的表空间中回收未用的空间,可能得到以下错误:
ALTER TABLESPACE <TSNAME> RESIZE (ALL 120G)
SQL20170N There is not enough space in the table space "TSNAME" for
the specified action. Reason code = "1". SQLSTATE=57059
1 The amount of space being removed is greater than the amount of space
above the high-water mark.
对于 AS 表空间,仅减少超过 HWM 值的表空间大小,而不能减少该值之下的大小。将会返回以下输
出:
ALTER TABLESPACE <TSNAME> REDUCE
SQL1348W The table space could not be reduced in size.
使用 SYSIBMADM.TBSP_UTILIZATION 视图(如下面样例语句所示)确定当前使用了表空间的哪一部分以及每个数据库分
区当前的 HWM 值:
SELECT TBSP_NAME AS TS_NAME , TBSP_ID AS TS_ID ,TBSP_USED_PAGES AS
TS_USED_PG , TBSP_FREE_PAGES AS TS_FREE_PG , TBSP_TOTAL_PAGES AS
TS_TOTAL_PG , TBSP_PAGE_TOP AS TS_HWM , TBSP_UTILIZATION_PERCENT
AS UTILIZ_PCT FROM SYSIBMADM.TBSP_UTILIZATION WHERE
DBPARTITIONNUM=1 AND TBSP_NAME= '<TSNAME>' ORDER BY
TBSP_UTILIZATION_PERCENT, TBSP_NAME
下面的样例输出来自前一个 SELECT 语句:
TS_NAME TS_ID TS_USED_PG TS_FREE_PG TS_TOTAL_PG TS_HWM
UTILIZ_PCT
-------------------- ----- ---------- ---------- ----------- ---------TSNAME
172
156864
499536
656416
656400
23.89
图示中的样例输出的 TS_HWM 列代表 HWM 值。另一种监视 HWM 的方法是使用 db2pd 命令,如下面示
例所示,其中 172 是 TABLE SPACEID,sampleDB 是数据库的名称。请注意,db2pd 输出是针对当前的
数据库分区。
db2pd -tablespace 172 -db sampleDB
有关数据库管理的常见问题
第 10 页
如果系统使用的是 DB2 v9.7,并且表空间是在 DB2 v9.7 下创建的,可以使用 ALTER TABLESPACE 语句和
LOWER HIGH WATER MARK 选项来减少 HWM,如下面示例所示:
ALTER TABLESPACE <TSNAME> LOWER HIGH WATER MARK
尽管该命令直接返回了结果,但该进程是异步运行的。要监视数据范围的移动,可使用
SYSPROC.MON_GET_EXTENT_MOVEMENT_STATUS 表函数,如下面的示例语句所示:
SELECT TBSP_NAME, MEMBER,NUM_EXTENTS_MOVED, NUM_EXTENTS_LEFT,
TOTAL_MOVE_TIME FROM TABLE(SYSPROC.MON_GET_EXTENT_MOVEMENT_STATUS('', 1)) WHERE TBSP_ID=172
要度量该命令在分区环境中所有数据库分区(成员)上的执行进度,可使用下面的样例命令:
SELECT TBSP_NAME, MEMBER,NUM_EXTENTS_MOVED, NUM_EXTENTS_LEFT,
TOTAL_MOVE_TIME
FROM TABLE(SYSPROC.MON_GET_EXTENT_MOVEMENT_STATUS('', -2))
WHERE TBSP_ID=172 ORDER BY MEMBER
如果前面 SELECT 语句的输出包含“-1”值,则表明没有执行范围移动或该过程已完成。
在异步范围移动进行的过程中,系统上将存在高 I/O 活动。不要并行启动多个表空间更改,因为这会导致
范围重组花费更长的时间。尽管范围重组是在线运行的,但还是要注意,要在系统上拥有少量或没有生产
工作负载时发起该进程。
在数据范围正在移动时,表空间状态为 0x80000(MOVE_IN_PROGRESS)。要验证表空间的状态,可执
行 LIST APPLICATION SHOW DETAIL 命令或查询管理视图,如下列语句所示:
SELECT TBSP_NAME AS TBSP_NAME, TBSP_STATE
FROM SYSIBMADM.TBSP_UTILIZATION WHERE DBPARTITIONNUM=1
AND TBSP_NAME = '<TSNAME>'
TBSP_NAME TBSP_STATE
--------- ------------------------------------------------TSNAME
MOVE_IN_PROGRESS
如果尝试在异步处理完成之前减少表空间大小,将获得以下错误:
ALTER TABLESPACE <TSNAME> REDUCE
SQL0290N Table space access is not allowed. SQLSTATE=55039
如果发成此情况,必需在范围重组完成后再次执行该命令。
有关数据库管理的常见问题
第 11 页
在 ALTER TABLESPACE 语句中使用 LOWER HIGH WATER MARK 选项,仅为使用 DB2 Version
9.7 及更高版本创建的表空间降低 HWM。如果从较早的 DB2 软件版本升级一个表空间,并尝试使用
ALTER TABLESPACE 语句和 LOWER HIGH WATER MARK 选项,将返回以下错误:
ALTER TABLESPACE <TSNAME> LOWER HIGH WATER MARK
SQL1763N Invalid ALTER TABLESPACE statement for table space “TS_OLD”
due to reason “11” SQLSTATE=429BC
Table spaces must have the Reclaimable Storage attribute before
you can use clauses to reduce or lower the high water mark.
要确定是否为可回收存储启用一个表空间,可执行以下语句:
SELECT VARCHAR(TBSP_NAME, 20) AS TBSP_NAME, TBSP_TYPE,
RECLAIMABLE_SPACE_ENABLED, TBSP_FREE_PAGES
FROM TABLE (MON_GET_TABLESPACE('' ,-1)) AS T
TBSP_NAME
---------------SYSCATSPACE
USERSPACE1
TS_OLD
TS_NAME
TBSP_TYPE RECLAIMABLE_SPACE_ENABLED TBSP_FREE_PAGES
---------- ------------------------- ------------DMS
0
472
DMS
0
3648
DMS
0
256
DMS
1
896
无法为 v9.7 之前的表空间启用可回收存储。必需创建一个新表空间并将表数据复制到新表空间。
补充信息:
请参阅以下技术说明,了解如何减少使用 v9.7 之前版本创建的表空间的 HWM:
http://www.ibm.com/support/docview.wss?uid=swg21006526
参阅 DB2 信息中心中的主题““Reclaiming unused space from table spaces is supported”。
有关数据库管理的常见问题
第 12 页
2.3 何时应该压缩表和索引?
回答:
IBM Smart Analytics System 配置是为使用深度压缩而设计的。这些配置都拥有比在数据压缩出现之前所
开发的数据仓库配置更高的 I/O 比率处理器。DB2 软件提供了两种类型的压缩:数据和索引。
早期配置上对数据压缩的建议是仅压缩大型表,但从 DB2 V9.7 开始,建议压缩所有表(也包含小型
表)。
对于索引压缩(仅在 DB2 V9.7 软件发布之后才可用),建议是仅在能够提供重大的空间节省时才使用压
缩。在开发和 QA 系统中实现压缩,以确定索引压缩是否适合您的环境。
2.4 如何确定表是否已压缩?
回答:
当使用 COMPRESS=YES 选项创建表时,数据库管理器仅在能够节省空间时才压缩表。
要确定是否为每个表使用了压缩以及为该表实现的压缩程度,可以连接到数据库并查询
SYSIBMADM.ADMINTABCOMPRESSINFO 视图。可通过执行以下语句来实现:
SELECT * FROM SYSIBMADM.ADMINTABCOMPRESSINFO ORDER BY TABSCHEMA,TABNAME
2.5 如何确定使用和未使用哪些索引?
回答:
在数据库应用程序开发期间,可在表上定义大量索引来保证每个查询都具有不错的性能。
应用程序开发完成并且一个数据库已部署到生产环境中后,过多索引的存在可能会降低数据库的性能。在
执行 UPDATE、INSERT 和 DELETE (UID) 操作时,大量的索引会为数据库系统带来更多工作。此外,当
存在大量索引时,RUNSTATS 和 REORG 等常规维护活动也需要花很长的时间才能完成。因此,要优化数据
库性能,重要的是要确定哪些索引是执行查询所必需的,哪些索引可在不影响查询运行时的情况下安全地
丢弃。
DB2 9.7 提供了一种方式来检测未用的索引,其方法是跟踪自数据库启动以来数据库上任何查询使用某个
特定索引的次数。因为
有关数据库管理的常见问题
第 13 页
统计信息是从数据库启动之时开始收集的,一种不错的做法是在已激活至少一星期的数据库上和在成一项高峰期工作负载后
的数据库上发出此报告。
使用表函数获取索引信息
使用 MON_GET_INDEX 表函数确定索引使用情况。下面的样例语句检索一组最常用的索引,其中
DB2ADMIN 是模式,DEPARTMENT 是表名称,‐2 表示所有数据库分区。
SELECT SI.INDSCHEMA AS INDSCHEMA, SI.INDNAME AS INDNAME,
MGI.INDEX_SCANS, MGI.INDEX_ONLY_SCANS
FROM TABLE(MON_GET_INDEX('DB2ADMIN', 'DEPARTMENT', -2)) as MGI,
SYSCAT.INDEXES AS SI
WHERE MGI.TABSCHEMA = SI.TABSCHEMA AND MGI.TABNAME = SI.TABNAME AND
MGI.IID = SI.IID ORDER BY MGI.INDEX_SCANS DESC
下面的样例语句检索一组使用最少的索引:
SELECT INDNAME FROM SYSCAT.INDEXES WHERE TABSCHEMA = 'DB2ADMIN' AND
TABNAME = 'DEPARTMENT' AND INDNAME NOT IN (SELECT SI.INDNAME FROM
TABLE(MON_GET_INDEX('DB2ADMIN', 'DEPARTMENT', -2)) as MGI,
SYSCAT.INDEXES AS SI
WHERE MGI.TABSCHEMA = SI.TABSCHEMA AND
MGI.TABNAME =
SI.TABNAME AND MGI.IID = SI.IID)
使用 db2pd 实用程序获取索引信息
在 DB2 9.7 之前,使用 db2pd 实用程序获取表空间的信息。在使用 db2pd 实用程序之前,请确定表 ID 和表空间 ID。下面
的语句展示了如何确定一个名为 DEPARTMENT 表的表 ID 和表空间 ID:
SELECT TABLEID,TBSPACEID FROM SYSCAT.TABLES WHERE TABNAME='DEPARTMENT'
确定表 ID 和表空间 ID 之后,使用类似以下示例的命令将一个名为 SAMPLE 的表的统计信息打印到
一个输出文件:
db2pd -db sample -tcbstats all tbspaceid=5 tableid=2 -file
db2pd_tab_dept.txt
在 DB2 9.7 中确定最后使用一个索引的时间
从 DB2 9.7 开始,SYSCAT.INDEXES 视图中有一个 LASTUSED 列,报告任何 DML 语句使用该索引来
执行扫描或该索引被用于执行参照完整性约束的最后时间。该默认值为“0001-01-01”。
要确定哪些索引从未使用:
SELECT INDSCHEMA, INDNAME FROM SYSCAT.INDEXES WHERE LASTUSED = '000101-01'
要找到最常使用的 10 个索引:
Frequently Asked Questions on Database Administration
Page 14
SELECT INDSCHEMA, INDNAME, LASTUSED FROM SYSCAT.INDEXES
WHERE LASTUSED <> '0001-01-01 ' AND OWNERTYPE = 'U'
ORDER BY LASTUSED DESC FETCH FIRST 10 ROWS ONLY
补充信息:
DB2 信息中心中的相关主题:
 ““MON_GET_INDEX table function – get index metrics”
请参阅 developerWorks 文章“如何在 DB2 for Linux, UNIX, and Windows 中识别未使用的索
引”: http://www.ibm.com/developerworks/data/library/techarticle/dm‐
0910db2unusedindex/index.html
2.6 能否强制 DB2 优化器使用复制的维度表?
回答:
如果 DB2 优化器未使用复制的维度表,则设置 DB2 注册表变量
DB2_EXTENDED_OPTIMIZATION=FORCE_REPLICATED_MQT_MERGE.
这会强制使用复制的表,无论优化器成本决策是什么。
补充信息:
有关更多的信息,请参阅 APAR IC62086。
请参阅 DeveloperWorks 文章“改进商业智能环境中的 DB2 查询性能”:
http://www.ibm.com/developerworks/data/library/techarticle/dm‐0703kapoor/index.html#method2
2.7 REORG 如何处理固态设备 (SSD) 上的临时表空间?
回答:
SSD 技术仅可用于 IBM Smart Analytics System 7700 和 IBM Smart Analytics System 5600S 模型。
REORG 命令(当在 OFFLINE 模式下执行时)在处理过程中需要空间来存储表的卷影副本。默认的 DB2 行
为是将该表的卷影副本放在保存原始表的同一个表空间中。如果希望将卷影副本存储在一个特定的系统临时
表空间中,可指定 USE 子语。如果在 REORG 操作的 REPLACE 阶段发生了一个故障,数据库管理器同时需
要原始表空间和临时表空间中的信息才能从故障中恢复。
如果在 REORG 操作中发生以下情形,可能导致一个问题:
 执行 REORG 实用程序和 USE 子句,该子句指定了一个默认的 temp16k 系统临时表空间
(位于 SSD 存储)。
Frequently Asked Questions on Database Administration

Page 15
一个管理节点或数据节点在 REORG 操作的 REPLACE 阶段发生故障。
此场景的问题在于,不能再访问原始 SSD 容器上的数据。因此,数据库管理器可能无法从此故障
中恢复。
出于此原因,当执行包含 USE 子句的 REORG 命令时,创建一个新系统临时表空间,以在 REORG 完成时存
储表的卷影副本。
使用下面的样例代码作为您环境的模板:
CREATE TEMPORARY TABLESPACE db2_reorg_tbspace IN DATABASE PARTITION
GROUP ibmtempgroup PAGESIZE 16384 MANAGED BY SYSTEM USING
('db2_reorg_tbspace')BUFFERPOOL bp_16k OVERHEAD 4.0 TRANSFERRATE 0.04
成功创建系统临时表空间后,执行 REORG 命令以及 USE 子句,并指定您使用之前命令创建的临时表空
间,例如:
REORG TABLE <schema_name>.<table_name> USE db2_reorg_tbspace
REORG 操作成功完成后,丢弃第二个临时表空间以防止查询使用此表空间。使用下面的命令语法丢弃
临时表空间:
DROP TABLESPACE db2_reorg_tbspace
2.8 实用程序对日志有何影响?
回答:
其他一些更常用的实用程序对事务日志的影响如下:
REORG
ONLINE 或 INPLACE 参数的规范需要的事务日志空间比 OFFLINE 更多,但 OFFLINE 需要在操作期
间获取对象的“卷影”副本。
请参阅以下信息:
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.perf.doc/d
oc/c0024860.html
RUNSTATS
使用 RUNSTATS 实用程序不会生成任何事务日志活动。
IMPORT
Import 实用程序会记录导入的每一行,并且在导入大量数据时可能会涉及大量操作。在加载数据时首选
LOAD 实用程序,而不是 IMPORT 实用程序。
LOAD
LOAD 实用程序生成极少的事务日志活动。
EXPORT
EXPORT 实用程序不会生成任何事务日志活动。
有关数据库管理的常见问题
第 16 页
2.9 为什么应该使用 RUNSTATS?
回答:
统计信息是有关一个数据库表或索引的详细信息,DB2 查询优化器使用该信息来确定最佳的数据访问计
划。准确的统计信息是查询优化的关键。如果数据库表或索引的统计信息不可用,或者如果统计信息未反
映当前的数据状态,查询优化器可能会选择一种低效的方式来访问需要的数据,该方式低效地使用系统资
源,并且可能会导致花费更长时间来完成一个查询。
补充信息:
RUNSTATS 命令可手动或自动调用。从 DB2 v9.1 开始,DB2 软件的默认安装方法将数据库配置为自
动收集统计信息。但是,您可能希望在活动较少的时期调度 RUNSTATS 来避免资源争用。
可使用下面的语句确定是否收集了特定表的统计信息:
SELECT TABSCHEMA, TABNAME, STATS_TIME, CARD FROM SYSCAT.TABLES
WHERE TABSCHEMA like '%<table_schema>%' AND TABNAME like
'%<table_name>%' ORDER by CARD
如果结果中缺少 STATS_TIME 值(为空),表明没有收集指定表的统计信息。如果存在 STATS_TIME 值,表
示最后收集表的统计信息的时间。CARD 值表示表中估算的行数。如果 CARD 值为“‐1”,则表明缺少表的统计
信息。
有关优化查询的更多信息,请参阅 developerWorks 上的最佳实践文章:
www.ibm.com/developerworks/data/bestpractices/smartanalytics/queryoptimization/
DB2 信息中心中的相关主题:

“查询优化器” – v9.5、v9.7

“RUNSTATS 命令” – v9.5、v9.7

“分类统计信息” – v9.5、v9.7

“auto_maint – 自动维护配置参数” – v9.5、v9.7
有关数据库管理的常见问题
第 17 页
2.10 如何在 IBM Smart Analytics System 中收集统计信息?
回答:
数据库在多个数据库分区上进行分区。表统计信息是在单个数据库分区上收集的,然后对其他数据库分区
进行推断。如果用户连接的数据库分区上存在一个表,数据库管理器始终会在当前数据库分区上收集该表
的统计信息(同步和异步)。如果数据库分区上不存在一个表,数据库管理器会在表所在的数据库分区分
组中的第一个数据库分区上收集该表的统计信息。
如果表数据失真,表统计信息可能不准确。这意味着一些数据库分区包含比其他数据库分区更多的数据。
如果统计信息不准确,DB2 查询优化器可能不会生成最佳的数据访问计划。如果托管在不同数据库分区上
表所保存的行数存在较大差别,比如大于 20%,则最好在保存最多行数的数据库分区上收集统计信息。
2.11 应该按何种频率更新一个表的统计信息?
回答:
仅在表内容经过大量修改时才更新统计信息。“大量修改”的定义取决于表内容以及数据重要性,但通常
是应该在修改了大型事实表中 10% 的内容后收集统计信息。更频繁地收集一个小型表或查询中常用的维度
表的统计信息。
在以下情况下更新表的统计信息:

一个 LOAD 或 REPLACE 操作后

使用 REORG 命令或 REDISTRIBUTE DATABASE PARTITION GROUP 命令重组表后。

使用 REORG 命令压缩表后。

创建新索引后。如果表数据已拥有最新的统计信息,仅在索引上创建统计信息。

修改一个统计值的基础表,以使视图返回不同行之后。

绑定注重性能的应用程序后。
有关数据库管理的常见问题
第 18 页
2.12 如何降低分配给 RUNSTATS 实用程序的优先级?
回答:
使用实用程序影响限制 (UTIL_IMPACT_LIM) 和实用程序影响优先级 (UTIL_IMPACT_PRIORITY) 数据库
配置设置来减少执行 DB2 实用程序(比如 RUNSTATS 或 BACKUP)时对执行常规数据库工作负载的影响。
实用程序影响限制设置可设置所有受限制实用程序对系统总体工作负载总影响的百分比 (0-100) 限制。百分
之一百表示没有限制。
实用程序影响优先级设置 (0‐100) 用于将一个实用程序指定为受限的实用程序,并且优先化受限实用程序中
的该实用程序。优先级由编号设置确定,其中 1 表示最低优先级,100 表示最高。设置 0 表示实用程序不受
限制。可为每个命令显式地指定此选项,或者使用 SET 命令调整正在执行的实用程序优先级。
下面的示例命令展示了如何限制 RUNSTATS 命令:
UPDATE DBM CFG USING UTIL_IMPACT_LIM 50
RUNSTATS ON TABLE <table_schema>.<tab_name> UTIL_IMPACT_PRIORITY 100
下面的样例命令展示了如何使用 SET 命令将当前处理的实用程序优先级更改为 90,其中 <n> 表示进程。
这会限制该实用程序,并采用比 RUNSTATS 处理所使用的优先级 100 更低的优先级进行处理:
RUNSTATS ON TABLE <table_schema>.<tab_name2>
SET UTIL_IMPACT_PRIORITY FOR <n> TO 90
其中 n 是实用程序 ID。使用 LIST UTILITIES 命令确定实用程序 ID。DB2 信息中心中的
相关主题:


“SET UTIL_IMPACT_PRIORITY 命令” – v9.5、v9.7
“LIST UTILITIES 命令” – v9.5、v9.7
2.13 如何加快统计信息收集?
回答:
在 RUNSTATS 命令执行期间:如果使用表中所有数据来收集统计信息所花的时间太长,则请指定一个选项
来仅扫描表中的一个数据抽样。尽管统计信息没有执行全面扫描时那么准确,但使用抽样可在 RUNSTATS
命令执行时间和统计信息的准确度之间实现很好的平衡。RUNSTATS 命令包含一个可选的参数
(TABLESAMPLE 选项),它允许您选择希望扫描的表的百分比。
下面的样例命令使用表中 10% 的数据来收集该表的统计信息:
RUNSTATS ON TABLE <tabschema>.<tabname>
WITH DISTRIBUTION AND INDEXES ALL TABLESAMPLE SYSTEM (10)
有关数据库管理的常见问题
第 19 页
当收集一个表的索引统计信息时,可使用多个选项来加速统计收集的速度:
使用 RUNSTATS 命令的 ON COLUMNS 选项来仅指定您希望收集其统计信息的列,如下面的样例命令所示:
RUNSTATS ON TABLE <tabschema>.<tabname> ON COLUMNS (column1, column2)
仅指定关键列,如下面的样例命令所示:
RUNSTATS ON TABLE <tabschema>.<tabname> ON KEY COLUMNS
如果不需要 XML 列的统计信息,则排除它们,如下面的样例命令所示。
RUNSTATS ON TABLE <tabschema>.<tabname> ON ALL COLUMNS EXCLUDING XML
COLUMNS
在 LOAD/REPLACE 期间:如果使用带有 REPLACE 选项的 LOAD 命令替换表的全部内容,在 LOAD 操作
期间收集统计信息可能比为 LOAD 和 RUNSTATS 执行独立的操作更快。为表创建一个配置文件,然后结合
使用 STATISTICS USE PROFILE 选项和 LOAD 命令。
下面的样例命令使用一个统计信息配置文件,以在将数据载入表中时收集统计信息:
LOAD FROM xxx.del OF DEL REPLACE INTO <tabschema>.<tabname> STATISTICS
USE PROFILE
DB2 信息中心中的相关主题:

“RUNSTATS 命令” – v9.5、v9.7

“LOAD 命令” – v9.5、v9.7
有关数据库管理的常见问题
第 20 页
3. 高级统计信息维护
本节重点探讨通过 RUNSTATS 命令对统计信息执行高级维护。
3.1 如何使用统计信息配置文件收集统计信息?
回答:
在 IBM Smart Analytics System 数据仓库中收集统计信息的推荐方法是,为表创建一个统计信息配置文件。
在调用 RUNSTATS 实用程序时指定一个统计信息配置文件。指定此选项可将数据库管理器配置为在每次执
行 RUNSTATS 命令时使用此相同的选项。
补充信息:
在收集表统计信息时有一些选项可供选择。为表选择最佳选项(基于行数、表的大小或数据重要性),再
将它们保存到一个配置文件中。为一个表设置配置文件后,执行带 USE PROFILE 选项的 RUNSTATS 命
令。
例如,要执行 RUNSTATS 命令并指定一个统计信息配置文件,可使用以下语法:
RUNSTATS on TABLE <table_schema>.<table_name> USE PROFILE
要设置一个配置文件,可使用以下语法执行 RUNSTATS 命令:
RUNSTATS ON TABLE table_schema.table_name SET PROFILE [ONLY]
要查看统计信息配置文件,可执行以下语句:
SELECT TABSCHEMA, TABNAME, STATISTICS_PROFILE FROM SYSCAT.TABLES WHERE
TABSCHEMA LIKE '%xxx%'
统计信息配置文件可与其他实用程序搭配使用。例如,要为 LOAD 命令指定一个统计信息配置文件,执行以下命令:
LOAD FROM filename OF DEL REPLACE INTO <table_schema>.<table_name>
STATISTICS USE PROFILE
DB2 信息中心中的相关主题:

“RUNSTATS 命令” – v9.5、v9.7
有关数据库管理的常见问题
第 21 页
3.2 能否使用自动统计信息配置文件生成?
回答:
尽管,自 DB2 v9.1 开始就提供了自动统计信息配置文件生成功能,但它目前不支持分区数据库环境。出
于此原因,auto_stats_prof 和 auto_prof_upd 数据库配置参数应设置为 OFF。
建议为 IBM Smart Analytics System 环境使用下列与统计信息收集相关的数据库配置设置。所有这些设
置都是默认设置:
Automatic maintenance
Automatic table maintenance
Automatic runstats
Automatic statement statistics
Automatic statistics profiling
Automatic profile updates
(AUTO_MAINT)
(AUTO_TBL_MAINT)
(AUTO_RUNSTATS)
(AUTO_STMT_STATS)
(AUTO_STATS_PROF)
(AUTO_PROF_UPD)
=
=
=
=
=
=
ON
ON
ON
ON
OFF
OFF
3.3 推荐的 IBM Smart Analytics System 配置文件设置是什么?
回答:
一个特定表的建议配置文件设置取决于表的大小。要确定合适的配置文件设置,可首先基于每个表的大小
将它们划分为小型、中型或大型。
要计算表的大小,可将行数乘以行的平均大小。如果收集了一个表的统计信息,则可通过查询
SYSCAT.TABLES 表来确定行数 (CARD) 和行的平均大小 (AVGROWSIZE)。本文分别对三种规模的表提供
推荐的设置。
要确保所有的表均拥有至少一个初始的统计信息抽样集,以便能够按大小对它们正确分类,那么可以创建一
个文件,其中包含为所有表生成 RUNSTATS 命令脚本的命令,而不是指定一个统计信息配置文件。将以下
命令复制并粘贴到一个名为 initial_runstats.txt 的文本文件中并保存。请确保在命令末尾包含了分
号。
SELECT 'RUNSTATS ON TABLE "' CONCAT RTRIM(SUBSTR( RTRIM(TABSCHEMA)
CONCAT '.' CONCAT TABNAME,1,50)) CONCAT '" TABLESAMPLE SYSTEM (1) ;'
FROM SYSCAT.TABLES WHERE TYPE = 'T' AND CARD = -1
有关数据库管理的常见问题
第 22 页
使用一个 DB2 命令行窗口,连接到数据库并执行脚本,将输出保存到一个文件中:
DB2 CONNECT TO <DB_NAME>
db2 -x -tf initial_runstats.txt > tablist.txt
执行您刚创建的 RUNSTATS 命令脚本,保存输出以确认在 RUNSTATS 命令执行期间没有出现问题:
db2 -vtf tablist.txt > tablist.out
基于此命令的输出,将每个表分类为小型、中型或大型。
对于小型表,收集所有索引和列的分布统计信息。根据您对小型表的定义适当调整 CARD 值。下面的样例
命令使用值 100,000 作为小型表的上限。ALLOW WRITE ACCESS 选项使用户能够在 RUNSTATS 实用程序
执行期间修改表中的数据;SET PROFILE ONLY 选项防止收集统计信息,并仅设置一个表的配置文件。
SELECT 'RUNSTATS ON TABLE "'CONCAT RTRIM(SUBSTR (RTRIM(TABSCHEMA)
CONCAT '.' CONCAT TABNAME,1,50)) CONCAT '" WITH DISTRIBUTION AND
DETAILED INDEXES ALL ALLOW WRITE ACCESS SET PROFILE ONLY; ' FROM
SYSCAT.TABLES WHERE TYPE = 'T' AND CARD < 100000
使用下面的示例启动该脚本,将输出保存到一个文件中:
db2 -x -tf small_tables.txt > small_tables.out
启动您刚生成的 RUNSTATS 命令脚本,保存输出以确认在 RUNSTATS 命令执行期间没有出现任何问题:
db2 -vtf small_tables.out > small_runstats.out
对于中型表,收集有关一个表的现有所有索引的统计信息,以及每个关键列的数据分布统计信息。不要收集
非关键列的统计信息。根据您以中型表的定义适当调整 CARD 值。下面的样例命令使用值 100,000 作为中型
表的下限,使用值 10,000,000 作为上限。
SELECT 'RUNSTATS ON TABLE "' CONCAT RTRIM( SUBSTR( RTRIM(TABSCHEMA)
CONCAT '.' CONCAT TABNAME,1,50 )) CONCAT '" WITH DISTRIBUTION ON KEY
COLUMNS AND DETAILED INDEXES ALL ALLOW WRITE ACCESS SET PROFILE ONLY;'
FROM SYSCAT.TABLES WHERE TYPE= 'T' AND CARD BETWEEN 100000 AND 10000000
使用下面的示例启动该脚本,将输出保存到一个文件中:
db2 -x -tf medium_tables.txt > medium_tables.out
执行您刚生成的 RUNSTATS 命令脚本,保存输出以确认在 RUNSTATS 命令执行期间没有出现任何问题:
Frequently Asked Questions on Database Administration
Page 23
db2 -vtf medium_tables.out > medium_runstats.out
对于大型表,收集所有索引的统计信息,以及仅收集关键列的分布统计信息。通过指定 TABLESAMPLE
SYSTEM(10) 参数使用 10% 的数据创建表抽样,而不执行全表扫描。使用表抽样的目的是加速统计信息的收
集。根据您对大型表的定义适当调整 CARD 值。以下示例命令使用值 10,000,000 作为大型表的下限:
SELECT 'RUNSTATS ON TABLE "' CONCAT RTRIM(SUBSTR (RTRIM(TABSCHEMA)
CONCAT '.' CONCAT TABNAME,1,50)) CONCAT '" WITH DISTRIBUTION ON
KEY COLUMNS AND INDEXES ALL ALLOW WRITE ACCESS TABLESAMPLE SYSTEM
(10) SET PROFILE ONLY;' FROM SYSCAT.TABLES WHERE TYPE = 'T ' AND
CARD > 10000000
使用下面的示例启动该脚本,将输出保存到一个文件中:
db2 -x -tf large_tables.txt > large_tables.out
执行您刚生成的 RUNSTATS 命令脚本,保存输出以确认在 RUNSTATS 命令执行期间没有出现任何问题:
db2 vtf large_tables.out > large_runstats.out
对于一些大型表或重要的表,在研究使用该表的查询后创建一个个性化的配置文件。收集关键列的扩展统
计信息,增加 NUM_FREQVALUES 和 NUM_QUANTILES,以更好地反映列数据分布,创建列分组(如果适
用),并且如果 SQL 查询的 LIKE 谓词经常使用一个给定列,则指定 LIKE STATISTICS 选项子句。
下面的样例命令显示了针对大型表和经常访问的表所执行的建议更改。
RUNSTATS ON TABLE DEALER.CAR_PARTS ON COLUMNS ( PART_NO,CAR_BRAND,
CAR_MODEL ,PART_DESCRIPTION LIKE STATISTICS,( CAR_BRAND,
CAR_MODEL )) WITH DISTRIBUTION ON COLUMNS ( PART_NO
NUM_FREQVALUES 100 NUM_QUANTILES 100 ,CAR_BRAND NUM_FREQVALUES 50
NUM_QUANTILES 50 ,CAR_MODEL NUM_FREQVALUES 50 NUM_QUANTILES 50
,PART_DESCRIPTION LIKE STATISTICS) AND SAMPLED DETAILED INDEXES
ALL ALLOW WRITE ACCESS TABLESAMPLE BERNOULLI (20) SET PROFILE
ONLY
设置一个表的配置文件后,修改您用于设置配置文件的脚本,以便它们可执行 RUNSTATS 命令。
补充信息:
DB2 信息中心中的相关主题:


“维护窗口” – v9.5、v9.7
“RUNSTATS 命令” – v9.5、v9.7
Frequently Asked Questions on Database Administration
Page 24
3.4 “LIKE STATISTICS”RUNSTATS 参数有何用途?
回答:
当一个表列经常在一个 SQL 语句的 LIKE 谓词中使用时,收集有关子元素的统计信息可帮助改善查询的响
应时间。例如:
SELECT COLUMN1 FROM TAB1= WHERE COLUMN5 LIKE '%ZZZ%' AND COLUMN7 LIKE
'%YYY%'
通过执行带 LIKE STATISTICS 选项的 RUNSTATS 命令来改善此类型查询的性能:
RUNSTATS ON TABLE SCHEMA.TAB1 WITH DISTRIBUTION ON COLUMNS (COLUMN5
LIKE STATISTICS, COLUMN7 LIKE STATISTICS)
指定 LIKE STATISTICS 选项时,RUNSTATS 实用程序可能会花更长时间才能完成。在测试环境中,这一
区别很细微。
补充信息:
DB2 信息中心中的相关主题:

“有关子元素的 Runstats 统计信息” – v9.5、v9.7
3.5 列分组统计信息是什么?
回答:
当一个表包含两个或更多具有相关数据的表时,使用列分组统计信息 (CGS) 来检测关联。假设您有一个汽
车零部件表,其中包含一个品牌数据的列和一个汽车型号信息的列。收集这两列上的列分组统计信息可告
知 DB2 优化器,各个汽车零部件与一个特定的汽车型号和品牌关联。这有助于防止优化器只有在每个汽车
制造商都拥有每个汽车型号时才执行真的估算。在 WHERE 子句或 GROUP BY 操作中使用这些列时,收集
列分组统计信息可帮助优化器更好地估算一个查询返回多少行。
补充信息:
下面的样例命令使用列分组统计信息来表明汽车品牌和汽车型号列是关联的:
RUNSTATS ON TABLE BCUAIX.CAR_SALES ON ALL COLUMNS AND COLUMNS
((CAR_BRAND, CAR_MODEL))
要确定一个表中的列是否关联,要使用的产品是 IBM ® InfoSphere Information Server,它是一个数据集成
软件平台。此产品中的一个组件是 IBM InfoSphere Information Analyzer 数据探查器。除了执行大量其他
类型的分析(列内分析,列分组分析和表分析),它还可以自动发现表中不明显的关联列。
有关数据库管理的常见问题
第 25 页
有关更多信息,请参阅 IBM InfoSphere Information Server 和 IBM® InfoSphere Information Analyzer 的主要网站:
http://www.ibm.com/software/data/integration/info_server/
http://www.ibm.com/software/data/infosphere/information‐analyzer/
有关数据库管理的常见问题
第 26 页
4. 故障排除
本节重点介绍本区域最常见问题的故障排除和问题确定。
4.1 应该如何管理 DB2 诊断文件?
回答:
随着自动化技术的愈加流行,DB2 服务器可能生成大型的消息日志文件、管理通知日志文件和事件日志文
件。在具有许多逻辑和物理分区的大型仓库环境中尤其如此。当发生故障时,数据库管理器可生成大量诊
断数据,用于首次故障数据采集 (FODC) 用途。日志活动的这一增加可能会消耗更多的文件系统空间并出
现更多管理性问题。
允许 db2diag.log 文件增长直到用完文件系统中的所有空间,这可能导致重大的问题。简单地删除诊断
日志文件并不是可行的选项,因为 DB2 支持人员常常需要历史诊断数据。
建议从 developerWorks 网站下载和使用 db2back.ksh 脚本。此脚本包含许多有用的选项。例如,删除
在几天前生成的诊断和管理通知日志条目,以及将诊断和管理通知日志文件以压缩格式归档到一个新位
置。请遵守下载中包含的条款和条件,并且所有脚本应该在非生产环境中测试之后再部署到生产环境中。
从以下网站下载该脚本。
http://www.ibm.com/developerworks/data/library/techarticle/dm‐0904db2messagelogs/index.html?ca=dth‐grn&=dgp
‐my
此脚本是目前管理诊断文件的推荐方法。使用此脚本的一个注意事项是,您必须手动下载它并在您服务
器上配置它,然后使用 crontab 计划定期执行它。
对于开发和 QA 集群,将 DIAGSIZE 数据库管理器参数设置为非 0 值并重新启动实例;将使用一系列循环
的诊断日志文件和一系列循环的管理通知日志文件。当非 0 时,DIAGSIZE 参数以 MB 为单位指定这些日
志文件的大小。
这些文件称为 db2diag.n.log 和 <instance>.n.nfy 文件,其中 n 是一个整数,<instance>.n.nfy 文件仅适用于
Linux 和 UNIX 操作系统。
db2diag.n.log 文件和 <instance>.n.nfy 文件的数量均不能超过 10 个。当超过 10 个文件时,会
删除最老的文件并创建新文件。
此方法的一个优势是只使用一个命令来设置它。但是,此方法的一个明显缺点是,如果设置的大小太小,
数据库管理器可能删除最近生成的重要诊断信息。因此,可以使用此方法将 DIAGSIZE 数据库管理器参数
设置为很高的值,以存储至少一星期的诊断文件。建议指定一个可保存长达一个星期诊断文件的大小。
有关数据库管理的常见问题
第 27 页
4.2 如果需要有关 IBM Smart Analytics System 或 InfoSphere Balanced Warehouse 的
帮助怎么办?
回答:
推荐的方法是使用 IBM Service Request 提交一个新服务请求。IBM Service Request 是一个在线问题管理工具,可从以下网
站访问:
https://www.ibm.com/support/servicerequest
IBM Smart Analytics System 和 InfoSphere Balanced Warehouse 产品包含使用单个问题队列的集成软件和
硬件支持。您的服务器请求将您与 IBM 远程技术支持代表相联系,该代表可帮助您诊断问题。如果问题未
立即解决,技术支持代表可以帮助您创建一个解决计划。在联系支持代表之前请收集以下信息。以下前 3 项
信息包含在随 IBM Smart Analytics System 提供的材料中的安装记录中。

您的 IBM 客户编号 (ICN)

您的 Passport Advantage® 协议编号 (PPA)

机器类型、型号和序列号

问题的明确定义
补充信息:
有关更多信息,请使用以下链接搜索针对 IBM Smart Analytics System 产品的所有客户支持计划:
http://www‐
03.ibm.com/support/techdocs/atsmastr.nsf/WebDocs/?Search&Query=[HTMLDocumentName=WM
_CSP ]+AND+%28smart%20%29
使用电话直接联系 IBM 软件支持人员。此处列出了针对您所在国家/地区的电话号码:
http://www.ibm.com/planetwide/
4.3 有哪些工具可用于分析数据库问题?
回答:
有一些工具可用于查询数据库中的对象状态。IBM DB2 Performance Expert 和 IBM InfoSphere Optim
Performance Manager 默认可用在一些 IBM Smart Analytics System 型号中,它们是管理性能所推荐的工
具。此外,db2top 实用程序可用于从操作系统命令执行实时监视。
使用 IBM InfoSphere Optim Performance Manager 监视数据库性能,在性能指示器达到警告或关键级别时
接收提醒,隔离性能问题,识别长期运行的查询以供调优,查看磁盘使用情况和增长趋势,配置 DB2
Workload Manager,等等。
使用 IBM Optim Data Studio 开发查询,格式化查询,查看解释计划,获取统计信息建议,开发、调试和
部署例程,管理相互关联的对象更改,计划维护,以及查看、浏览、编辑、卸载和加载数据。
最常用的 DB2 软件实用程序如下所示:
有关数据库管理的常见问题

第 28 页
db2pd
使用 db2pd 实用程序查询缓冲池、事务和内存的数据。db2pd 是非侵入式的,因为它不会获取
闭锁或使用 DB2 引擎资源。db2pd 实用程序可检索正在更改的数据,并且可以反映不同的状
态。

db2mtrk
使用 db2mtrk 实用程序查询内存。db2mtrk 实用程序会影响使用它的数据库。在线期间不要在
生产系统中使用此实用程序。

db2dart
使用 db2dart 实用程序查询表空间数据。db2dart 实用程序是非侵入式的。但是,当存在激活
的数据库连接时,它可能会返回不一致的数据,因为它绕过缓冲池并且是直接从磁盘读取数据的。
建议仅在数据库取消激活时使用 db2dart。

db2cklog
使用 db2cklog 实用程序查询一个事务日志。此实用程序是侵入式的,应该在关闭的日志文
件(比如归档日志文件)中执行。

db2diag
使用 db2diag 实用程序查询诊断数据。db2diag 实用程序是非侵入式的。

db2level
使用 db2level 实用程序显示正在使用的 DB2 软件版本。此实用程序是非侵入式的。

db2look
使用 db2look 实用程序提取数据库中的对象的 DDL(对象定义语言)。db2look 实用程序一般
是非侵入式的,但可以创建锁,所以应该在非峰值时期执行。

Inspect
使用 INSPECT 实用程序查询表空间数据。INSPECT 实用程序类似于 db2dart 实用程序,但
仅限于指定的表空间。在结合使用 rowcompestimate 参数时,INSPECT 实用程序是侵入式
的。
有关数据库管理的常见问题
第 29 页
4.4 如何在执行删除后将 MDC 中的空块返回到表空间?
回答:
当一个 DELETE 语句删除了一个 MDC 表中的行时,必须回收空块,因为它们不会自动释放到表空间。使
用 REORG 命令的 RECLAIM EXTENTS ONLY 选项回收该空间,而无需执行完整的 REORG。
4.5 如何在高可用性(HA) 环境中更改数据库配置
回答:
如果需要重新启动实例以使参数更改在 HA 受控环境中生效,可按正常操作一样依次使用 db2stop 命令和 db2start 命
令。
在 HA 环境中执行 db2stop 命令不会触发故障转移。但是,它会锁定 resourcegroup,直到执行 db2start 命令。
有关数据库管理的常见问题
第 30 页
教育:培训和参考资料
针对 IBM Smart Analytics System 和 InfoSphere Balanced Warehouse 的培训和教程路线图:
http://www.ibm.com/software/data/education/roadmaps.html#isas
有用的链接

IBM Smart Analytics System 外部网站:
http://www.ibm.com/software/data/infosphere/smart‐analytics‐system/

IBM Smart Analytics System 和 InfoSphere Balanced Warehouse 文档的下载站点:
https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?lang=en_US&source=idwbcu

IBM Smart Analytics System 支持门户:
http://www.ibm.com/support/entry/portal/Overview/Software/Information_Management/IBM_S
mart_Analytics_System

InfoSphere Balanced Warehouse 支持门户:
http://www.ibm.com/support/entry/portal/Overview/Software/Information_Management/InfoSp
here_Balanced_Warehouse

所有 IBM Smart Analytics System 和 InfoSphere Balanced Warehouse 验证的堆栈页面:
http://www.ibm.com/support/docview.wss?uid=swg21429594
参考资料

Information Management 最佳实践
http://www.ibm.com/developerworks/data/bestpractices/

IBM Smart Analytics System 红皮书
http://www.redbooks.ibm.com/redbooks/pdfs/sg247908.pdf

有关系统管理的常见问题
http://www.ibm.com/developerworks/data/bestpractices/db2_bestpractices_smartanalytics/
index .html
有关数据库管理的常见问题
第 31 页
贡献者
Damian Ali
信息开发人员,数据仓库,IBM
Enzo Cialini
高级技术研究员,DB2 分布式和数据仓库,IBM
Gregg Snodgrass
IBM Smart Analytics System 开发
Joyce Coleman
IBM Smart Analytics Systems 信息开发
Katherine Kurtz
经理,DB2 LUW 信息开发
Maksym Petrenko
IBM DB2 仓库集成专家
Marco Norbiato
高级 DB2 DBA,IBM
Nathan Gevaerd Colossi
IBM Smart Analytics System 解决方案开发
Nela Krawez
IBM Smart Analytics System 解决方案开发
Sam Sukjirawat
IBM Smart Analytics System Lab Services
Silvio Luiz Correia Ferrari
高级 IT 专家
有关数据库管理的常见问题
第 32 页
本信息是针对在美国提供的产品和服务而开发的。
IBM 可能未在其他国家/地区提供本文中介绍的产品、服务或功能。请咨询您当地的 IBM 销售代表,获
取有关您所在区域目前可用的产品和服务的信息。对 IBM 产品、程序或服务的任何引用不代表或暗示
仅可使用该 IBM 产品、程序或服务。可使用任何不侵犯 IBM 知识产权且具有类似功能的产品、程序或
服务。但是,评估和验证任何非 IBM 产品、程序或服务的操作是用户自己的责任。
IBM 可能拥有涉及本文中介绍的主题的专利或专利申请。拥有本文不代表向您授予这些专利的任何许
可。您可以以书面形式将许可咨询发送到:
IBM Director of Licensing
IBM Corporation North
Castle Drive Armonk,
NY 10504-1785
U.S.A.
本段内容不适用于英国或这些规定与其本地法律不符的任何其他国家/地区:国际商业机器公司“按原
样”提供本文,不提供任何明示或暗示的担保,包括但不限于对非侵权性、适销性或特定用途的适用
性的暗示担保。一些国家不允许在某些交易中对明示或暗示的担保免除责任,因此本条款可能不适合
您。
在不限制上述免责声明的前提下,对于与本文中提供的任何信息或建议的准确性、可靠性或可服务性相
关的内容,或者使用该信息或遵循此处提供的任何建议可能带来的任何结果,IBM 不提供任何担保或表
示。本文中包含的信息未进行任何正式 IBM 测试并按原样分发。对本信息的使用或此处的任何建议或技
术的实现是客户自己的责任,取决于客户评估它们并将它们整合到客户的操作环境中的能力。尽管 IBM
在特定的条件下对每项内容执行了准确性检查,但不保证在其他环境中会获得相同或类似的结果。任何
尝试针对自己的环境调整这些技术的人风险自负。
本文和此处包含的信息应该尽可能地与本文中探讨的 IBM 产品一起使用。
本信息可能包含技术错误或录入错误。此处的信息会定期更改;这些更改会合并到出版物的新版本
中。IBM 随时可能对本文中描述的产品和/或程序进行改进和/或更改,恕不另行通知。
本信息中对非 IBM 网站的任何引用仅供参考,不以任何方式用作对这些网站的认可。这些网站上
的材料不是本 IBM 产品的材料的一部分,使用这些网站时风险自负。
IBM 可以以它认为合适且不会为您带来任何责任的任何方式使用或分发您提供的信息。
此处包含的任何性能数据都是在受控环境中确定的。因此,在其他操作环境中获得结果可能有很大出
入。一些度量结果可能是在开发级系统中获得的,不保证这些度量结果会在普通系统上保持相同。此
外,一些度量结果可能是通过推断获得的。实际结果可能有所不同。本文的用户应针对他们的具体环
境验证合适的数据。
与非 IBM 产品相关的信息是从这些产品的提供商、他们发布的公告或其他公共可用来源获得的。
IBM 未测试这些产品,无法确认与非 IBM 产品相关的性能、兼容性或其他
有关数据库管理的常见问题
第 33 页
任何声明的准确性。有关非 IBM 产品的功能的问题应提交给这些产品的提供商。
关于 IBM 未来发展方向或打算的声明仅代表 IBM 的发展目标,如有变更或撤销,恕不另行通知。
本信包含日常业务操作中使用的数据和报告的示例。为了尽可能完整地演示它们,示例中提供了一些
个人、公司、品牌和产品的名称。所有这些名称均是虚构的,如与实际商业企业使用的名称和地址有
任何雷同,纯属巧合。
版权许可:© 版权所有 IBM Corporation 2011。保留所有权利。
本信息包含源语言形式的示例应用程序,演示了在各种操作平台上的编程技术。为了开发、使用、推广
或分发符合操作平台应用编程接口(样例程序正是为之而编写)的应用程序,您可以以任何形式复制、
修改和分发这些样例程序,无需向 IBM 付费。这些示例未在所有条件下进行全面测试。因此,IBM 不能
保证或暗示这些程序的可靠性、可服务性或功能。
商标
IBM、IBM 徽标和 ibm.com 是国际商业机器公司在美国和/或其他国家/地区的商标或注册商标。如
果这些和其他 IBM 商标词汇在本信息中首次出现时标注了商标符号(? 或 ?),这些符号表示 IBM
在本信息发布之际在美国的注册商标或普通法规定的商标。这些商标也可能是其他国家/地区的注册
商标或约定俗成的商标。可在网络上获取 IBM 商标的最新列表,请查看
www.ibm.com/legal/copytrade.shtml 上的“Copyright and trademark information”部
分。
Windows 是 Microsoft Corporation 在美国和/或其他国家/地区的商标。
UNIX 是 The Open Group 在美国和其他国家/地区的注册商标。
Linux 是 Linus Torvalds 在美国和/或其他国家/地区的注册商标。
其他公司、产品或服务名称可能是其他公司的商标或服务标志。
Fly UP