DB2操作梳理
一,db2安装
1,linux安装参考
https://www.cnblogs.com/keepruning/p/9142781.html
2,window安装参考
https://blog.csdn.net/lanchengxiaoxiao/article/details/7445427
注意:a,window基本是傻瓜安装,linux安装好之后要进行查看版本,需要下载lic文件进行激活
b,实例切换一定要注意
安装好之后远程连接记得关闭防火墙或者开启50000端口,如果还远程连接不上,可能是db2属性没有设置db2set db2comm=tcp/ip
c,db2首次连接会很慢,需要加载资源,数据量特别大可以一直保持一个连接不中断
下载lic文件参考https://download.csdn.net/download/zzj1990/5092926#comment
linux开放端口参考https://www.cnblogs.com/twyth/p/8297428.html
window开放端口参考
https://jingyan.baidu.com/article/624e74590da64d34e8ba5aa0.html
远程连接设置参考https://www.iteye.com/blog/xiaoz5919-627144
二,db2基本操作设置
1, db2stop force --停止数据库
2,db2start --启动数据库
3,db2 connect to 数据库名 user 用户名 using 密码 —连接数据库
4,db2 select count(*) from syscat.columns —测试数据库语句,输入
5,db2 select count(*) from syscat.columns —查询db2自带系统表中的记录条数
6,db2 list database directory --查看所有数据库
7,db2 list tables --查看所有的表
8,db2 describe select * from
9,db2 DROP TABLE
10,db2 alter table [table_name] add [column_name] [column_type] --添加列
11,db2 alter table
12,db2 DELETE FROM
13,db2 REORG TABLE
14,db2 get db cfg for 数据库名 -- 查看数据库配置信息
15,db2 create database name —创建数据库
注意:db2 create database MYDATABASE using codeset UTF-8 territory CN 。--指定数据库编码格式,指定所在国CN
其余创建数据库可选择的属性包括:创建数据库缓存池;指定数据库表空间。
创建数据库参考:https://blog.csdn.net/yixiayizi/article/details/8272437
16,db2set -all --db2查看设置
17,db2 get db cfg for dbname --查看数据库设置
18,DB2 force application all --断开所有连接
19,db2 upgrade db dbname user xx using xx --更新数据库
20,db2set db2codepage=1386 --设置编码页,所有设置都是 属性=属性值
21,db2level —查看版本
22,db2 connect reset —断开数据库连接
23,db2 drop tablespace TABLESPACENAME —删除数据库表空间
23,db2 set schema btp —修改当前模式为”btp”
24,db2 list tables for all —列出当前数据库下所有的表
25,db2 list tables for schema btp —列出当前数据库中schema为btp的表
26,db2 list tablespaces show detail —显示数据库空间使用情况
27,db2 get instance —显示当前数据库管理实例
28,设置实例系统启动时是否自动启动
db2iauto -on 自动启动
db2iauto -off 不自动启动
29,db2 UPDATE DB CFG FOR
注意:以下命令为了防止db2数据库过份使用硬盘空间而设,仅用于开发者自己机器上的db2,如果是服务器,则参数需要修改。
如果页大小是4KB,则以上命令创建3个100M的日志文件,占用300MB硬盘空间。25600*4KB=102400KB。
30,DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000) EXTENTSIZE 256 —创建临时表空间
31,db2 -v runstatson table TAB_NAMEand indexes all —对一张表运行统计信息
32,db2 -v "select tbname, nleaf, nlevels,stats_timefrom sysibm.sysindexes" —查看是否对数据库执行了RUNSTATS
33, db2 -v get monitor switches —看数据库监视内容列表
34,db2 -v update monitor switches using bufferpoolon —打开某个数据库监视内容
35,db2 -v reset monitor all —重置数据库快照
36,db2move
注意:[-sn <模式名称,一般为db2admin>]
[-tn <表名,多个之间用逗号分隔>]
37,db2move
38,db2 UPDATE DB CFG FOR
注意:以下命令为了防止db2数据库过份使用硬盘空间而设,仅用于开发者自己机器上的db2,如果是服务器,则参数需要修改。 如果页大小是4KB,则以上命令创建3个100M的日志文件,占用300MB硬盘空间。25600*4KB=102400KB。
39,db2 –v get snapshot for dbm —获取数据库管理器的快照数据
40,db2 list applications show detail —显示进行程号
41,获取数据库快照
#db2 get snapshot for all databases > snap.out
#db2 get snapshot for dbm>> snap.out
#db2 get snapshot for all bufferpools>> snap.out
#db2 terminate
42,缓冲池中,当syscat.bufferpools的npages是-1时,由数据库的配置参数bufferpage控制缓冲池的大小。 将npages的值更改为-1的命令:
#db2 connect to DB_NAME
#db2 select * from syscat.bufferpools
#db2 alter bufferpoolIBMDEFAULTBP size -1
#db2 connect reset
#db2 terminate
43,更改数据库配置参数BufferPages的命令如下:
#db2 -v update db cfgfor dbnameusing BUFFPAGE bigger_value
#db2 -v terminate
注意:计算缓冲池命中率
理想情况下缓冲池命中率在95%以上,计算公式如下:
(1 -((buffer pool data physical reads + buffer pool index physical reads)
/(buffer pool data logical reads + pool index logical reads))) *100%
注意:以上系统操作要以管理员身份操作
三,db2数据备份
注意:db2备份分为离线备份和在线备份
1,db2 backup db 数据库名 --备份数据库,系统会自动备份生成一个时间戳的数据备份文件,如:xxxx.0.db2inst1.NODE0000.CATN0000.20070814031212.001
注意:9.1版本之后,备份时会自动把日志备份进去
9.1之前:db2 backup db SEYSZHPT online to /backup include logs
db2备份参考https://blog.csdn.net/zwhfyy/article/details/28863833
3,DB2备份时是会自动在备份文件夹下生成 TESTDB+时间戳的数据库备份文件。备份之前需查看TESTDB使用的表空间的文件路径。恢复时需在机器上创建同样路径的文件夹,否则恢复会导致表空间挂起,恢复不成功。备份可进行在线增量备份:在线备份即意味着允许其他的连接,而不用停掉数据库;增量意味着不需要每次备份一个完整的数据库,可以将数据库恢复到崩溃以前的状态,而不是最后一次备份的状态,减少数据损失。在线增量备份:db2 backup db TESTDB online incremental to D:\BACKUP
42、备份表空间
#BACKUP DATABASE YNDC TABLESPACE ( USERSPACE1 ) TO "D:\temp" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING
四,db2数据还原
1,db2 force application all
2,db2stop
3,db2start
注意:如果源数据库和还原数据库路径不一致需要做重定向
a,路径一致
4, db2 restore db 数据库名 taken at 20070814031212 —还原数据库,直接取数据备份生成的时间戳即可
b,路径不一致
5,db2 RESTORE DB OLDDB FROM "C:\OLDDBbak" TAKEN AT 20150717164847 TO "C:" INTO NEWDB REDIRECT --重定向恢复其中,OLDDB是旧数据库、备份的数据库名称,NEWDB是新数据库名称,不用事先创建也可以,C:\OLDDBbak是备份文件放置的目录,20150717164847是备份文件的时间戳,具体可看备份文件的名字OLDDB.0.DB2.NODE0000.CATN0000.20150717164847.001,TO “C:”是新数据库的路径,REDIRECT是进行重定向恢复。
6,重定向表空间
例如:db2 set tablespace containers for 0 using (PATH 'C:\tablespaces\test\SYSCATSPACE')
7,还原数据库
DB2 RESTORE DATABASE SEYSZHPT CONTINUE
8,回滚日志
db2 ROLLFORWARD DATABASE test TO END OF LOGS AND COMPLETE OVERFLOW LOG PATH (“d:\DB2HISLOG\DB2\SEYSZHPT\NODE0000\C0000000")
注意:一定要把操作日志回滚,db2有日志锁死机制,不还原日志,还原的数据库是链接不了的
可以分开重定向还原,也可以一次直接还原
命令合并:db2 restore db ggyy from /data/backup taken at 20091110145515 to /data/dbdir logtarget /data/palog/db2inst1/GGYY/NODE0000/C0000003
命令拆分:db2 restore db ggyy from /data/backup taken at 20091110145515 to /data/dbdir
注意:最后要结束还原进程,不然数据依旧连不上
db2 rollforward db ebill to end of logs and stop
五,db2优化
1,数据库优化命令: reorg、runstats
2,当数据库经过一段时间使用,数据空间会变得越来越庞大。一些delete掉 的数据仍存放在数据库中,占用数据空间,影响系统性能。因此需要定期 运行reorg、runstats命令,清除已delete的数据,优化数据结构。
db2 reorg table 表名
db2 runstats on table 表名 with distribution and indexes all
注意:因为要优化的表比较多,所以在/btp/bin目录下提供了一个sh程序runsall, 可在当天业务结束后,运行runsall,对数据库进行优化
六,db2加载数据
1,加载数据
a,以默认分隔符加载,默认为“,”号
db2 "import from btpoper.txt of del insert into btpoper"
b,以指定分隔符“|”加载
db2 "import from btpoper.txt of del modified by coldel| insert into btpoper"
2,卸载数据:
a,卸载一个表中全部数据
db2 "export to btpoper.txt of del select * from btpoper"
db2 "export to btpoper.txt of del modified by coldel| select * from btpoper"
b,带条件卸载一个表中数据
db2 "export to btpoper.txt of del select * from btpoper where brhid='907020000'"
db2 "export to cmmcode.txt of del select * from cmmcode where codtp='01'"
db2 "export to cmmcode.txt of del modified by coldel| select * from cmmcode where codtp='01'"
3,查询数据结构及数据:
db2 "select * from btpoper"
db2 "select * from btpoper where brhid='907020000' and oprid='0001'"
db2 "select oprid,oprnm,brhid,passwd from btpoper"
4,删除表中数据:
db2 "delete from btpoper"
db2 "delete from btpoper where brhid='907020000' or brhid='907010000'"
5,修改表中数据:
db2 "update svmmst set prtlines=0 where brhid='907010000' and jobtp='02'"
db2 "update svmmst set prtlines=0 where jobtp='02' or jobtp='03'"
七,db2迁移
数据迁移方法
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
八,附录
1,linux安装参考https://www.cnblogs.com/keepruning/p/9142781.html
2,window安装参考
https://blog.csdn.net/lanchengxiaoxiao/article/details/7445427
3,db2重定向参考https://www.cnblogs.com/flyingsand/p/4907956.html
4,SQL1117N参考
https://www-01.ibm.com/support/docview.wss?uid=swg21962486
https://blog.csdn.net/cuiran/article/details/7419986
5,db2常见错误解决参考
https://blog.csdn.net/yllzhq/article/details/6860744
6,sql0332N参考http://blog.sina.com.cn/s/blog_5c39a08901019mpk.html
7,SQL1205N参考http://blog.itpub.net/11662464/viewspace-1028764/
8,SQL1119N参考
https://blog.csdn.net/qingsong3333/article/details/79433795
9,下载lic文件参考
https://download.csdn.net/download/zzj1990/5092926#comment
10,linux开放端口参考https://www.cnblogs.com/twyth/p/8297428.html
11,window开放端口参考
https://jingyan.baidu.com/article/624e74590da64d34e8ba5aa0.html
12,远程连接设置参考https://www.iteye.com/blog/xiaoz5919-627144
13,创建数据库参考:
https://blog.csdn.net/yixiayizi/article/details/8272437
14,db2备份参考https://blog.csdn.net/zwhfyy/article/details/28863833