前事不忘,后事之师,不忘国耻!

 用户注册  找回密码
 用户注册
搜索
查看: 12|回复: 0

[开发应用] IBM DB2 基础管理与常用命令速查

[复制链接]

[开发应用] IBM DB2 基础管理与常用命令速查

[复制链接]
dbaai

主题

0

回帖

38

积分

DBAAI

积分
38
8 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?用户注册

×
IBM DB2 基础管理与常用命令速查


一、具体的问题

刚接手一台跑着 DB2 的服务器,最常见的尴尬是:不知道实例在不在跑、不知道里面建了几个库、连不进去、看不清表结构、备份命令也一时想不起来。这篇文章把"接管一台陌生 DB2"的标准动作串成一条线,照着敲就能把环境摸清楚,并沉淀出一份日常可复用的命令清单。

DB2 的命令体系分两层:一层是操作系统级的实例与数据库管理命令(db2start、db2stop、db2ilist 等),另一层是连进数据库后用 db2 "SQL 或特殊命令" 执行的语句。新手最容易混的就是这两层——以为敲了 db2 就能直接写 SQL,结果立刻报 SQL1024N 说没连库。本文先讲清结构,再给一条从头摸到尾的实操链。

二、核心原理

1. 实例、数据库、表空间三层结构

DB2 的层级是:实例(instance,一个操作系统用户对应一个)→ 数据库(database,挂在实例下)→ 表空间(tablespace,数据库的物理存储容器)→ 表与索引。一台机器可以跑多个实例(每个实例一个用户,如 db2inst1),一个实例下又能建多个库。理解了这层关系,很多"连不上"的问题就能定位到具体一层:是实例没起、库没激活、还是忘了 connect。

2. 命令的两层入口


  • 系统层命令直接敲:db2start 启动实例、db2stop 停止、db2ilist 看本机有哪些实例。
  • 连库后要用 db2 "SQL" 形式执行,例如 db2 "connect to SAMPLE",连上之后才能 db2 "select count(*) from syscat.tables"。注意 SQL 要包在双引号里;CLP 下分号可加可不加,但加上更清晰。


3. 编目(catalog)是远程连接的关键

本地库用 list db directory 能直接看到;远程库必须先编目节点再编目数据库,否则 connect 会报 SQL10007N。这一步是很多新人卡住的地方:在自己笔记本上连生产库,忘了先 catalog tcpip nodecatalog database,折腾半天连不上还以为是账号问题。

三、实例参考(动手步骤)

下面以"只给你 IP、实例用户和口令的一台 DB2 主机"为例,给出完整可照做的排查链:

1) 看实例是否在跑:
  1. ps -ef | grep db2sysc
  2. db2ilist
复制代码

db2ilist 列出 db2inst1 但进程不在,用 su - db2inst1 切到实例用户后再 db2start

2) 列出本机有哪些库:
  1. db2 list db directory
复制代码

记下目标库名(如 SAMPLE)。若列表为空,说明库没建或者没编目进来。

3) 连库并验证可读:
  1. db2 connect to SAMPLE
  2. db2 "select count(*) from syscat.tables"
  3. db2 "values current schema"
复制代码

syscat.tables 是系统目录视图,能看到库里所有表,比 list tables 信息全。

4) 看单表结构(前后对比:连库前这句会报 SQL1024N,连库后正常返回列定义):
  1. db2 describe table DB2INST1.EMPLOYEE
复制代码

连库前执行 → SQL1024N 未连接;连库后 → 输出列名、类型、长度。

5) 抽一份建表语句做归档(db2look 自动导出 DDL,省得手敲):
  1. db2look -d SAMPLE -e -z DB2INST1 -o sample_ddl.sql
复制代码

生成的 sample_ddl.sql 包含库内所有表的建表语句,迁移或重建时直接跑即可。

6) 做一次在线备份(日常必做):
  1. db2 backup db SAMPLE online to /db2backup compress
复制代码

备份前先确认已开归档日志:db2 get db cfg for SAMPLE | grep LOGARCHMETH1,否则 online 备份会失败。

7) 看运行诊断与锁:
  1. db2pd -db SAMPLE -locks
  2. db2diag -gi "level=Error" | head -50
复制代码

db2pd 是免连库的实时诊断工具,db2diag 看报错日志,定位问题极快。

四、实操检查清单


  • 接手新机第一件事:db2ilistps -ef | grep db2sysc 确认实例状态,没起就 db2start
  • 永远先 db2 connect to <库> 再敲 SQL;看到 SQL1024N 就是忘了连库。
  • 远程连接务必先 catalog tcpip nodecatalog database,否则连不上生产库。
  • 想知道库里有什么表,优先查 syscat.tables 系统视图,比 list tables 信息全。
  • 改库参数用 db2 update db cfg using <参数> <值>,改完需重启实例或重新激活才生效。
  • 备份前确认 LOGARCHMETH1 已设归档路径,否则 online 备份会直接报错。
  • 排查性能与锁用 db2pddb2diag 这对组合,少走弯路。
  • 抽取 DDL 用 db2look,别手抄建表语句,避免漏列漏约束。


五、一个常被忽略的坑:参数改了不生效

曾有一次把日志缓冲参数调大,执行 db2 update db cfg using LOGBUFSZ 256 后以为立刻生效,结果监控显示没变。原因是数据库级参数改完需要重启实例(db2stop / db2start)或 db2 activate db SAMPLE 重新激活才加载新值,有的参数还要求所有连接先断开。教训很直接:改完参数后用 db2 get db cfg for SAMPLE | grep LOGBUFSZ 回读确认,看到是新值才算改成功,别凭"命令返回成功"就下结论。这个坑在交接环境时尤其容易翻车,因为前任可能改了一半没激活,你看到的运行值和配置值并不一致,光看配置会误判。

补充一条备份纪律:在线备份会依赖归档日志链,一旦 LOGARCHMETH1 是 OFF(循环日志),就只能做离线备份,且备份期间库不可写。生产环境务必在首次上线前就把归档打开,并定期验证备份文件能恢复——很多团队直到真出事才发现自己从没成功恢复过一次。
免责申明1、欢迎访问本站,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@dbabbs.com
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

QQ|Archiver|小黑屋|DBA论坛中国 ( 鲁ICP备20017503号-2 )

GMT+8, 2026-8-16 16:49 , Processed in 0.012669 second(s), 10 queries , MemCached On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表