DB2常用命令
一、基础篇
1、db2 connect to <数据库名> --连接到本地数据库名
db2 connect to <数据库名> user <用户名> using <密码> --连接到远端数据库
2、 db2 force application all --强迫所有应用断开数据库连接
3、db2 backup db db2name<数据库名称> --备份整个数据库数据,db2 restore db
4、db2 list application --查看所有连接(需要连接到具体数据库才能查看)
5、db2start --启动数据库,db2stop --停止数据库
6、create database <数据库名> using codeset utf-8 territory cn --创建数据库使用utf-8编码
7、db2 catalog 命令
db2 catalog tcpip node <接点名称> remote <远程数据库地址> server <端口号> --把远程数据库映射到本地接点一般为50000
db2 catalog db <远程数据库名称> as <接点名称> at node pub11 --远程数据库名称到本地接点
db2 connect to <接点名称> user <用户名> using <密码> --连接本地接点访问远程数据库
8、数据库导出
db2look -d <数据库名> -u <用户> -e -o <脚本名称>.sql --导出数据库的表结构,其中用户空间一般为db2admin/db2inst1
db2look -d <数据库名> -u <用户> -t <表1> <表2> -e -o <脚本名称>.sql --导出数据库中表1和表2的表结构
db2look -d uibs -u db2inst1 -e -o /home/db2inst1/uibsddl2013821.sql
db2move <数据库名> export --导出数据库数据
db2move uibs export /home/db2inst1/uibs20130906.sql
db2move <数据库名> export -tn <表1>,<表2> --导出数据库中表和表数据
9、数据库导入
db2 -tvf <脚本名称>.sql --把上述导出的表结构导入到数据库表结构
db2move <数据库名> load -lo replace --把上述“db2move <数据库名> export “导出的数据导入到数据库中并把相同的数据替换掉
在实际使用过程中,如果用到db2自增主键,需要使用by default, 而不是always,功能是一样的,但这样在数据移植时候会很方便!
10、db2 connect reset 或 db2 terminate --断开与数据库的连接
11、db2set db2codepage=1208 --修改页编码为1208
12、db2 describe table <表名> --查看表结构
13、db2 list tables --查看数据库中所有表结构
14、db2 list tablespaces --列出表空间
15、fetch first 10 rows only --列出表中前10条数据
16、db2 describe indexes for table paccount show detail --查看表索引
17、db2 "select * from paccount" > e:pacountdata.txt --查询结果重定向
18、select nextval for MACCESSJNLNO from sysibm.sysdummy1; --查询序列的值
select prevval for ereceiptnumseq from sysibm.sysdummy1;
例如:select * from <表名> fetch first 10 rows only
一、加载数据:
1、 以默认分隔符加载,默认为“,”号
db2 "import from puser.txt of del insert into puser"
2、 以指定分隔符“|”加载
db2 "import from puser.txt of del modified by coldel| insert into puser"
db2 "import from e:/rule.txt of del insert into rule"
二、卸载数据:
db2 "export to puser.txt of del select * from puser"
db2 "export to puser.txt of del modified by coldel| select * from puser"
2、 带条件卸载一个表中数据
db2 "export to puser.txt of del select * from puser where brhid='907020000'"
db2 "export to cmmcode.txt of del select * from cmmcode where codtp='01'"
三、查询数据结构及数据:
db2 "select * from puser"
db2 "select * from puser where brhid='907020000' and oprid='0001'"
db2 "select oprid,oprnm,brhid,passwd from puser"
四、删除表中数据:
db2 "delete from puser where brhid='907020000' or brhid='907010000'"
五、修改表中数据:
db2 "update svmmst set prtlines=0 where brhid='907010000' and joww='02'"
六、联接数据库
db2 connect to spdb
七、清除数据库联接
db2 connect reset 断开数据库连接
db2 terminate 断开数据库连接
db2 force applications all 断开所有数据库连接
数据库优化命令:
reorg、runstats
当数据库经过一段时间使用,数据空间会变得越来越庞大。一些delete掉的数据仍存放在数据库中,占用数据空间,影响系统性能。因此需要定期运行reorg、runstats命令,清除已delete的数据,优化数据结构。
db2 reorg table 表名
db2 runstats on table 表名 with distribution and indexes all
因为要优化的表比较多,所以在/ww/bin目录下提供了一个sh程序runsall,可在当天业务结束后,运行runsall,对数据库进行优化。
关于db2move的使用
以前用db2move到过数据,不过觉得使用时有些限制。所以有时候还是自己写脚本来倒数。这几天因为bi项目升级,测试的时候想重构数据库。主要是想修改表的schema和tablespace,比较烦琐的方法是
1>在源系统上运行db2look生成ddl脚本。或者使用db2cc用图形界面生成脚本;
2>修改script中关于schema和tablespace的信息;
3>在目标系统上运行修改后的脚本;
4>用sql生成export、import或load的批量脚本,进行数据迁移;
5>实际操作中,使用load的时候可能会发生破坏表完整性约束的情况,需要执行set integrity for
现在再说说使用db2move实现的步骤,通常db2move的操作是在same schema情况下使用的。
db2move uibs export -u db2inst1 -p db2inst1
db2move r_uibs export -u db2inst1 -p db2inst1
批量导出
观察生成的文件,其中有个db2move.lst文件,内容如下:
!"tkpm62 "."opb_analyze_dep"!tab1.ixf!tab1.msg!
我试着把内容改成
!"tkpm "."opb_analyze_dep"!tab1.i