Skip to content

DB2 核心配置文件

概述

DB2 数据库的配置文件是控制数据库实例和数据库行为的重要文件,包含了数据库的各种配置参数和设置。了解和掌握这些配置文件的结构、作用和管理方法,对于 DB2 数据库的安装、配置、优化和故障排除至关重要。

配置文件分类

DB2 配置文件主要分为以下几类:

  • 实例级配置文件:控制 DB2 实例的全局行为
  • 数据库级配置文件:控制特定数据库的行为
  • 用户级配置文件:控制用户会话的默认行为
  • 通信配置文件:控制数据库的网络通信
  • 安全配置文件:控制数据库的安全性设置
  • 日志配置文件:控制数据库日志的行为

实例级配置文件

db2systm 文件

文件路径

  • Linux/Unix:/home/db2inst1/sqllib/db2systm
  • Windows:%DB2INSTANCE%\db2systm

作用

  • 定义 DB2 实例的系统配置
  • 包含 DB2 实例的基本配置信息

内容示例

DB2SYSTEM=db2server
DB2INSTANCE=db2inst1

配置说明

  • DB2SYSTEM:指定 DB2 服务器的主机名
  • DB2INSTANCE:指定 DB2 实例名

db2nodes.cfg 文件

文件路径

  • Linux/Unix:/home/db2inst1/sqllib/db2nodes.cfg
  • Windows:%DB2INSTANCE%\db2nodes.cfg

作用

  • 定义 DB2 实例的节点配置
  • 用于 DB2 分区数据库环境
  • 包含每个节点的主机名、实例名和逻辑端口号

内容示例

0 db2server 0
1 db2server 1
2 db2server2 0

配置说明

  • 每行格式:node_number hostname logical_port
  • node_number:节点编号,从 0 开始
  • hostname:节点所在的主机名
  • logical_port:节点的逻辑端口号

db2profile 文件(Linux/Unix)

文件路径/home/db2inst1/sqllib/db2profile

作用

  • 设置 DB2 实例的环境变量
  • 用于初始化 DB2 命令行环境

内容示例

bash
#!/bin/sh
export DB2INSTANCE=db2inst1
export DB2_HOME=/home/db2inst1/sqllib
export PATH=$DB2_HOME/bin:$PATH
export LD_LIBRARY_PATH=$DB2_HOME/lib:$LD_LIBRARY_PATH

使用方法

bash
source /home/db2inst1/sqllib/db2profile

db2cshrc 文件(Linux/Unix)

文件路径/home/db2inst1/sqllib/db2cshrc

作用

  • 类似于 db2profile 文件
  • 用于 C shell 环境

db2cli.ini 文件

文件路径

  • Linux/Unix:
    • 系统级:/home/db2inst1/sqllib/cfg/db2cli.ini
    • 用户级:$HOME/sqllib/cfg/db2cli.ini
  • Windows:
    • 系统级:%DB2PATH%\cfg\db2cli.ini
    • 用户级:%APPDATA%\IBM\DB2\db2cli.ini

作用

  • 配置 DB2 CLI/ODBC 驱动的行为
  • 包含数据源配置信息

内容示例

[DSN_NAME]
Database=sample
Protocol=TCPIP
Hostname=db2server
ServiceName=50000

配置说明

  • 每个数据源对应一个节
  • 包含数据库连接的基本信息

db2dsdriver.cfg 文件

文件路径

  • Linux/Unix:
    • 系统级:/home/db2inst1/sqllib/cfg/db2dsdriver.cfg
    • 用户级:$HOME/sqllib/cfg/db2dsdriver.cfg
  • Windows:
    • 系统级:%DB2PATH%\cfg\db2dsdriver.cfg
    • 用户级:%APPDATA%\IBM\DB2\db2dsdriver.cfg

作用

  • 配置 DB2 数据服务器驱动程序
  • 支持更复杂的连接配置
  • 用于替代 db2cli.ini 文件

内容示例

xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <dsncollection>
    <dsn alias="SAMPLE" name="SAMPLE" host="db2server" port="50000" />
  </dsncollection>
  <databases>
    <database name="SAMPLE" host="db2server" port="50000">
      <parameter name="CurrentSchema" value="DB2INST1" />
    </database>
  </databases>
</configuration>

数据库级配置文件

数据库配置文件

文件路径

  • Linux/Unix:/home/db2inst1/sqllib/db2dump/<dbname>.cfg
  • Windows:%DB2INSTANCE%\db2dump\<dbname>.cfg

作用

  • 存储数据库的配置参数
  • 包含数据库的所有配置设置

查看方法

