DB2数据库基础命令

来源:互联网 发布:云墙 mac 编辑:程序博客网 时间:2024/05/07 01:42

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)

备份表空间,当load数据没有加nonrecoverable时表空间状态为0020:backup pending
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参数使默认设置生效
原创粉丝点击