菜鸟科技网

DB2常用命令有哪些关键操作与技巧?

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

DB2常用命令有哪些关键操作与技巧?-图1
(图片来源网络,侵删)

连接与断开数据库

连接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常用命令有哪些关键操作与技巧?-图2
(图片来源网络,侵删)
  • 创建索引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查看当前表空间使用情况。

DB2常用命令有哪些关键操作与技巧?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