1、基础知识
版本信息(一年一个小版本)
V9.0发布于 2006年
V10.5发布于 2013年
V11.5发布于 2023年
--查看数据库版本
db2level
支持的系统
- zSeries/iSeries/pSeries
- Windows
- Linux/Unix
支持的版本
- DB2 Express-C : 社区学习版本,仅支持2C16G
- DB2 Express : 社区收费版本,支持8C64G
- DB2 WorkGroup Server :企业组版本, 支持16C128G
- DB2 Enterprise Server :企业版本, 资源无限制
- DB2 Advanced Enterprise Server : 企业高级版本,资源无限制,包含多功能组件(集群等)
数据库组件
-
IBM DATA Server Client
针对于DBA,没有图形界面,只提供命令行 -
IBM DATA Server Runtime Client
针对于designer,有图形化界面,提供API -
IBM DATA Server Driver Package
针对于app,提供驱动程序
软件包地址
下载地址:
https://www.ibm.com/cn-zh/products/db2?lnk=flatitem
官方手册:
https://www.ibm.com/docs/en/db2/11.5
历史版本:
补丁地址(3个月左右一个补丁包)
补丁地址:
https://https://www-01.ibm.com/support/docview.wss?rs718&uid=swg27007053
补丁概览(截止至2020年):

2、体系结构
物理结构
- 实例 => 数据库 => 表空间 => 表空间容器(container) => 区(extent) => 数据页(datapage) (1:N)
1、一套服务器可以安装多个实例
2、一套实例有多个数据库,表空间,表空间容器,区,数据页构成
3、表空间容器有点类似于datafile,可以是目录,文件,设备
--查看实例,查看不同实例,是要切换不同用户
db2list
--查看实例下的用户
db2 list db directory
--链接数据库
db2 connect to <db_name>
--链接远端数据库
----远端编目(远端数据库文件映射到本地)
db2 CATALOG TCPIP NODE <node_name> REMOTE <remote_ip> SERVER <port>
db2 list node directory
----本地编目(远端数据库注册到本地实例)
db2 CATALOG DATABASE <db_name> AT NODE <node_name>
db2 list db dierectory
----登录数据库
db2 connect to <db_name> user <user_name> using <password>
--查看数据库连接
db2 list applications
--查看数据库表空间
db2 connect to <db_name>
db2 list tablespaces
3、安装
检查安装前提版本
系统版本要求
(Database reference content - Database fundamentals - Installing - Installation requirements for Db2 database products - database-system-requirements)
https://www.ibm.com/docs/en/db2/11.5?topic=database-system-requirements

安装方式
- 图形化部署
- 命令行部署
- 静默安装部署
- 源码部署
图形化部署
略
命令行部署
--环境检查
su - root
./db2prereqcheck
--安装软件
su - root
./db2_install
--交互1:输入软件安装目录
--交互2:需要安装的数据库组件产品(多个组件的话,用<空格>分隔)
--交互3:是否安装分区式特性(prueScale)
--创建用户
su - root
groupadd db2iadm1
groupadd db2fadm1
useradd -d /home/db2inst1 -g db2iadm1 db2inst1
useradd -d /home/db2fenc1 -g db2fadm1 db2fenc1
passwd db2inst1
passwd db2fenc1
sudo chage -M -1 db2inst1
sudo chage -M -1 db2fenc1
--创建实例
su - root
cd <软件安装路径>/instance
./db2icrt -u db2fenc1 db2inst1
su - db2inst1
db2start
db2list
--创建数据库
su - db2inst1
db2 create db <db_name>
db2 list db directory
4、实例管理
实例与用户的关系
- windows无需新建用户
- Linux/Unix的用户名与实例名一致(需要用户的home目录,缓存db2实例目录)
DB2环境变量
?环境变量优先级:全局DB2环境变量[g] > 实例级DB2环境变量[i] > 实例节点级DB2环境(分区环境) > 系统环境变量[e]
--检查环境变量设置
db2set -all
--设置环境变量
db2set
--查看所有可以进行定义的环境变量
db2set -lr
实例目录
存储实例相关的数据库信息,实例创建后自动创建,一般在/home/InstName/sqllib目录下
- 数据库诊断日志:sqllib/db2dump/db2diag.log
- 数据库编目目录:sqllib/sqldbdir/sqldbdir
- 数据库参数文件:sqllib/db2systm
- 分区节点配置文件:sqllib/db2nodes.cfg
使用db2icrt命令创建实例
用户状态必须要正常 - 可以调整用户永不过期
--Windows创建实例
$DB2DIR/bin/db2icrt <InstName>
--Linux/Unix创建实例
su - root
$DB2DIR/instance/db2icrt -u <FencedID> <InstName>

