DB2数据库作为IBM推出的关系型数据库管理系统,广泛应用于企业级应用中,掌握其常用命令是数据库管理和开发的基础,以下从连接数据库、表管理、数据操作、权限控制、备份恢复等多个维度详细介绍DB2的常用命令。

连接与断开数据库
连接DB2数据库是操作的前提,常用命令包括:
- 连接数据库:
db2 connect to <数据库名> user <用户名> using <密码>
,例如db2 connect to sample user db2admin using 123456
,该命令用于连接到指定的数据库,输入用户名和密码进行身份验证。 - 断开连接:
db2 connect reset
,用于断开当前与数据库的连接,释放资源。 - 查看连接状态:
db2 list application
,列出当前所有数据库连接的应用程序信息,包括应用句柄、用户名、连接状态等;db2 force application (<应用句柄>)
可强制断开指定连接,例如db2 force application (10)
。
表空间与表管理
表空间是DB2中存储数据的逻辑容器,表是数据存储的基本单元。
- 创建表空间:
db2 create tablespace <表空间名> managed by automatic storage
,例如db2 create tablespace tbs1 managed by automatic storage
,创建自动存储表空间,简化空间管理。 - 创建表:
db2 create table <表名> (<列名1> <数据类型1>, <列名2> <数据类型2>, ...)
,例如db2 create table student (id int, name varchar(50), age int)
,创建包含学号、姓名和年龄的表;可通过db2 create table <表名> like <源表名> copy using <目标表空间名>
复制表结构。 - 查看表信息:
db2 describe table <表名>
,查看表的结构信息,包括列名、数据类型、是否为空等;db2 select * from syscat.tables where tabname='<表名>'
查询表的元数据信息。 - 修改表结构:
db2 alter table <表名> add column <新列名> <数据类型>
添加列,例如db2 alter table student add column class varchar(20)
;db2 alter table <表名> drop column <列名>
删除列(需确保无数据依赖)。 - 删除表:
db2 drop table <表名>
,删除表及其数据,例如db2 drop table student
。
数据操作命令
数据的增删改查是数据库核心操作:
- 插入数据:
db2 insert into <表名> values (<值1>, <值2>, ...)
,例如db2 insert into student values (1, '张三', 20, '一班')
;若需批量插入,可通过db2 import from <文件名> of del insert into <表名>
,从 delimited 文件导入数据。 - 查询数据:
db2 select <列名1>, <列名2> from <表名> where <条件> order by <排序列名>
,例如db2 select name, age from student where age>18 order by age desc
;支持聚合函数如count()
,sum()
,avg()
等,例如db2 select count(*) from student
。 - 更新数据:
db2 update <表名> set <列名1>=<新值1>, <列名2>=<新值2> where <条件>
,例如db2 update student set age=21 where id=1
。 - 删除数据:
db2 delete from <表名> where <条件>
,例如db2 delete from student where age<18
,无条件删除将清空表(db2 truncate <表名>
可快速清空表且不记录日志)。
索引与视图管理
索引提升查询效率,视图简化数据访问:

- 创建索引:
db2 create index <索引名> on <表名> (<列名>)
,例如db2 create index idx_student_id on student(id)
,为学号列创建索引。 - 查看索引:
db2 select * from syscat.indexes where tabname='<表名>'
。 - 创建视图:
db2 create view <视图名> as <查询语句>
,例如db2 create view v_student_info as select id, name, class from student
。 - 删除视图:
db2 drop view <视图名>
。
权限与安全管理
DB2通过权限控制用户对数据库对象的访问:
- 授权命令:
db2 grant <权限类型> on <表名> to <用户名>
,权限类型包括select
,insert
,update
,delete
等,例如db2 grant select, update on student to user1
。 - 撤销权限:
db2 revoke <权限类型> on <表名> from <用户名>
,例如db2 revoke delete on student from user1
。 - 创建用户:
db2 update dbm cfg using SYSADMUSERS <用户名>
将用户设为系统管理员,或通过db2 grant connect on database to <用户名>
授予连接数据库权限。
备份与恢复
保障数据安全的关键操作:
- 备份数据库:
db2 backup db <数据库名> to <路径>
,例如db2 backup db sample to /backup
,将数据库备份到指定目录。 - 恢复数据库:
db2 restore db <数据库名> from <路径> taken at <时间戳>
,例如db2 restore db sample from /backup taken at 20231010120000
。 - 日志备份:
db2 update db cfg for <数据库名> using logretain recovery
启用前滚恢复,确保事务可恢复。
常用维护命令
- 查看数据库状态:
db2 list database directory
列出本地数据库;db2 get dbm cfg
查看数据库管理器配置。 - 重组表:
db2 reorg table <表名>
,整理表碎片,提升查询性能;db2 runstats on table <表名>
更新表统计信息,优化器生成执行计划。 - 激活停用表:
db2 activate table <表名>
激活表,使其可访问;db2 deactivate table <表名>
停用表释放资源。
相关问答FAQs
Q1:DB2中如何查看当前数据库的连接数?
A1:可通过执行db2 get snapshot for applications on <数据库名>
获取当前数据库的详细连接信息,包括连接总数、活跃连接数等;或使用db2 list application
查看每个连接的应用句柄、用户名及状态,若需监控实时连接数,可在结果中筛选APPLICATION_STATE='ACTIVE'
的记录数量。
Q2:DB2表空间不足时如何扩容?
A2:若表空间为自动存储(automatic storage),可通过db2 alter tablespace <表空间名> increase <大小> M
手动扩容,例如db2 alter tablespace tbs1 increase 1000 M
;若为DMS表空间,需先扩展文件系统(如Linux下使用extendfs
),再执行db2 alter tablespace <表空间名> use <新文件路径> add <大小> M
添加容器文件,扩容前建议使用db2 list tablespaces show detail
查看当前表空间使用情况。
