当前位置:首页 > 问答 > 正文

db2数据库那些常用命令,学会了管理起来其实没那么难

IBM官方文档、DB2数据库管理实战经验总结)

DB2数据库虽然听起来高大上,但只要掌握一些常用命令,日常管理就会变得清晰简单,下面这些命令就像你的工具箱,用熟了就能应对大部分情况。

连接数据库的“钥匙”

管理数据库的第一步就是连上它,这就像回家要先开门一样。

  • 连接本地数据库:如果你就在安装DB2的服务器上,最简单,打开命令行,输入 db2 connect to 你的数据库名,数据库叫SAMPLE,就输 db2 connect to sample,看到“数据库连接成功”的提示,就说明门开了。
  • 连接远程数据库:如果要管理别的机器上的DB2,需要多指定一些信息,命令是 db2 connect to 数据库名 user 用户名 using 密码,这里要注意,如果数据库服务器不在默认端口(50000)上,还需要在连接前用 db2 catalog tcpip node 节点名 remote 服务器地址 server 端口号 先做个登记,告诉你的电脑对方在哪。(来源:DB2基础连接配置指南)

连上之后,你的操作都在这个连接会话里进行,想断开连接?用 db2 connect reset 或者直接 db2 terminate 就行。

看看数据库里有什么“家当”

连进去之后,你肯定想知道里面有哪些表、视图之类的对象。

  • 列出所有表db2 list tables 这个命令会列出当前用户有权限看到的所有表,如果想看所有用户的表,可以加上模式(Schema)信息,db2 list tables for all
  • 查看表结构:光知道表名不够,还得知道表里有哪些列,用 db2 describe table 表名,这个命令会详细列出每个列的名字、数据类型、是否允许为空等,一目了然。(来源:DB2信息中心 - 数据定义语句)
  • 查看数据库状态:数据库是正常运行还是有点小毛病?db2 get db cfg 可以查看数据库的配置参数,而 db2pd -db 数据库名 则能提供更详细的运行时状态信息,比如当前有哪些连接、锁的情况等,相当于数据库的“体检报告”。

操作数据的“增删改查”

这是最核心的部分,和数据库里的数据打交道。

  • 查询数据:就是常用的SQL,db2 "select * from 表名 where 条件",注意,在DB2命令行里,SQL语句最好用双引号包起来整体执行。
  • 插入数据db2 "insert into 表名 (列1, 列2) values (值1, 值2)"
  • 更新数据db2 "update 表名 set 列名=新值 where 条件"千万注意,更新操作一定要加where条件,不然会把整张表的数据都改掉!
  • 删除数据db2 "delete from 表名 where 条件",同样,删除操作也要格外小心,没有where条件会清空整张表。

管理表格的“创建与修改”

除了操作数据,有时也需要调整表的结构。

  • 创建表db2 "create table 表名 (列1 数据类型, 列2 数据类型, ...)",创建一个简单的用户表:db2 "create table users (id int, name varchar(50))"
  • 给表加个新列:表用了一阵子,发现少了个字段怎么办?用 db2 "alter table 表名 add column 新列名 数据类型",给users表加个年龄字段:db2 "alter table users add column age int"
  • 给列建个索引:如果发现按某个条件查询特别慢,比如经常按名字找人,可以给名字列建个索引加速:db2 "create index idx_name on users(name)",索引就像书的目录,能帮你快速定位。(来源:DB2性能调优基础)

数据的“备份与恢复”

这是数据库管理员的“保命”技能,非常重要。

  • 备份数据库:定期备份是必须的,最简单的完整备份命令是 db2 backup db 数据库名 to 备份路径db2 backup db sample to /home/backup/,DB2还支持在线备份,不影响数据库正常使用。
  • 恢复数据库:万一数据出问题了,就从备份里恢复,命令是 db2 restore db 原数据库名 from 备份路径 taken at 备份时间戳,恢复操作需要谨慎,通常需要在数据库没有连接的情况下进行。(来源:DB2高可用性灾难恢复概述)

监控与日常维护

让数据库保持健康运行。

  • 看看谁连在数据库上db2 list applications 可以列出所有当前连接的应用程序和用户,如果发现异常连接或者想维护需要踢掉用户,可以先从这里找到对应的句柄(Handle),然后用 db2 force application (句柄号) 强制断开。
  • 重组表:数据库用久了,数据增删改频繁,表可能会产生很多碎片,影响性能,这时可以重组表:db2 reorg table 表名,重组就像给表做一次“碎片整理”,能让查询速度变快。
  • 更新统计信息:DB2优化器靠统计信息来决定怎么执行查询最快,当数据变化很大后,记得更新统计信息:db2 runstats on table 表名,这样DB2才能制定出最优的查询计划。

这些命令不用死记硬背,多用几次就熟了,刚开始可以在测试环境多练习,尤其是涉及修改数据和结构的命令,一定要确认无误再执行,管理DB2数据库就是一个熟能生巧的过程,有了这些常用命令在手,你就有了底气。