启动实例
需要su到实例同名用户下执行
su - db2inst1 db2start

远程连接/断开实例
一般用于远程连接实例
--连接实例
su - db2inst1
db2 attach to <InstName>
--断开实例
db2 detach
关闭实例
只能使用子参数force强制停止已有session链接的实例
su - db2inst1
db2stop
--强制停止实例
db2stop force

实例参数
每个实例一组参数,参数分为立刻生效和重启生效
--查看参数
db2 get dbm cfg
--修改参数
db2 update dbm cfg using <cfg_name> <cfg_new_values>
--置回参数
db2 reset dbm cfg
删除实例
使用root权限操作,会删除/home/InstName/sqllib目录,可以提前备份
su - db2inst1 db2stop force su - root $DB2DIR/instance/db2drop <InstName>

其他常用命令
--查看实例
db2ilist
--升级实例
db2iupdt
--迁移实例
db2imigr
--实例自启动
db2iauto
5、数据库管理
安装方式
- 图形化向导安装
- 命令行安装
命令行安装数据库
子参数语法解析
- 数据库存储路径,需要提前创建路径,并赋权
- automatic storage:数据自动存储参数,数据库级别设置表空间容器,在创建表空间时,不用再设置表空间容器了
- on: 数据库可以使用的表空间容器
- dbpath on: 数据库本地存储路径,主要存放日志,控制文件等基础文件
## 语法
automatic storage[yes|no] on {path|drive} dbpath on {path|drive}
## 示例:
create database db1 on /path;
--自动存储路径:/path
--存储路径:/path
create database db2 automatic stroage no on /path2;
--自动存储路径:未开启
--存储路径:/path2
create database db3 on /path3 dbpath on /dbpath3;
--自动存储路径:/path3
--存储路径:/dbpath3
create database db4 on /path4 dbpath on /dbpath4;
--自动存储路径:/path4
--存储路径:/dbpath4
create database db5 automatic stroage yes on /path5,/path6,/path7 dbpath on /dbpath5;
--自动存储路径:/path5,/path6,/path7
--存储路径:/dbpath5
- 数据库字符集和区域
- codeset: 字符集
- territory: 地区
- collect: 排序规则,创建数据库时,如指定为system或不指定,则由codeset,territory联合指定,如指定为identify,则为逐字节比较。一般设置为system即可
## 语法
using codeset {character-name} territory {territory_name} collect using {system|identify|collect_name}
## 实例
create database db1 using codeset UTF-8 territory US;
--字符集:UTF8
--地区:en_US
--排序:en_US.UTF8
create database db2 using codeset GBK territory CN collate using system;
--字符集:GBK
--地区:zh_CN
--排序:zh_CN.GBK
- 区,数据页大小
- pagesize: 数据及缓冲池数据页大小(4k,8k,16k,32k)
- dft_extent_sz:
## 语法
pagesize {4k|8k|16k|32k} dft_extent_sz [int]
## 示例
create database db1 pagesize 4k dft_extent_sz 5;
create database db2 pagesize 4096 dft_extent_sz 100;
- 默认表空间
- catalog tablespace: 系统编目表空间,数据字典
- temporary tablespace: 临时表空间,存放SQL操作生成临时结果集
- user tablespace: 默认的数据表空间
## 语法
catalog tablespace {tablespace_name} temporary tablespace {tablespace_name} user tablespace {tablespace_name}
数据库目录重要文件
-
数据库目录 : db_path/InstName/NODE0000/SQL00001/MEMBER0000
- db_path:数据库本地没记录
- instance_name:实例名
- NODE:用于区分多分区数据库
- SQL:用于区分数据库关联对象
- MEMBER: 用于区分数据库分区特定成员
-
全局分区目录下重要文件
- 表空间信息文件: SQLSPCS.1 / SQLSPCS.2
- 存储器组控制文件: SQLSGF.1 / SQLSGF.2
- 全局配置文件(不能直接修改):SQLDBCONF
- 历史记录文件:DB2HIST.ASC / DB2HIST.BAK
- 日志记录文件:SQLOGCTL.GLFH.1 / SQLOGCTL.GLFH.2
- 实例锁定文件:SQLINSLK / SQLTMPLK
-
特定成员目录下重要文件
- 缓冲池文件:SQLBP.1 and SQLBP.2
- 本地事件监控文件
- 日志记录文件:SQLOGCTL.LFH.1 / SQLOGCTL.LFH.1 / SQLOGCTL.LFH
- 本地配置文件:SQLDBCONF
6、表空间管理
表空间的结构

