常见组件:
SQLA 应用程序服务
SQLAC C程序接口
SQLB 缓冲池组件(BPS组件)
SQLC 通信管理(CCI组件)
SQLD 数据管理服务组件(DMS组件)
SQLE 为实例和数据库分配内存,拦截和处理信号,并处理发送到DB2的异常(BSU组件)
SQLF 配置接口,更改数据库配置参数时需要通过这个组件
SQLI 索引管理器组件(IXM组件)
SQLJC Java驱动组件(CCI组件)
SQLKD 缓冲池分布式服务
SQLKF FCM快速通信管理器组件
SQLKQ 缓冲池队列服务
SQLKT 表队列服务
SQLN SQL编译器组件
SQLO 操作系统服务(OSS组件)
SQLP 数据保护组件(DPS组件)
SQLR 关系数据服务组件(RDS组件)
SQLS 排序列表服务组件
SQLU 数据库实用工具,使用BACKUP,RESTORE和LOAD等工具时通过该组件
SQLX 索引操作
SQMO 内存优化组件
OSS组件的作用是与操作系统打交道:
1.内存管理:内存集(Memory Set),内存池(Memory Pool),内存块(Memory Block)
2.I/O管理
3.DB2进程和线程的创建和管理
4.Semaphore信号量系统的处理
5.安全认证
6.错误日志输出
SQMO组件的作用:
1.实现在线更改配置参数
2.动态内存平衡优化管理
BSU组件的作用:
1.为实例和数据库分配内存
2.拦截和处理信号
3.启动进程、线程和EDU
CCI组件的作用:
处理通信协议,客户端通过API连接数据库时要通过该组件。后台主要通过DRDA实现,通过DB2RA通信接口实现通信
RDS组件的作用
1.通常被CCI客户端通过函数唤醒
2.优化和处理SQL语句
3.构造查询访问计划:生成查询计划传给DMS执行
DMS组件的作用:
1.执行由RDS组件传来的查询访问计划,把结果集返还给RDS组件
2.用SQLI组件处理索引扫描
3.用SLS组件(SQLS)处理排序
IXM组件的作用
1.管理所有索引
2.多维集群索引维护
3.在线索引的重组和重建
BPS组件的作用
1.在内存中缓存数据
2.调用操作系统的IO进程,存取和访问磁盘中的数据
3.格式化表空间的页面数据
DPS组件的作用
1.日志
2.锁
3.transaction管理
一个查询的处理流程是:CCI组件---->RDS组件---->DMS组件---->BPS组件
(IXM组件)
(SLS组件)
( DPS组件 )
(OSS组件、SQMO组件、BSU组件为以上组件提供服务和支持)
在db2diag.log中,经常会出现以sql开头的Function Name。用db2diag工具查看db2diag.log时,可以用-gi “funcname=sql........”选项进行过滤查看。利用这个Function Name,可以判断相关的日志来自DB2的哪个组件,该组件发生了些什么事情。
db2diag.log也会出现“errno:#### ####”,通过查看操作系统的errno.h文件,可了解相关的错误内容。
sqlcode或返回码在db2diag.log中以负数形式出现,执行db2 ? sql####可了解引起错误的原因
db2diag.log中的ZRC码可通过db2diag -rc ########查看错误解释
可借助db2trc追踪特定组件
此文大部分内容来自牛新庄的<深入解析DB2>