DB2 数据库操作命令

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

DB2 结构层次:

实例(主机)、数据库、表空间、数据库对象

概念关系:

DB2可在同一个操作系统中存在多个实例(Oracle 1个),每个实例可包含多个数据库,并且同一个实例内部的数据库彼此独立,数据库维护表空间(数据物理存储的映射),表空间中包含真正的数据表,如果创建数据表时未指定表空间,则使用默认空间

表空间分类

  • 数据库管理表空间:Database Management Space : DMS:

    • 特点:需要手动指定container(物理存储)和存储数据的文件名,并确保足够的磁盘使用空间
  • 系统管理表空间:System Management Space : SMS

    • 特点:无需手动创建和维护数据存储文件,可以自动扩容

查看表空间信息:(数据不能导入DB,可查看表空间使用情况) db2 list tablespaces show detail

数据库命令

  • 启动DB2:db2start(启动默认实例,默认实例可配置)
  • 停止数据库:db2stop
  • 连接数据库(编目数据库):db2 connect to user using
  • 断开数据库:db2 connect reset
  • 列出所有数据库:db2 list db directory
  • 列出所有激活的数据库:db2 list active databases
  • 获取DB所有配置信息:db2 get db cfg
  • 删除数据库:db2 drop database

实例命令

  • 启动实例:db2start
  • 设置默认实例:set db2instance=实例名
  • 查看所有实例:db2ilist
  • 创建实例:db2icrt 实例名
  • 删除实例:db2drop 实例名
  • 查看当前实例:db2 get instance

数据表命令

  • 列出所有用户表:db2 list tables
  • 列出所有系统表:db2 list tables for system
  • 列出用户表:db2 list tables for
  • 列出特定用户表:db2 list tables for schema
  • 创建相同结构的数据表:db2 create table 新表名 like 原始表名
  • 备份数据表:db2 insert into 导入表 select *from 到出表
  • 查询表信息:db2 select *from 表名
  • 显示表结构:db2 describe table 表名
  • 修改列:db2 alter 表明 add column 列名 set 字段类型
  • 修改字段:db2 alter table 表名 alter 列名 set data type 字段类型
  • 删除主键:alter table 表名 drop primary key

其他命令

  • 执行脚本:db2 -tvf scripts.sql
  • 帮助命令:db2 ? 命令

备份数据库:db2 backup (前提:断开数据库连接) 恢复数据库:db2 restore (源DB)

备份表空间

  • db2 backup db 数据库名 user 用户名 using 密码
  • tablespace 表空间名 online to 备份目录

查看结点目录:用于客户端链接远程数据库的入口

  • db2 list node directory

查看DB目录:真正访问数据库数据的入口

  • db2 list db directory

数据导出

  • db2 export to 目标文件路径 of del modified by coldel0X0F codepage=1208 nochardel select * from 表名

大字段导出/导入:方便将大字段和小字段分离,便于管理

  • export to 目标文件路径 of del lobs to 大字段保存文件路径 select语句
  • import from 目标文件路径 of del lobs from 大字段文件路径 insert/replace into 表名

数据导入

  • db2 load from 源数据文件路径 of del modified by coldel0x0f codepage=1208 nochardel insert/replace into 数据表名 nonrecoverable

  • db2 import from 源数据文件路径 of del modified by coldel0x0f codepage=1208 nochardel commitcount 10000 insert into 表名

DB2运维工具:db2top(强烈推荐)、db2look


DB2 Catalog编目

目的:客户端链接远程数据库服务器:

  1. 编目TCPIP连接节点: db2 catalog tcpip node [local_node_name] remote [ip] server [port]
  2. 将远程数据库于本地节点绑定: db2 catalog database as at node [local_node_name]
  3. 刷新DB2高速缓存:db2 terminate

小技巧

  • 清空表数据,但不会记录事务日志,测试环境节省空间: alter table 表名 activate not logged initially

DB2 问题

sqlCode 668:表挂起:

  1. 重新组织数据表:reorg table <表名>
  2. 解挂:db2 load from /dev/null of del terminate into
  3. 查询表状态:db2 load query table<表名>"

注意事项

  1. 多个事务对同一张表进行增、删、改操作,容易造成表死锁
  2. import数据导入会增加DB2系统日志,造成空间不足
  3. 如果导入数据存在主键重复,可能造成后1条数据无法插入,导致数据丢失
  4. 如果数据表定义了默认值,db2数据导入命令需要制定usedefaults参数使默认设置生效

转载于:https://my.oschina.net/yangzhiwei256/blog/3013889

你可能感兴趣的:(DB2 数据库操作命令)