sql
GET DATABASE CONFIGURATION FOR <dbname>
-- 或
GET DATABASE CONFIGURATION FOR <dbname> SHOW DETAIL

修改方法

sql
UPDATE DATABASE CONFIGURATION FOR <dbname> USING <parameter> <value>
-- 或
ALTER DATABASE <dbname> CONFIGURE USING <parameter> <value>

重要配置参数

  • LOGARCHMETH1:归档日志方法
  • BUFFPAGE:缓冲池大小
  • LOCKTIMEOUT:锁超时时间
  • MAXAPPLS:最大应用程序连接数
  • SORTHEAP:排序堆大小

日志配置

文件路径

  • 活动日志:由数据库配置参数 NEWLOGPATH 指定
  • 归档日志:由数据库配置参数 LOGARCHMETH1 指定

查看日志配置

sql
GET DATABASE CONFIGURATION FOR <dbname> | grep -i log

重要日志参数

  • LOGFILSIZ:单个日志文件大小(4KB 页)
  • LOGPRIMARY:主日志文件数量
  • LOGSECOND:辅助日志文件数量
  • NEWLOGPATH:日志文件路径
  • LOGARCHMETH1:主归档方法
  • LOGARCHMETH2:辅助归档方法

通信配置文件

db2services 文件(Linux/Unix)

文件路径/etc/services(系统级)或 $HOME/.services(用户级)

作用

  • 定义 DB2 服务的端口号
  • 用于 TCP/IP 通信

内容示例

db2c_db2inst1      50000/tcp

配置说明

  • 格式:service_name port/protocol
  • service_name:服务名,通常为 db2c_<instance_name>
  • port:端口号,默认为 50000
  • protocol:通信协议,通常为 TCP

services 文件(Windows)

文件路径%SystemRoot%\system32\drivers\etc\services

作用

  • 类似于 Linux/Unix 系统的 /etc/services 文件
  • 定义 DB2 服务的端口号

db2comm.cfg 文件

文件路径

  • Linux/Unix:/home/db2inst1/sqllib/cfg/db2comm.cfg
  • Windows:%DB2INSTANCE%\cfg\db2comm.cfg

作用

  • 配置 DB2 实例的通信协议
  • 启用或禁用特定的通信协议

内容示例

TCPIP

配置说明

  • 每行一个通信协议
  • 支持的协议:TCPIPIPCSSLNPI

修改方法

sql
UPDATE DATABASE MANAGER CONFIGURATION USING COMM_ENABLED YES
UPDATE DATABASE MANAGER CONFIGURATION USING SVCENAME db2c_db2inst1

安全配置文件

db2auth.h 文件

文件路径

  • Linux/Unix:/home/db2inst1/sqllib/include/db2auth.h

作用

  • 定义 DB2 认证相关的常量和结构
  • 用于 DB2 外部认证插件开发

keystore 文件

文件路径:由数据库配置参数 KEYSTORE_LOCATION 指定

作用

  • 存储 SSL/TLS 证书和密钥
  • 用于数据库加密和安全通信

配置方法

sql
UPDATE DATABASE CONFIGURATION FOR <dbname> USING KEYSTORE_LOCATION /home/db2inst1/keystore/keystore.p12
UPDATE DATABASE CONFIGURATION FOR <dbname> USING KEYSTORE_TYPE PKCS12

audit.cfg 文件

文件路径

  • Linux/Unix:/home/db2inst1/sqllib/cfg/audit.cfg
  • Windows:%DB2INSTANCE%\cfg\audit.cfg

作用

  • 配置 DB2 审计功能
  • 定义审计策略和审计范围

内容示例

DB2INST1.AUDITPOLICY1:STATUS=ENABLED,AUDITING=ALL,ERROR TYPE=LOG,FILTER=NULL

配置说明

  • 格式:policy_name:STATUS=status,AUDITING=scope,ERROR TYPE=error_type,FILTER=filter
  • STATUS:审计状态(ENABLED/DISABLED)
  • AUDITING:审计范围(ALL/CHECKING/EXECUTE/OBJMAINT/SECMAINT/VALIDATE)
  • ERROR TYPE:错误处理类型(LOG/MSG/TERM)
  • FILTER:审计过滤条件

其他重要配置文件

db2diag.log 文件

文件路径

  • Linux/Unix:/home/db2inst1/sqllib/db2dump/db2diag.log
  • Windows:%DB2INSTANCE%\db2dump\db2diag.log

作用

  • 记录 DB2 实例和数据库的诊断信息
  • 包含错误、警告和信息性消息
  • 用于故障排除和性能分析

查看方法