表空间类型
-
目录表空间
用于存放数据字段,默认名称为syscatspace -
临时表空间
- 系统临时表空间
用于存放分组 / 排序 / 链接 / 重组 / 创建索引等操作的结果集,每个数据库至少应该有一个系统临时表空间,默认名称为tempspace1 - 用户临时表空间
用于存储临时表,默认不创建,需要手动创建
- 系统临时表空间
-
用户表空间
存放用户表,索引等数据,默认为userspace1
表空间存储管理
-
系统管理表空间(SMS)
表空间容器为系统目录,空间的分配和管理由文件系统完成,一般优化参数较少,且性能表现较差

-
数据库管理表空间(DMS)
表空间容器为文件裸着裸设备,空间的分配和管理由数据库完成,可以创建普通表空间和大文件表空间(默认)

-
自动存储表空间(Auto Storage With DMS)
表空间容器的管理交由DMS自动管理,增加操作自动化,较少用户交互管理表空间成本,可以创建普通表空间和大文件表空间(默认),只有该方式可以使用存储器组
表空间的容量限制

创建表空间
表空间名不能同名,并且不能以sys开头
## 语法
create {large | regular | [system|user] temporary} tablepace tablespace_name
pagesize [nK]
managed by {automatic storage [storage_container][size_attr] | system using [system_container] extentsize [num-page | int(K|M|G)] | database using [database_container] extentsize [num-page | int(K|M|G)]}
prefetchsize [automatic | num-page | int(K|M|G)]
bufferpool [bufferpool_name]
droped table recovery [on|off]
## 示例
create tablespace tbs1;
create user temporary tablespace tbs2;
create large tablesapce tbs3 pagesize 8k;
create tablesapce tbs4 manged by database using (file '/dbpath/tbs1.dbf' 10m,file '/dbpath/tbs2.dbf' 100m);
管理维护表空间
## 查看表空间
db2 list tablespaces
db2 list tablespaces show detail
## 查看表空间容器
db2 list tablespace containers for tablespace_id [show detail]
## 修改表空间
alter tablespace tablespace_name 子选项
## 添加容器
alter tablespace tablespace_name add (device '/dev/sdb1' 100m, device '/dev/sdc1' 100m);
## 扩容容器
alter tablespace tablespace_name extend (all 1000); --所有的容器扩容为1000个pagesize
alter tablespace tablespace_name resize (file '/dbpath/df01.dbf' 10k) --将指定容器缩容为10k
## 删除容器
alter tablespace tablespace_name drop (file '/dbpath/db01.dbf');
## 重命名表空间
db2 rename tablespace tbs1 to tbs2;
## 删除表空间
db2 drop tablespace tbs1;
温差存储器组
- 通过将不同io性能的磁盘划分为存储器组实现dml性能的上升
- 默认存储器组为IBMSTOGROUP
- 每个表空间只能使用一个存储器组,一个存储器组可以对应多个表空间
--创建磁盘组
create stogroup sg1 on '/db2/fastdisk/sgpath1';
## 查看存储器组
db2 list db directory
db2 connect db_name
db2pd -d db_name -storagegroup
## 创建表空间,并指定存储器组
create tablespace tbs1 using stogroup sg1;
select tbspace,sgname,sgid from syscat.tablespaces;
## 变更表空间存储器组
alter tablespace tb1 using stogroup IBMSTOGROUP;
## 删除存储器组
alter tablespace tb1 using stogroup IBMSTOGROUP; ##先卸载再删除
drop stogroup sg1;
7、表管理
表的常用命令
##数据类型
数值型:smallint,int,bigint
小数型:decimal
浮点型:real,double
定长字符:char(254 byte)
变长字符:varchar(32672 byte)
长数据类型:long varchar(32700 byte)
字符大对象:clob
二进制大对象:blob
--创建表
db2 "create table t1 (id int,gender char(1),name varchar(100))"
db2 "create table t2 like t1"
db2 "create table t3 like t1 in tbs1" ##指定表空间
--查看表结构
db2 describe table <tabname>
--查看表所在的表空间
db2 list tablespaces
db2 "select tabname,tbspace,from syscat.tables where tabname='<tabname>'" ##表名大写
--表添加列
db2 "alter table t4 add c4 varchar(10)"
db2 "alter table t5 add column c5 interge set not null with default 1"
db2 describe table t4
db2 describe table t5
--修改列的数据类型
db2 "alter table t6 alter c6 set data type varchar(20) alter c1 set not null alter c2 drop not null"
db2 describe table t6
--删除列
db2 "alter table t7 drop c6"
--删除表
db2 "drop table t8"
--建立索引
db2 "create index ind_t9 on t9(id)"
db2 "create index ind_t10 on t10(id desc,name asc)" ##索引默认升序排列
db2 "create index ind_t11 on t11(id) allow reverse sacn" ##双向索引(双重asc和desc排序),并不是类似于oracle的key值倒序索引(主要用于分散热快)
db2 "create unique index ind_t12 on t12(id) include (name) in tbs1" ##索引中包含name列的record
--创建约束
db2 "create table t13 (id primary key auto_increment,name char(20) constraint cu_name unique,gender char(1) not null)"
--添加约束
db2 "alter table t14 add constraint unique(c1)"
db2 "alter table t15 add gender char(1) check (gender in ('M','W'))"
--外键约束
##外键级联操作
CASCADE -- 主表删除或修改记录时,子表也会对关联字段record进行修改。
RESTRICT -- (默认)删除或修改主表记录,子表中若有关联字段record,则不允许主表删除或修改
SET NULL -- 主表删除或修改主表记录时,子表会将关联字段record设为null。
ON UPDATE CASCADE -- 主表修改记录时,子表关联字段record也会修改。
ON DELETE CASCADE -- 主表删除记录时,子表关联字段record也会删除。
db2 "create table t8 (id integer not null primary key,foreign key(id) references t100(dep_id) ON UPDATE CASCADE ON DELETE CASCADE)"
8、物理备份与恢复
数据库运行日志
- activelog,前滚日志,记录数据DML操作
- 日志命名:S0000000.LOG(7位数字)
- 主日志文件:activelog主文件,数据库启动时,立刻分配空间
- 辅助日志文件:如果activelog不足的情况下,临时动态的生成次日志文件
- archivelog,前滚日志归档日志,用于备份前滚日志
- backuplog,备份日志,主要用于增量备份和前滚回复
--参数设置 logprimary -- activelog主日志文件个数,整型数值 logsecond -- activelog次日志文件个数,整型数值 logbusz -- 日志缓冲区 logfilesz -- 日志文件大小,整型数值,对应1个4K page newlogpath -- 手动设置的activelog路径,字符路径 mrriorlogpath -- 额外的activelog路径,主要用于冗余容灾,字符路径 blk_log_dsk_full -- 日志磁盘已满挂起,布尔 archretrydelay -- archivelog重试延迟,second时间,默认20s logarchcompr1 -- 主日志文件归档日志压缩,布尔 logarchcompr2 -- 次日志文件归档日志压缩,布尔 logarchmeth1 -- 主日志文件归档路径,字符路径,设置示例:disk:/tmp/db2arch | tsm logarchmeth2 -- 次日志文件归档路径,字符路径,设置示例:disk:/tmp/db2arch | tsm max_log -- 一个事务可以使用最大activelog百分比,整型数值 mincommit -- 组提交的最小commit数,整型数值
备份
- 全量备份
- 增量备份
- 累计增量备份:全量到本日的增量数据(backuplog)
- 差异增量备份:每天之间的增量数据(backuplog)
## 语法
backup database (user username using password) | tablespace tblpsc_name | online (默认是offline备份) | incremental (delta)
using tsm ( open sessions )| to [dir | dev]
buffer buffer_size | parallelism n
compress [compress_remark] | encrypt [encrypt_remark]
util_impact_priority
include logs (exclude logs)
## 参数说明
user username using password -- 备份的用户名密码(本地实例用户无需提供密码)
tablespace -- 备份表空间名称
online -- 在线备份,默认是offline备份
incremetal (delta) -- 增量备份
using tsm (open sessions) -- 使用tsm等第三方工具备份,open sessions - io会话数量
to [dri|dev] -- 直接备份的路径或者设备
buffer -- 备份时的缓存数量,4k为单位,不建议人工设置
parallelism -- 并行度,不建议设置人工设置
compress -- 压缩,跟加密只能二选一
encrypt -- 加密,跟压缩只能二选一
util_impact_priority -- 备份任务默认优先级(1-100),默认50
include logs (exclude logs) -- 是否备份联机事务日志,include(online在线备份生效)|exclude(offline离线备份生效)
## 备份示例
--全库冷备
db2 stop force && db2start / db2 force application all
db2 backup database db1
--全库热备
db2 backup database db2 online to /tmp/dbak1
--多个路径下的全库副本热备
db2 backup database db3 online to /tmp/dbak2,/tmp/dbak3,/tmp/dbak4
--表空间在线备份,注意online要在tablespace后面
db2 "backup database db4 tablespace (tb1,tbs2) online to /tmp/dbak5"
--累计增量备份
db2 backup database db5 online incremental to /tmp/dbak6
--差异增量备份
db2 backup database db6 online incremental delta to /tmp/dbak7
--带archivelog的差异增量备份
db2 backup database db7 online including logs incremental delta to /tmp/dbak8
--备份数据所有分区
db2 backup database db8 on all dbpartitionnums to /tmp/dbak9
--使用TSM备份
db2 backup database db9 online inlcuding logs incrementail delta use tsm open 2 sessions with 4 buffers
--检查数据库的备份集信息
db2 list history all for db_name
db2 list history since 20240627003000 for db_name
--检查备份有效性
db2ckbkp -h backupsetname
--
恢复
- 恢复历史记录文件
- 文件名为DB2RHIST.ASC和DB2RHIST.BAK
- 用于记录备份信息摘要,跟踪数据备份恢复历史记录
- 更新历史文件的动作
- 备份数据库/表空间
- 恢复数据库/表空间
- 前滚数据库/表空间
- 自动重建数据库
- 创建/更改/停顿/重命名表空间
- 装入/删除/重组表
- 归档日志文件/使用新日志文件
- 恢复数据库
- 复原数据库/表空间操作失败
- ListHistory.op速查

