设为首页 收藏本站
查看: 1366|回复: 0

[经验分享] db2常用操作笔记

[复制链接]

尚未签到

发表于 2016-11-13 10:30:58 | 显示全部楼层 |阅读模式
db2常用操作笔记

d:winntsystem32driversetcservices文件是对机器名到IP地址的解析。
d:winntsystem32driversetchosts文件是对端口名到端口号的解析。
以上两条上非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      <DFT_QUENYOPT>=5
该值越大优化越好,但优化所化时间也越长。

并行性设置:
Degree=-1 并行性全由操作系统完成。
当操作系统有并行处理时,Degree=-1
*****CUP与硬盘的个数一般为1:4到1:6;

用户最大连结数:
<MAXAPPLS>=40
BUFFPAGE与MAXPPLS的关系:BUFFPAGE>2*MXAPPLS

查看系统参数:get  db  cfg  for  database
设置最大连接数:update  db  cfg  for  database  using  maxappls   maxnumber
在控制中心右击“配置参数”也可以修改最大连接数

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-299620-1-1.html 上篇帖子: DB2 登陆登出等操作 下篇帖子: db2迁移实战
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表