DB2常用命令

http://jingyan.baidu.com/article/ac6a9a5e613e4c2b653eac1b.html
http://blog.csdn.net/u011969811/article/details/45966659
https://zhidao.baidu.com/question/264112182574373525.html
http://www.ibm.com/developerworks/cn/data/library/techarticles/0212wieser/0212wieser.html
http://www.cnblogs.com/QQParadise/articles/2376488.html
http://blog.csdn.net/zwhfyy/article/details/28863833
http://blog.chinaunix.net/uid-8052635-id-2034436.html
http://blog.sina.com.cn/s/blog_442b7f1d010005tm.html
http://king123654789.iteye.com/blog/1296492

catalog命令 编目

进db2cmd:
db2 catalog tcpip node pfnode remote 10.8.6.9 server 50015   【pfnode是db2 节点名】 
db2 catalog db pfdb at node pfnode      【pfdb是 实例名】 
db2 terminate 

远程的数据库信息加载到本地一般分为两步

第一步,catalog server端的node
db2 catalog tcpip node db2node remote hostname server service_port  其中db2node是指定的结点名, hostname是数据库ip, service_port是数据库端口

第二步,catalog 远端DB2 数据库
db2 catalog database db_name as alias_name at node db2node  其中db_name是远程数据库的名字, alias_name是客户端实例名, db2node是结点名


查看现有结点
db2 list node directory

数据库

创建数据库
create database ngcms2 on E: using codeset UTF-8 territory CN

连接数据库
db2 connect to 数据库名称 user 用户名 using 密码

断开数据库连接
db2 disconnect current
db2 quit

查看数据库配置
db2 get db cfg

列出数据库
list db directory 
list node directory 

删数据库
db2 drop db CITYBANK

表空间

创建表空间
db2 "create regular tablespace  tablespace1 pagesize 32k managed by database using(file '/usr/yixiayizi/tablespace1' 5g) bufferpool bp32k"  
db2 "create regular tablespace  tablespace2 pagesize 32k managed by database using(file '/usr/yixiayizi/tablespace2' 10g) bufferpool bp32k"  
db2 "create regular tablespace  tablespace3 pagesize 32k managed by database using(file '/usr/yixiayizi/tablespace3' 2g) bufferpool bp32k"  
注意(file '/usr/yixiayizi/tablespace1' 5g):
第一个参数:
 当指向外置盘时,file改为device;
 当指向文件路径时,为file;
第二个参数:需要是绝对路径;
第三个参数:该表空间的大小;

修改表空间

增加表空间大小, 增加容器
ALTER TABLESPACE TS1 ADD (DEVICE '/dev/rhdisk9' 10000)

增加表空间大小, 修改容器大小
ALTER TABLESPACE TS1 RESIZE (FILE '/conts/cont0' 2000, DEVICE '/dev/rcont1' 2000, FILE 'cont2' 2000)
ALTER TABLESPACE TS1 RESIZE (ALL 2000)

增加表空间大小, 扩展容器大小
ALTER TABLESPACE TS1 EXTEND (FILE '/conts/cont0' 1000, DEVICE '/dev/rcont1' 1000, FILE 'cont2' 1000)
ALTER TABLESPACE TS1 EXTEND (ALL 1000)

容器单位, 页, 一页=4kb, 或8kb, 或16kb, 或32kb, 创建表空间时会指定一页的大小

删除表空间
db2 drop tablespace  tablespace1, tablespace2, tablespace3 

查看表空间信息
LIST TABLESPACES SHOW DETAIL

缓冲池

缓冲池属于数据库, 可用于多个表, 但要保证表空间大小=缓冲池页大小, 一个表空间只能有一个缓冲池.
创建数据库时, 会默认创建缺省缓冲池, 名为IBMDEFAULTBP.
缓冲池大小影响数据库性能.

编码设置

db2三种级别字符集: 操作系统级LANG、实例级(客户端级)db2codepage、数据库级Database code page/set

查看当前编码设置
db2set -all

设置编码, 1386=GBK, 1208=UTF-8
db2set db2codepage=1208

查看数据库配置
db2 get db cfg
通过Database code set可知数据库编码格式

建数据库时指定数据库编码, 以后不能修改
create database SRCDB using codeset GBK territory CN

查看db2版本

db2level

db2的shell

Start->Program->IBM DB2->Command Center

db2启动

services.msc, db2开头的服务全开
db2start

RESTORE恢复数据

restore database testdb from "/home/backup" TAKEN AT 20150126132445 TO "E:" into testdb_new

BACKUP备份数据

backup database testdb to "/home/backup" user testuser using testpass

离线全备份, 资料1

查看是否有用户使用db2
db2 list applications for db dbname

重启db2以断掉所有连接
db2stop force 
db2start 

备份, 使用TSM作为备份的介质
db2 backup database dbname use tsm 

查看备份历史记录
db2 list history backup all for dbname

离线全备份, 资料2

数据库置为“静默”状态
db2 quiesce database immediate force connections

重置连接
db2 connect reset

备份数据库testdb到/home/backup
db2 backup database testdb to "/home/backup" user testuser using testpass

连接db2数据库
db2 connect to testdb user testuser using testpass

解除数据库的“静默”状态
db2 unquiesce database

重置连接
db2 connect reset

在线备份

