DB2上机操作指令指南
1. 启动实例(db2inst1):
db2start
2. 停止实例(db2inst1):
db2stop
3. 列出所有实例(db2inst1)
db2ilist
5.列出当前实例:
db2 get instance
4. 察看示例配置文件:
db2 get dbm cfg|more
5. 更新数据库管理器参数信息:
db2 update dbm cfg using para_name para_value
6. 创建数据库:
db2 create db test
7. 察看数据库配置参数信息
db2 get db cfg for test|more
8. 更新数据库参数配置信息
db2 update db cfg for test using para_name para_value
10.删除数据库:
db2 drop db test
11.连接数据库
db2 connect to test
11.列出所有表空间的详细信息。
db2 list tablespaces show detail
12.列出容器的信息
db2 list tablespace containers for tbs_id show detail
13.创建表:
db2 ceate table tb1(id integer not null,name char(10))
14.列出所有表
db2 list tables
12.插入数据:
db2 insert into tb1 values(1,’sam’);
db2 insert into tb2 values(2,’smitty’);
13.查询数据:
db2 select * from tb1
14.数据:
db2 delete from tb1 where id=1
15.创建索引:
db2 create index idx1 on tb1(id);
16.创建视图:
db2 create view view1 as select id from tb1
17.查询视图:
db2 select * from view1
18.节点编目
db2 catalog tcp node node_name remote server_ip server server_port
19.察看端口号
db2 get dbm cfg|grep SVCENAME
20.测试节点的附接
db2 attach to node_name
21.察看本地节点
db2 list node direcotry
22.节点反编目
db2 uncatalog node node_name
23.数据库编目
db2 catalog db db_name as db_alias at node node_name
24.察看数据库的编目
db2 list db directory
25.连接数据库
db2 connect to db_alias user user_name using user_password
26.数据库反编目
db2 uncatalog db db_alias
27.导出数据
db2 export to myfile of ixf messages msg select * from tb1
28.导入数据
db2 import from myfile of ixf messages msg replace into tb1
29.导出数据库的所有表数据
db2move test export
30.生成数据库的定义
db2look -d db_alias -a -e -m -l -x -f -o db2look.sql
31.创建数据库
db2 create db test1
32.生成定义
db2 -tvf db2look.sql
33.导入数据库所有的数据
db2move db_alias import
34.重组检查
db2 reorgchk
35.重组表tb1
db2 reorg table tb1
36.更新统计信息
db2 runstats on table tb1
37.备份数据库test
db2 backup db test
38.恢复数据库test
db2 restore db test
出自:http://blog.csdn.net/greener2000/
1. 启动实例(db2inst1):
db2start
2. 停止实例(db2inst1):
db2stop
3. 列出所有实例(db2inst1)
db2ilist
5.列出当前实例:
db2 get instance
4. 察看示例配置文件:
db2 get dbm cfg|more
5. 更新数据库管理器参数信息:
db2 update dbm cfg using para_name para_value
6. 创建数据库:
db2 create db test
7. 察看数据库配置参数信息
db2 get db cfg for test|more
8. 更新数据库参数配置信息
db2 update db cfg for test using para_name para_value
10.删除数据库:
db2 drop db test
11.连接数据库
db2 connect to test
11.列出所有表空间的详细信息。
db2 list tablespaces show detail
12.列出容器的信息
db2 list tablespace containers for tbs_id show detail
13.创建表:
db2 ceate table tb1(id integer not null,name char(10))
14.列出所有表
db2 list tables
12.插入数据:
db2 insert into tb1 values(1,’sam’);
db2 insert into tb2 values(2,’smitty’);
13.查询数据:
db2 select * from tb1
14.数据:
db2 delete from tb1 where id=1
15.创建索引:
db2 create index idx1 on tb1(id);
16.创建视图:
db2 create view view1 as select id from tb1
17.查询视图:
db2 select * from view1
18.节点编目
db2 catalog tcp node node_name remote server_ip server server_port
19.察看端口号
db2 get dbm cfg|grep SVCENAME
20.测试节点的附接
db2 attach to node_name
21.察看本地节点
db2 list node direcotry
22.节点反编目
db2 uncatalog node node_name
23.数据库编目
db2 catalog db db_name as db_alias at node node_name
24.察看数据库的编目
db2 list db directory
25.连接数据库
db2 connect to db_alias user user_name using user_password
26.数据库反编目
db2 uncatalog db db_alias
27.导出数据
db2 export to myfile of ixf messages msg select * from tb1
28.导入数据
db2 import from myfile of ixf messages msg replace into tb1
29.导出数据库的所有表数据
db2move test export
30.生成数据库的定义
db2look -d db_alias -a -e -m -l -x -f -o db2look.sql
31.创建数据库
db2 create db test1
32.生成定义
db2 -tvf db2look.sql
33.导入数据库所有的数据
db2move db_alias import
34.重组检查
db2 reorgchk
35.重组表tb1
db2 reorg table tb1
36.更新统计信息
db2 runstats on table tb1
37.备份数据库test
db2 backup db test
38.恢复数据库test
db2 restore db test
出自:http://blog.csdn.net/greener2000/
12.19.2007
DB2上机操作指令指南
DB2常用命令集
* version: V1.0
* author: xiedd
* update: 2006-06-14
* memo: 详细命令请使用"db2 ?
*************************************************
1. 关闭db2
db2stop 或
db2stop force。
在脚本中一般两个都写上,避免使用db2stop force命令,如:
db2stop
db2stop force
2. 启动db2
db2start
3. 创建数据库
db2 create db
或db2 create db using codeset GBK territory CN
4. 删除数据库
执行此操作要小心。
db2 drop db
如果不能删除,断开所有数据库连接或者重启db2。
5. 断开数据库连接
db2 force application all
6. 连接数据库
db2 connect to
7. 断开数据库连接
断开当前数据库连接:db2 connect reset
或者:db2 disconnect current
断开所有数据库的连接:db2 disconnect all
8. 备份数据库
db2 backup db
备注:执行以上命令之前需要断开数据库连接
9. 恢复数据库
db2 restore db
10. 导出数据文件
db2move
11. 导入数据文件
db2move
12. 列出数据库中所有db
db2 list db directory
13. 进入db2命令环境
在“运行”中执行:db2cmd
14. 获取db2数据库管理配置环境信息
db2 get dbm cfg
15. 获取db2某个数据库数据库管理配置环境信息
db2 get db cfg for
或者:连接至某个数据库以后执行db2 get db cfg。
16. 设置联合数据库为可用(默认联合数据库不可用)
db2 update dbm cfg using federated yes
17. 更改db2日志空间的大小
备注:以下命令为了防止db2数据库过份使用硬盘空间而设,仅用于开发者自己机器上的db2,如果是服务器,则参数需要修改。
db2 UPDATE DB CFG FOR
如果页大小是4KB,则以上命令创建3个100M的日志文件,占用300MB硬盘空间。25600*4KB=102400KB。
18. 创建临时表空间
DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000) EXTENTSIZE 256
19. 获取数据库管理器的快照数据
db2 –v get snapshot for dbm
20. 显示进行程号
db2 list applications show detail
21. 调查错误
sqlcode:产品特定错误码;
sqlstate:DB2系列产品的公共错误码,符合ISO/ANSI 92SQL标准。
调查sqlcode : db2 ? sql1403n
调查sqlstate: db2 ? 08004
22. 创建表空间
rem 创建缓冲池空间 8K
db2 connect to gather
db2 CREATE BUFFERPOOL STMABMP IMMEDIATE SIZE 25000 PAGESIZE 8K
rem 创建表空间:STMA
rem 必须确认路径正确
rem D:\DB2Container\Stma
db2 drop tablespace stma
db2 CREATE REGULAR TABLESPACE STMA PAGESIZE 8 K MANAGED BY SYSTEM USING ('D:\DB2Container\Stma' ) EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL STMABMP DROPPED TABLE RECOVERY OFF
db2 connect reset
23. 将暂挂的数据恢复到前滚状态
db2 ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND COMPLETE NORETRIEVE
24. 备份表空间
BACKUP DATABASE YNDC TABLESPACE ( USERSPACE1 ) TO "D:\temp" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING
25. 创建db2工具数据库
db2 create tools catalog systools create new database toolsdb
26. 如何进行增量/差量备份
增量:上一次完整备份至本次备份之间增加的数据部分;
差量(delta):上次备份以来(可能是完整备份、增量备份或者差量备份)至本次备份之间增加的数据部分;
27. 更新所有表的统计信息
db2 -v connect to DB_NAME
db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"
db2 -v reorgchkupdate statistics on table all
db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"
db2 -v terminate
28. 对一张表运行统计信息
db2 -v runstatson table TAB_NAMEand indexes all
29. 查看是否对数据库执行了RUNSTATS
db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"
30. 更改缓冲池的大小
缓冲池中,当syscat.bufferpools的npages是-1时,由数据库的配置参数bufferpage控制缓冲池的大小。
将npages的值更改为-1的命令:
db2 -v connect to DB_NAME
db2 -v select * from syscat.bufferpools
db2 -v alter bufferpoolIBMDEFAULTBP size -1
db2 -v connect reset
db2 -v terminate
更改数据库配置参数BufferPages的命令如下:
db2 -v update db cfgfor dbnameusing BUFFPAGE bigger_value
db2 -v terminate
31. 查看数据库监视内容列表
db2 -v get monitor switches
32. 打开某个数据库监视内容
db2 -v update monitor switches using bufferpoolon
33. 获取数据库快照
db2 -v get snapshot for all databases > snap.out
db2 -v get snapshot for dbm>> snap.out
db2 -v get snapshot for all bufferpools>> snap.out
db2 -v terminate
34. 重置数据库快照
db2 -v reset monitor all
35. 计算缓冲池命中率
理想情况下缓冲池命中率在95%以上,计算公式如下:
(1 -((buffer pool data physical reads + buffer pool index physical reads) /(buffer pool data logical reads + pool index logical reads))) *100%
36. 创建db2实例
db2icrt <实例名称>
37. 删除db2实例
db2idrop <实例名称>
38. 设置当前db2实例
set db2intance=db2
39. 显示db2拥有的实例
db2ilist
40. 恢复离线增量备份数据库的命令
DB2 RESTORE DATABASE YNDC INCREMENTAL AUTOMATIC FROM D:\backup\autobak\db2 TAKEN AT 20060314232015
41. 创建样本数据库
在unix平台,使用:sqllib/bin/db2sampl
在windows,os/2平台,使用:db2sampl e,e是可选参数,指定将创建数据库的驱动器;
42. 列出数据库中所有的表
db2 list tables
43. 列出某个表的数据结构
db2 describe table v_ro_role
44. 给表增加列
ALTER TABLE STAFF ADD COLUMN PNHONE VARCHAR(20)
45. 数据迁移方法1
export脚本示例
db2 connect to testdb user test password test
db2 "export to aa1.ixf of ixf select * from table1"
db2 "export to aa2.ixf of ixf select * from table2"
db2 connect reset
import脚本示例
db2 connect to testdb user test password test
db2 "load from aa1.ixf of ixf replace into table1 COPY NO without prompting "
db2 "load from aa2.ixf of ixf replace into table2 COPY NO without prompting "
db2 connect reset
46.
db2常用操作笔记
db2常用操作笔记
d:\winnt\system32\drivers\etc\services文件是对机器名到IP地址的解析。
d:\winnt\system32\drivers\etc\hosts文件是对端口名到端口号的解析。
以上两条上非DB2的,但在DB2中使用到。
db2admin start 起动DB2管理
DB2里对一个命令的HELP是:
>db2 ? 该命令
db2 连接到远程数据库
第一步建一个结点:
>db2 catalog tcpip node 结点名 remote 数据库服务器IP地址 server 端口(50000)
第二步建一个到库的联结别名:
>db2 catalog db 库名 as 别名 at node 结点名
第三步建立联结:
>db2 connect to 别名 user 用户名 using 用户密码
断开联结:
db2 connect reset
db2里需要用到一个系统环境变量:db2codepage, 缺省值是1386,此值非常重要,客户端于数据库端的db2codepage不一样时客户端就无法连上数据库端。
DB2里一个表的全名是:schema.表名,缺什情况下不同的用户看到的表是不一样的,
在程序的sql语句里必需用表的全名(切记)。
查看有哪些程序在使用该数据库:
>db2 list application
其结果中有一个字段application-handle在杀死该引用中用到
杀死一个程序对该数据库的使用:
>db2 force application {all | (application-handle)}
在库被使用时db2stop不能执行
DB2命令后所带参数:
-t 以;作为一句结束
-f 指向一个文件(即执行一个文件中的语句,在command窗口里有些命令无法执行,可先用notepad建一个文件然后执行它)
-v (我不知道是什么)
注释:-v用于显示当前所执行的sql命令。
一个windows nt 里的一般用户可以连到库,但无一般SQL语句的执行权,授权给一个用户:
>db2 grant sql语句(例如:select) on 表名 to user 用户名
取消该用户的权:
>db2 revoke sql语句 on 表名 from 用户名
DB2日志有两种:循环日志和永久型日志
循环日志:有3个文件循环写,所以会产生以前的操作记录被覆盖。好处:日志文件大小不变,备份方便,但不可以在线备份。
永久日志:其日志文件不断增涨,但操作记录不会被覆盖,可以在线备份。
如何备份:
>db2 backup db 数据库名 to 设备名(如:c:\);
恢复:
>db2 restore db 数据库名 from 设备名
(回滚rollforward我不太清楚)
注释:rollforword 是前滚的意思,向前到某一个时间,以保持数据的一致性,用于在线备份后的恢复,恢复是从log日志中开始到日志中的某一个时间,即可。只有在数据一致性得到保证的情况下,才能继续对数据库操作。
连接到数据库时报回滚错误
用下面的命令:
db2 rollforward db fmisadd to end of logs and complete
导出导入数据库:
--export
db2move hadb export -u userid -p password;
--import
db2move hadb import -u userid -p password;
导出库中表的数据:
>export to 文件名.ixf of ixf select * from 表名
>import from 文件名.ixf of ixf create into 表名
导出库的数据格式还有两种del(文件格式)和wsf,但ixf格式信息最全,包含表结构信息,可恢复出已删去的表。
sql的inner/left/right/full join,这些概念在<<数据库概论>>中有说明,left以左表为主,right以右表为主,full左右表记录都会在查寻结果中。
例如:>select aa,bb from db1 left join db2 on db1.id=db2.id
合并查寻:把两个或几个查寻结果合并到一个字段(条件是字段必须兼容)
格式:select ...... union select ....;
使用临时表:
with tmptable (字段1,...) as (select....) --建一个临时表
select 字段1,.... from tmptable,另一个表 where.... --使用该临时表于另一个表交叉查寻。
**order by 必需出现在结果集,在临时表中不能用。
截取字符串
substr(字段名,开始位置,字符个数)
判断是否是空
字段名 is null
例子:
到什么时候活了10000天:
select distinct date('1980-01-01')+10000 day from a
一共活了多少天:
select distinct days(current date)-days(date('1980-01-01')) from a
类型转换:用cast ,例:
select distinct cast(current date as char(10))||'aa' from a
case的使用:
select case when length(rtrim(学历))=0 then '未知学历' else xl end,rs from a
例:查寻一个公司的年龄分布:
with tmptable as (select case when year(current day)-csrq<20 then '小于20岁' when year(current day)-csrq<25 then '20-24岁' when year(current day)-csrq<30 then '25-29岁'
when year(current day)-csrq<35 then '30-34岁'
when year(current day)-csrq<40 then '35-39岁'
when year(current day)-csrq<45 then '40-44岁'
when year(current day)-csrq<50 then '45-49岁' else '大于50岁' end
as x from a)
select x,count(*) from tmptable group by x;
一个数据库中有些系统建的表是用来保存该库各种信息的,如:syscat.tables
例:查有多少个userid的表:
select count(*) from syscat.tables where type='T' and tabschema='uerid'
例:产生一个备分库中所有表的文本:
select 'export to '|| tabname || '.ixf of ixf select * from userid.' ||tabname||';' from syscat.tables where type='T' and tabschema='userid';
性能调整:
影响到DB2性能的有:
能够利用服务器的性能:1.并行性 2.减少通信
建立Index
<,>,= 第一类搜索谓词,
<>,like 第二类搜索谓词,
需要用函数 第三类搜索谓词,
select * from a
*尽量要哪个字段写哪个字段。
blocking的概念 客户端请求一次,数据库返回n个记录。
复合型SQL(我不太清楚)
注释:是指他所讲的联结union,建立临时表等复杂的sql语句。
DB2会对SQL语句优化,系统对表的信息知道的越多,优化越好,所以要做runstats
runstats命令把表的信息告诉系统,一般当数据量增加一倍时用该命令一次。
REORG命令是数据库整理,类似于磁盘碎片整理。
得到该instance的各种参数:(dbm cfg是整个DB2的参数,db cfg是对某个数据库的参数)
>db2 get dbm cfg
>db2 get db cfg for 数据库名
修改参数:
>db2 update dbm cfg using 参数 你要的数
>db2 update db cfg for 数据库名 using 参数 你要的数
当第一个用户连结到该数据库时会申请一个内存缓冲,默认是250页每页4k即1M。
Buffer pool size<4K> [BUFFPAGE]=250
修改该值:
>db2 update db cfg for test using buffpage 你要的数
但它的有效还取决于syscat.bufferpools中的npages是否为-1,为-1时它才有效,否则以syscat.bufferpols中的npage为准。
可用下面的命令看:
>select * from syscat.bufferpools
一般此值的设置应为系统内存的40%左右,太大时会使系统因动用虚拟内存从而太吃力。
sql语句的优化级别:一般取2或5(最高为9)
Default query optinization class
该值越大优化越好,但优化所化时间也越长。
并行性设置:
Degree=-1 并行性全由操作系统完成。
当操作系统有并行处理时,Degree=-1
*****CUP与硬盘的个数一般为1:4到1:6;
用户最大连结数:
BUFFPAGE与MAXPPLS的关系:BUFFPAGE>2*MXAPPLS
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=290057