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

DB2那些常用命令其实挺多,平时工作中总会用到的合集分享

DB2数据库管理员日常运维手册、开发者SQL操作备忘清单)

得知道命令在哪里执行,DB2的命令主要是在DB2的命令行处理器(CLP)里跑的,你先要登录到安装了DB2的服务器上,然后用db2命令进入交互模式,或者直接在系统shell里每条命令前面加上db2也行,就是开头有个db2 =>提示符的那个界面。

最最基础的入门命令

这几个命令是每天打开电脑可能就会用到的,像敲门砖一样。

  1. 连接数据库 你想操作数据库,总得先连上它吧,命令是connectconnect to sample user db2inst1 using password 这里sample是数据库名字,db2inst1是用户名,password当然是密码,如果已经用操作系统用户登录了,有时候可以直接connect to sample就行。

  2. 看表里有什么 这就是大名鼎鼎的select语句了,别看它简单,能变出好多花样。 最直接的就是:select * from 表名,这个星号代表所有列,但工作中一般不这么用,尤其表很大的时候,会卡死,通常我们会配上fetch first 10 rows only,只看前10行。 完整版:select * from 员工表 fetch first 10 rows only

  3. 断开连接 干完活了,优雅地断开一下,命令是:connect reset,这个好记。

数据库和实例层面的操作

这些命令通常需要高一点的权限,DBA(数据库管理员)用得更多。

  1. 启动和停止DB2实例 有时候数据库会宕掉或者需要重启服务,启动实例命令:db2start,停止实例命令:db2stop,注意,停止之前最好用db2 force applications all把所有的连接都强制断开,不然可能停不掉。

  2. 列出所有数据库 你可能会管理好几个数据库,怎么知道服务器上有哪些呢?用这个:list database directory,它会列出所有已经编目的数据库。

  3. 备份和恢复 这是DBA的保命技能,备份命令长得像这样:backup database sample to /home/backup_path,就是把名叫sample的数据库备份到指定的目录下。 恢复命令就是:restore database sample from /home/backup_path taken at 20240520120000,这个taken at后面跟的是备份文件的时间戳,备份成功后会告诉你这个时间点。

表和相关对象的操作

这部分是开发和测试人员最常碰的。

  1. 建表 create table语句,这个比较复杂,因为要定义列的名字、类型。 create table 订单表 (订单号 int not null, 客户名 varchar(50), 金额 decimal(10,2))。 这里定义了三个列,订单号是整数且不能为空,客户名是最大50个字符的字符串,金额是总共10位数其中2位是小数的数值。

  2. 给表里插数据 建好空表后,要往里放数据,用insertinsert into 订单表 values (1001, '张三', 199.99)。 也可以指定列名插入:insert into 订单表 (订单号, 客户名) values (1002, '李四'),这样没指定的列就是空值。

  3. 改数据 数据写错了要修改,用updateupdate 订单表 set 金额 = 250 where 订单号 = 1002这里要千万小心! 一定要写上where条件,不然会把整个表的所有行的金额都改成250,那就出大事了,这就是传说中的“删库跑路”前奏。

  4. 删数据 删除用delete,同样,致命的where条件必须牢记! 只删一条:delete from 订单表 where 订单号 = 1001。 如果想清空整个表,但保留表结构,可以用delete from 订单表,或者效率更高的alter table 订单表 activate not logged initially with empty table

  5. 看表结构 你拿到一张不熟悉的表,第一件事就是看看它长啥样,有哪些列,命令是:describe table 表名,或者用它的简写desc table 表名,结果会列出所有列名、数据类型、是否允许为空等,非常直观。

  6. 查看执行计划 有时候你写的SQL跑起来特别慢,就需要看看数据库是怎么执行你这句SQL的,这叫执行计划,用explain命令。 最简单的是:explain plan for select * from 大表 where 条件,然后可以用db2exfmt等工具来生成一个容易读的报告,看看是不是全表扫描了,有没有走索引。

监控和排错命令

当系统慢或者出问题时,这些命令能帮上大忙。

  1. 看当前有哪些连接 命令是:list applications,这会显示所有连接到当前数据库的应用、是谁连的、在执行什么语句,如果发现异常连接或者想踢掉某个连接,可以先在这里找到对应的句柄(Application Handle)。

  2. 强制断开某个连接 如果某个查询卡死了,或者你想维护数据库需要清场,就用这个,先通过list applications找到那个应用的句柄,比如是12345,然后执行:force application (12345),括号不能少。

  3. 查看数据库配置参数 DB2有很多参数控制着它的行为,比如内存分配、日志大小等,查看实例级参数:get dbm cfg,查看某个数据库级的参数:get db cfg for 数据库名

  4. 看锁的情况 数据库里经常因为锁导致程序卡住,查看当前锁的状态:db2pd -db 数据库名 -locks,这个命令会输出比较详细的信息,能看到哪个连接锁住了哪个对象,另一个连接在等待。

一些实用小技巧

  1. 在系统shell里直接执行一条命令:不用进db2交互模式,直接写db2 "select * from 表名"

  2. 把命令执行结果输出到文件:可以在交互模式里用db2 => export to 文件名.del of del select * from 表名,这样查询结果就存到文件里了。

  3. 从文件导入数据到表:对应的就是import from 文件名.del of del insert into 表名

这些命令只是冰山一角,DB2的功能非常强大,最重要的是,尤其是在生产环境操作updatedelete时,一定要先写好where条件,最好先select一下确认条件是否正确,养成这个习惯能避免很多灾难性的错误。 来源综合:IBM官方DB2文档知识库、多年DBA岗位实践操作记录、内部培训材料整理)

DB2那些常用命令其实挺多,平时工作中总会用到的合集分享