- ListHistory.type速查

## 查看历史记录文件语法
list history {backup | rollforward | dropped table | load | create tablespace | alter tablespace | drop tablespce | reorg | archive}
{ all | since timestamp | containing (schema.object_name)}
for (database | db)
## 参数说明
all -- 输出所有信息
since -- 输出自时间之后的信息
containing -- 输出包含对象的信息
for (database | db) -- 输出指定数据库信息
## 示例
--查看db1数据库自2024年7月8日之后的历史记录
db2 list history since 20240708 for db1
--查看db2数据库的表空间tbs2的所有备份操作
db2 list history backup containing tbs2 for db2
--查看db3数据库所有drop table操作
db2 list history dropped table all for db3
--查看分区数据库
db2_all "db2 list history since 20240708 for db4"
- 恢复的类型
- 崩溃回复(instance crash)
- 版本回复(backupset recovery)
- 前滚回复(backupset + activelog recovery)
TIPS: 如果备份时,带了include logs子参数,则需要前滚恢复
## 语法
## 示例
--检查数据库的备份集信息
db2 list history all for $db_name
--版本恢复
## into db1_new -- 将数据库恢复到异名数据库下
## replace existing -- 替换原有文件
db2 restore database db1 from /dbbackuppath1 taken at 20240807 into db1_new replace existing
--前滚回复
----备份集中包含日志文件
db2 backup database db2 online to /dbbackuppath1 include logs
----还原数据库
## logtarget /dbbackuppath1/logs -- 将logfile恢复到指定文件目录下
## to end of logs and complete -- 前滚到logfile结束时间点
## to end of backup and complete -- 前滚到backupset结束时间点
## overflow log path /dbbackuppath/logs -- 在恢复日志后,回去该目录下查找logfile
----只恢复logfile,不回复备份集
db2 restore database db2 logs from /dbbackuppath1 logtarget /dbbackuppath1/logs
----前滚不完全恢复
db2 restore database db2
db2 rollforward database db2 to end of backup and complete
or
----前滚完全恢复
db2 restore database db2
db2 rollforward database db2 to end of logs and stop overflow log path /dbbackuppath/logs
--增量备份前滚恢复
db2 restore database db3 incremental automatic taken at 20240708000000
db2 rollforward database db3 to end of logs and complete ## 注意选择正确的end of logs/backup
--前滚恢复表空间
db2 "restore database db4 tablespace (ts1) online token at 20240708000000 "
db2 rollforward database db4 to end of logs and complete tablespace (ts1)
db2 list tablespace for ts1
9、逻辑备份与恢复
文件格式
- ASC文件:ASC文件中包含固定定长字符,只能用户导入 A__B__C
- DEL文件:DEL文件,可以使用间隔符,文本附,换行符定义字符串 A,B,C
- PC/IXF文件:包含数据结构的DDL,和record,导出文件是二进制
- WSF文件
数据导出
- EXPORT
- EXPORT语法
- 支持导出到DEL,IXF,WFS文件中
- 要求具有sysadmin,dbadmin权限,或者导出对象的control或select权限
## 语法
EXPORT TO <dumpfile_name> OF <file_type>
LOBS TO <lob_path> LOBFILE <lob_filename>
XML TO <xml_path> XMLFILE <xml_filename>
MODIFIED BY <filetype_mod>
MESSAGES <message_file>
<query>
## 参数释义
TO <dumpfile_name> -- 导出文件的路径和名称
OF <file_type> -- 导出文件类型,可以选择DEL,IXF,WFS
MODIFIED BY <filetype_mod> -- 使用修饰符导出文件
chardelx : 字符数据类型定界符(字符引用符),默认为("),这里指定x为分隔符
coldelx : 列定界符(列分隔符),默认为(,)
codepage=x : 文本字符集,默认(1208 UTF-8)
timestampformat="x" : 设置日期数据格式,YYYY/MM/DD HH:MM:SS.UUUUUU
MESSAGES <message_file> -- 导出日志的路径和名称
<query> -- 导出的具体SQL
## 示例
--导出到DEL(非定界文件),如果第一个目录装不下,则装入到第二个目录
db2 export to /home/db2inst1/t1_1.del,/tmp/t1_2.del of del messages /tmp/msg.log select * from t1
--带修饰符导出
db2 export to /home/db2inst1/t2.del of del modified by
--导出特殊数据类型
----导出lob字段
db2 export to /tmp/t2.del of del lobs to /tmp/mylobs/ lobfile lobs1,lobs2 modified by lobsinfile messages /tmp/mylobs/lobs_msg.log select * from t2
----导出xml字段
db2 export to /tmp/t3.del of del xml to /tmp/myxml/ xmlfile xml1,xml2 modified by xmlinsepfiles messages /tmp/myxml/xml_msg.log select * from t3
--使用修饰符导出文件,字符引用符('),列分隔符(;),字符集使用UTF-8,日期格式为yyyy-mm-dd hh:mm:ss tt
db2 export to t4.del of del modified by chardel'' coldel; select * from t4 where id =10
db2 export to t5.del of del modified by modified by codepage = 1208 select c1,c2 from t5
db2 export to t6.del of del modified by timestampformat="yyyy-mm-dd hh:mm:ss tt" select c1,c2,c3 from t6 where c1<1000;
数据导入
- IMPORT
- IMPORT语法
- 支持ASC,DEL,IXF,WFS文件格式
- 要求具有sysadmin,dbadmin权限,或者select/insert/createtab/control权限
- 导入模式:
- create : 首先创建目标表和它的索引,然后将数据导入到新表中。只支持PC/IXF文件格式
- insert : 追加数据,表必须已经存在
- insert_update : 追加更新,表必须已经存在,并且定义了主键
- replace : 删除表已有数据后,再插入数据
- replace_create : 如果表不存在,则新建表结构和索引后,再插入数据,如果表存在,则删除数据后,在导入数据。只支持PC/IXF文件格
## 语法
IMPORT from <dumpfile_name> OF <file_type>
LOBS from <lob_path> LOBFILE <lob_filename>
XML from <xml_path> XMLFILE <xml_filename>
MODIFIED BY <filetype_mod>
{ INSERT | INSERT_UPDATE | REPLACE | REPLACE_CREATE }
COMMITCOUNT {n | AUTOMATIC}
ROWCOUNT n
WARNINGCOUNT n
RESTARTCOUNT n SKIPCOUNT n
MESSAGES <message_file>
<query>
## 参数释义
{ INSERT | INSERT_UPDATE | REPLACE | REPLACE_CREATE } -- 导入方式
COMMITCOUNT {n | AUTOMATIC} -- 自动提交行数,可以有效的减少active log的使用
ROWCOUNT n -- 导入数据的数量(limit n),可以减少测试环境插入数据量
WARNINGCOUNT n -- 定义警告的记录数
RESTARTCOUNT n SKIPCOUNT n -- 出错时,重新开始的行数和导入的数据量
NOTIMEOUT -- 不超时
## 示例
--批量插入50行一组,批量提交50000行提交一次
db2 import from t1.del of del COMMITCOUNT 50000 MODIFIED BY COMPOUND =50 insert into t1
--插入数据出错后,从100行重新开始,插入10000行数据
db2 import from t2.del of del RESTARTCOUNT 100 ROWCOUNT 10000 insert into t2
--插入出错10次后,停止数据插入
db2 import from t3.del of del WARNINGCOUNT 100 insert into t3
--插入出错10次后,停止数据插入,但是不发出警告
db2 import from t4.del of del MODIFIED BY NOROWWARNINGS WARNINGCOUNT 100 insert into t4
--特殊数据类型导入
db2 import from t5.del of del LOBS FROM '/tmp' insert into t5
db2 import from t6.del of del XML FROM '/tmp' insert into t6
--导入不超时
db2 import from t7.del of del NOTIMEOUT insert into t7
- LOAD
- LOAD语法
- 不需要写日志(或很少日志),不做约束检查,不触发trigger,特别适合大数据导入。
- 要求具有sysadmin,dbadmin权限,或者select/insert/createtab/control权限
## 示例
--导入数据
db2 load from t1.del of del insert into t1
--导入自增
db2 load from t2.del of del MODIFIED BY IDENTITYOVERRIDE insert into t2
--不符合表结构的数据输出到dumpfile中,异常数据(违反约束)输出到exception
db2 load from t3.del of del modified by dumpfile=/tmp/t3.dump warningcount 100 messages megs.log insert into t3 for exception t3.exp