bash
# 查看最新的诊断日志
tail -f /home/db2inst1/sqllib/db2dump/db2diag.log

# 搜索特定错误
grep -i error /home/db2inst1/sqllib/db2dump/db2diag.log

配置方法

sql
UPDATE DATABASE MANAGER CONFIGURATION USING DIAGLEVEL 3
UPDATE DATABASE MANAGER CONFIGURATION USING DIAGSIZE 100

db2dump 目录

文件路径

  • Linux/Unix:/home/db2inst1/sqllib/db2dump
  • Windows:%DB2INSTANCE%\db2dump

作用

  • 存储 DB2 实例和数据库的诊断信息
  • 包含各种日志文件和故障转储文件

主要文件

  • db2diag.log:诊断日志文件
  • db2eventlog.evt:事件日志文件
  • core:核心转储文件(Linux/Unix)
  • <dbname>.cfg:数据库配置文件

sqllib/cfg 目录

文件路径

  • Linux/Unix:/home/db2inst1/sqllib/cfg
  • Windows:%DB2INSTANCE%\cfg

作用

  • 存储 DB2 实例的配置文件
  • 包含各种配置模板和默认设置

主要文件

  • db2cli.ini:CLI/ODBC 配置文件
  • db2dsdriver.cfg:数据服务器驱动配置文件
  • db2comm.cfg:通信协议配置文件
  • audit.cfg:审计配置文件

配置文件管理最佳实践

配置文件备份

备份方法

  • 定期备份所有重要配置文件
  • 使用版本控制系统管理配置文件变化
  • 备份到安全的位置,防止丢失

推荐备份的配置文件

  • db2nodes.cfg
  • db2cli.ini/db2dsdriver.cfg
  • db2comm.cfg
  • 数据库配置(使用 db2look 命令)
  • 缓冲池配置(使用 db2look 命令)

备份命令示例

bash
# 备份配置文件
tar -cvf db2_config_backup_$(date +%Y%m%d).tar /home/db2inst1/sqllib/cfg /home/db2inst1/sqllib/db2nodes.cfg

# 使用 db2look 备份数据库配置
db2look -d sample -l -o db2_sample_config.sql

配置文件修改流程

  1. 备份原配置文件:在修改前先备份原配置文件
  2. 修改配置文件:根据需要修改配置参数
  3. 验证配置文件:确保修改后的配置文件语法正确
  4. 应用配置变更:重启实例或数据库使配置生效
  5. 验证配置生效:检查配置是否正确应用
  6. 测试功能:测试相关功能是否正常工作
  7. 记录变更:记录配置变更的原因、内容和时间

配置文件权限管理

权限设置原则

  • 配置文件应设置适当的权限,防止未授权访问
  • 只有 DB2 实例所有者和管理员才能修改配置文件
  • 配置文件的权限应遵循最小权限原则

权限设置示例

bash
# 设置配置文件权限
chmod 640 /home/db2inst1/sqllib/cfg/db2cli.ini
chown db2inst1:db2iadm1 /home/db2inst1/sqllib/cfg/db2cli.ini

配置文件版本控制

推荐做法

  • 使用 Git 等版本控制系统管理配置文件
  • 为每个配置变更创建提交记录,包含变更原因和内容
  • 定期合并配置变更到主分支
  • 保留配置文件的历史版本,便于回滚

Git 配置示例

bash
# 初始化 Git 仓库
cd /home/db2inst1/sqllib/cfg
git init
git add .
git commit -m "Initial DB2 configuration files"

# 修改配置文件后提交
git add db2cli.ini
git commit -m "Update DB2 CLI configuration for new datasource"

配置文件故障排除

配置文件损坏修复

症状

  • DB2 实例无法启动
  • 数据库连接失败
  • 错误日志中出现配置文件相关错误

修复方法

  1. 从备份恢复配置文件
  2. 重新生成配置文件
  3. 检查配置文件权限
  4. 验证配置文件语法

重新生成配置文件示例

bash
# 重新生成 db2nodes.cfg 文件
rm /home/db2inst1/sqllib/db2nodes.cfg
db2start
# DB2 会自动生成默认的 db2nodes.cfg 文件

配置参数错误排查

症状

  • 数据库性能下降
  • 数据库出现异常行为
  • 错误日志中出现配置参数相关错误

排查方法

  1. 检查配置参数值是否合理
  2. 对比配置参数的默认值和当前值
  3. 查看配置参数的修改历史
  4. 测试不同的配置参数值

查看配置参数历史

sql
SELECT * FROM SYSIBMADM.DBCFG_HISTORY
WHERE DBNAME = 'SAMPLE'
ORDER BY TIMESTAMP DESC