打开在线备份参数
db2 update db cfg for dbname using userexit on 启用用户出口 
db2 update db cfg for dbname using logretain on 启用归档日志 
db2 update db cfg for dbname using trackmod on 启用增量备份功能

开启后, 数据库处于backup pending状态,做数据库的离线全备份.

在线备份
db2 backup db dbname online use tsm 

在线增量备份

在线增量备份
db2 backup db dbname online incremental use tsm

db2数据导出格式, 4种

ASC——非定界ASCII文件,是一个ASCII字符流。数据流中的行由行定界符分隔,而行中的每一列则通过起始和结束位置来定义。

DEL——定界ASCII文件,也是一个ASCII字符流。数据流中的行由行定界符分隔,行中的列值由列定界符分隔。

WSF——(work sheet format)为工作表格式,用于与Lotus系列的软件进行数据交换。

PC/IXF——是集成交换格式(Integration Exchange Format,IXF)数据交换体系结构的改编版本。

import导入数据

import方式不需要先建表结构, 只需要一个空库, load方式需要先建立表结构.
如果表中存在自增长的IDENTITY列会出错, 只能使用db2 import指令来进行导入,相关的参数是IDENTITYIGNORE,IDENTITYMISSING

导入c:\org.txt数据, del格式, 到表org
import from c:\org.txt of del insert into org

### import语句插入方式

insert  在表中现有数据基础之上追加新数据
insert_update  只用于有主键的表, 数据不存在则追加, 数据存在则更新
replace  先清空表, 再追加数据
replace_create  如果表存在, 则清空表, 追加数据; 如果表不存在, 则建表, 再追加数据


load导入数据

从光标类型文件中进行装入

定义一个cursor
declare mycur cursor for select * from org
创建一个新表,结构与cursor相容
create table org2 like org
从cursor中装入
load from mycur of cursor insert into org2

除了可以从cursor中装入,还可以从文件、管道、设备中进行装入。而导入命令只能从文件中导入。

export导出数据

用DEL格式, 导出表org, 到文件c:\org.txt
export to c:\org.txt of del select * from org

大数据导出, 以def格式, 导出表emp_photo, 到文件d:\myfile.del, 其中blob数据存到d:\lob\, 路径必须存在! lobfile lobs modified by lobsinfile指定了文件名是lobs, 并根据数据量追加.001、.002等扩展名
export to d:\myfile.del of del lobs to d:\lob\ lobfile lobs modified by lobsinfile select * from emp_photo

db2move导入导出数据

db2move mytestdb import –u db2inst1 –p thepasswd

db2look提取数据库结构DDL

db2look –d testdb –a –e –x –o testdb.sql

db2move导出全部数据

db2move是集成式的数据移动工具, 底层通过db2 export, db2 import, db2 load指令来完成任务. b2move导出的数据文件格式是IXF

导出指定的数据库中的全部数据

db2move testdb export –u user –p pass
导出说明: 数据库testdb下全部数据导出到当前目录, 一个表对应一个.ixf文件和一个.msg文件. 另外db2move.lst记录.ixf文件和.msg文件与表的一一对应关系, EXPORT.out记录导出日志.

db2 export指令导出数据

进入db2控制台
db2

以del/ixf格式导出
export to /home/backup/mytbl.txt of del select * from mytbl
export to /home/backup/mytbl.ixf of ixf select * from mytbl

断开连接
connect reset
quit

db2move导入(import)数据

进入db2控制台
db2

连接db2数据库
connect to mytestdb user db2inst1 using thepasswd

数据库mytestdb
create database ngcms2 on E: using codeset UTF-8 territory CN

提交库创建
commit work

断开连接
connect reset
terminate

删除数据库

drop db sample_1

数据库当前正在使用

list applications 查看链接该数据库有多少应用 force applications all 杀掉这些应用db2

连接数据库, 查看表空间 connect to db2inst1 list tablespaces

http://blog.itpub.net/8231934/viewspace-584635/ http://database.51cto.com/art/201510/495298.htm

  1. 命令行处理器, 生成重定向脚本

restore database DB2INST1 from "E:\民生" TAKEN AT 20160531162029 TO "E:" into DB2INST1 redirect generate script "E:\民生\import.sql"

  1. 命令窗口, 执行脚本 db2 -svtf "E:\民生\import.sql"

s 代表遇到错误时中止运行脚本
v 代表输出结果到屏幕
t 指以;号作为每行的分隔符
f 指后面需跟脚本文件名

查询所有表信息 select tabname from syscat.tables where tabschema = current schema

查询列信息 select * from syscolumns where tbname='tabname'

导入DB2INST1.0.DB2.NODE0000.CATN0000.20160531162029.001到DB2INST1 restore database DB2INST1 from "E:\民生" TAKEN AT 20160531162029 TO "E:" into DB2INST1 redirect generate script "E:\民生\import.sql" db2 -svtf "E:\民生\import.sql"

导入NGCMS.0.DB2.NODE0000.CATN0000.20150126132445.001到NGCMS1 restore database NGCMS from "E:\民生" TAKEN AT 20150126132445 TO "E:" into NGCMS1 redirect generate script "E:\民生\import.sql" db2 -svtf "E:\民生\import.sql"

导出ngcms

backup database ngcms to "E:\民生\li_wjie_test"

connect to ngcms1 user db2admin using 'c##cxzx123' select count(1) from ngcms.rbac_user

connect to db2inst1 user db2admin using 'c##cxzx123' select count(1) from ngcms.rbac_user