配置文件位置问题

症状

  • DB2 无法找到配置文件
  • 配置变更不生效

排查方法

  1. 确认配置文件的正确路径
  2. 检查环境变量设置
  3. 验证配置文件的存在性
  4. 检查配置文件的权限

版本差异

版本配置文件变化
DB2 9.7引入了 db2dsdriver.cfg 文件,用于替代 db2cli.ini
DB2 10.1增强了安全配置文件,支持更细粒度的权限控制
DB2 10.5改进了诊断日志配置,增强了故障排除能力
DB2 11.1引入了新的配置参数,增强了云环境支持
DB2 11.5改进了配置文件管理,支持更灵活的配置方式

常见问题(FAQ)

Q1: 如何查看 DB2 实例的所有配置文件?

A1: 可以使用以下命令查看 DB2 实例的配置文件:

bash
# Linux/Unix
ls -la /home/db2inst1/sqllib/cfg/
ls -la /home/db2inst1/sqllib/db2nodes.cfg
ls -la /home/db2inst1/sqllib/db2systm

# Windows
dir %DB2INSTANCE%\cfg\
dir %DB2INSTANCE%\db2nodes.cfg
dir %DB2INSTANCE%\db2systm

Q2: 修改配置文件后,如何使配置生效?

A2: 根据配置文件的类型,使配置生效的方法不同:

  • 实例级配置文件:通常需要重启实例(db2stop force; db2start
  • 数据库级配置文件:有些参数需要重启数据库,有些参数立即生效
  • 通信配置文件:需要重启实例
  • 用户级配置文件:新会话自动生效

Q3: 如何备份 DB2 数据库的所有配置?

A3: 可以使用以下方法备份 DB2 数据库的所有配置:

bash
# 使用 db2look 命令备份数据库配置
db2look -d sample -l -o db2_sample_config.sql

# 备份实例级配置文件
tar -cvf db2_instance_config.tar /home/db2inst1/sqllib/cfg /home/db2inst1/sqllib/db2nodes.cfg

Q4: 如何恢复损坏的配置文件?

A4: 如果配置文件损坏,可以从备份恢复,或者重新生成配置文件。对于实例级配置文件,可以尝试重新创建实例来生成默认配置文件。

Q5: 配置文件的权限应该如何设置?

A5: 配置文件的权限应该遵循最小权限原则,只有 DB2 实例所有者和管理员才能读取和修改配置文件。推荐的权限设置:

  • 文件权限:640(所有者可读写,组可读,其他人不可访问)
  • 目录权限:750(所有者可读写执行,组可读执行,其他人不可访问)

Q6: 如何查看配置参数的默认值?

A6: 可以使用以下命令查看配置参数的默认值:

sql
# 查看数据库配置参数的默认值
GET DATABASE CONFIGURATION FOR <dbname> SHOW DETAIL | grep -i default

# 查看实例配置参数的默认值
GET DATABASE MANAGER CONFIGURATION SHOW DETAIL | grep -i default

Q7: 如何比较两个配置文件的差异?

A7: 可以使用 diff 命令比较两个配置文件的差异:

bash
diff /home/db2inst1/sqllib/cfg/db2cli.ini.backup /home/db2inst1/sqllib/cfg/db2cli.ini

Q8: 如何自动化管理 DB2 配置文件?

A8: 可以使用以下方法自动化管理 DB2 配置文件:

  • 使用配置管理工具(如 Ansible、Puppet、Chef)
  • 编写脚本定期备份和检查配置文件
  • 使用版本控制系统管理配置文件变化
  • 建立配置变更审批流程

Q9: 配置文件中的参数值有哪些单位?

A9: DB2 配置参数使用的单位包括:

  • 缓冲池大小:4KB 页
  • 日志文件大小:4KB 页
  • 内存大小:字节、页或百分比
  • 时间:秒

Q10: 如何查看配置文件的修改时间?

A10: 可以使用 ls -l 命令查看配置文件的修改时间:

bash
ls -l /home/db2inst1/sqllib/cfg/db2cli.ini

总结

DB2 核心配置文件是数据库运维管理的重要组成部分,掌握这些配置文件的结构、作用和管理方法,对于保障数据库系统的稳定运行至关重要。通过合理配置和管理这些文件,可以优化数据库性能、提高系统安全性、简化故障排除过程。

建议建立完善的配置文件管理机制,包括定期备份、版本控制、变更审批流程等,确保配置文件的安全性和一致性。同时,要关注 DB2 版本更新带来的配置文件变化,及时调整配置管理策略。