DB2

by admin on 2019年12月3日

现阶段,专业中三个等级次序的数码 Table 和 Stored Procedure 在 DB2
数据库,需求拜望之。下边把施用进度中相遇的多少个难点整治下:

第七章:数据库备份与回复
(复苏的定义,db2日志,数据库和表空间的备份,数据库和表空间的还原,数据库和表空间的前滚,recover使用程序,数据库重新建立,监察和控制备份恢复生机和卷土而来,优化备份复苏和复苏)
1卡塔尔国 Redo
是指db记录了成功的操作commite之后但没立马的写入硬盘,那时开机数据库会活动做写入硬盘的操作
2)崩溃恢复生机(crash
recovery卡塔尔(قطر‎是数据库的多个效率,使数据库达到同等的情况,能够回滚未提交的数量,重做已经在内部存款和储蓄器提交的数目。选项:autorestart
on ,以至能够选用db2 list utilites show detail或db2pd -until查看进度。
3)脱机是指在崩溃复苏的时候表空间发出错误
4)横祸苏醒(disaster recovery卡塔尔,用HADRubicon效率来苏醒,原理
是将源数据复制到指标数据库幸免
5)前滚苏醒要基于启用备份况兼启用了归档日志,恢复数据库时且无法用without
rolling forward,数据库在回复操作截至时处于roll foward pending
6)前滚苏醒分为:前滚数据库和前滚表空间
7)前滚表空间日常还可以在日记中前滚至:日志末尾(to end of
log卡塔尔(قطر‎和某些特定期间点(称为时间点复苏)。经常二种情景用前滚表空间:表空间作苏醒操作后处于前滚暂挂状态(做rollfoward
database将日志应用于表空间)和崩溃恢复生机时境遇八个或五个表空间处于前滚暂挂(这种状态要先修复表空间,能力做rollfoward
database将日志应用于表空间)
8)前滚苏醒要启用归档日志效能,私下认可是不曾的
9)日志记录任何commit到磁盘的数码,提交的数额redo ,未有付诸的数据undo
10卡塔尔国日志只记录DML(insert,delete,update卡塔尔
11卡塔尔(英语:State of Qatar)循环日志 有 主日志(primary log files卡塔尔 和 帮忙日志(second log
files卡塔尔.循环日志只好苏醒到备份点
12卡塔尔(英语:State of Qatar)活动日志(active
log卡塔尔(英语:State of Qatar)是尚未写入磁盘的日记,二种标准任性三个条件下就是运动日志:包括尚未提交或回滚的事情音讯;包罗已经交由但绝非写入磁盘的事体消息
13)logarchmeth1=off 是循环日志
14)logarchmeth1=logretain,userexit,disk:directory_name,tsm:managment
class name,vendor:libary name
15卡塔尔(قطر‎日志总计:循环日志协理崩溃恢复生机和本子苏醒,归档日志扶植除了前七个外还会有一个前滚苏醒
16)备份不会去备份数据库微型机配置文件或注册变量
17)如若是在线备份(backup online卡塔尔(قطر‎那就料定假使归档日志
18)恢复生机(restore卡塔尔(英语:State of Qatar)数据库只可以是离线来做,那一个和rollforward
数据库是同样的法则
19)本地数据库目录 和 系统数据库目录都以同一个名字的公文夹:sqlbdir
20卡塔尔表空间的回复一定会有rolling forward的操作以高达相通的意况
21)能够接纳db2 list tablespaces show detail或db2 get snapshot for
tablespace on db查看minimum recovery time那后生可畏筛选
22)db2ckbkp -h 检查实验备份性息 db2ckrst -d dbname -t time 检查增量恢复生机
23卡塔尔苏醒restore数据库的时候,容器的职位或名称设备与备份时的不等,就要接纳重定向恢复生机
24)drop是删除表,使用drop之后表结商谈表的多寡都会被删去,truncate 和
delete是去除表里的数据,但不删除表自个儿,truncate 和
delete比较,truncate要快非常多,但劣点正是无法回滚,包涵索引等都会化为起初值,数据就不可能复苏了
25)db2 select tbspace,drop_recovery from syscat.tablespaces
查看表空间的选项                    
26)drop_recover这么些选项不可能用在system temporary tablespace ; LOB ;
XML上
27卡塔尔(英语:State of Qatar)复苏删除表步骤:1)完整数据库备份2)restore在删除表在此以前创建的数码库级或表空间级备份image
3)检索已删除表的靶子ID 4卡塔尔国rollforward 数据库 5)重新建立表
6)用前滚的数据库导入的多少导入到表中
28)rollforward 会使表空间处于不可访谈的情形
29)历史文件db2rhist.asc
在db2inst1/NODE0000/SQL00001下边,及其备份文件db2rhist.bak
30卡塔尔(英语:State of Qatar)db2rhist.asc能够用list history来查阅哪
31)db2 list history backup all for db tomdb 列出tomdb的历史文件
32卡塔尔国prune histroy 命令管理恢复生机破坏了的野史文件
33)为了保障日志文件能够保留,能够应用backup db dbname online to
/backuodir include logs,保存日志在备份影象中的操作之能是在线备份
34)离线备份:earliest log=current log   而在线备份 earliest log <
current log 
35卡塔尔(قطر‎复苏删除的野史文件:db2 restore db dbname history file 
36)可复原数据库重新创立:表空间备份可过来数据库,部分表空间备份可过来数据库,含有log文件的在线备份可还原数据库,使用增量备份重新建立可复原数据库,使用重定向选项重新创建可过来数据库
37)db2 restore db tomdb rebuild with all tablespaces in database taken
at 二零一四0317130324 用表空间备份重新创设数据库(归档日志)
38)用表空间重新建立之后要前滚表空间,若无相应的备份影象都能在历史文件中找到本事本田UR-VF,个中国和东瀛志文件一定要可用,要是不在数据库参数的Path
to log files里面,就要钦定日志文件地方(用overflow log path这一个选项)
39)[db2inst1@oc6162546036 SQL00001]$ db2 rollforward db tomdb stop
SQL1271W  Database “TOMDB” is recovered but one or more table spaces
are 
offline on members or nodes “0”.           qa:????为何恢复生机持续 
40卡塔尔部分表空间重新建立数据库,除了重新建立,还要苏醒restore pending的表空间
41)可复原数据重新构建能够用任何备份,不可恢复生机数据库只好用数据库备份

(说真话,DB2 并未 SQLServer 好用,也恐怕本人是太小白了,有待于升高…)

42)0x0100 表示:restore pending 

第六章 数据移动 (export,import.load,db2move,db2look卡塔尔
1)db2 “export to table1.dat of del messages table1.log select * from
table1”
SQL3015N  An SQL error “-1585” occurred during processing.
尽管有记录然而会报错 
2)import 脱机导入(allow no access卡塔尔, 联机导入(allow write access卡塔尔
3卡塔尔导入形式有:insert,insert_update,replace,db2look
前三符合对象表存在(扶持的格式IXF,WSF,ASC,DEL卡塔尔(英语:State of Qatar),db2look符合未有目的表(扶持的格式PC/IXF卡塔尔国
4卡塔尔(قطر‎load有五个动作选项:insert,replace,restart,terminate

================================================================================================================
第天问 基本监察和控制措施 
1)监控工具备:快速照相监视器,事件监视器,db2pd工具,db2mtrk, activity
monitor等
2)快照监控器是在对话品级纠正:有三种方式校订:更正数据库的安排参数(db2
update dbm cfg using dft_mon_lock on卡塔尔(قطر‎,调用应用程序级的db2MonitorSwitches(卡塔尔国 API函数,或许试行update monitor
switches using [[SwitchID] on | off,…]
3卡塔尔获得快速照相信息:db2 get snapshot for dbm/database on dbname/locks on
dbname/sdynamic sql on dbname
4卡塔尔(英语:State of Qatar)重置流量计:reset monitor for db dbalias,reset monitor all,
能够重新载入参数单个数据库,全局数据库,但不能够选拔性的对用快速照相监视器开关调节的独辟蹊径监视器组重新设置流量计
5)db2pd重如若监督锁
6)为什么快速照相监控没有别的项,如:tablespaces ,dbm,tables
7卡塔尔快照监察和控制的方式:get snapshot for
8卡塔尔(قطر‎利用函数监察和控制,不过要受控于监视器按键 
9)利用视图监察和控制 sysibmadm情势名初阶的视图
10)monitor switches 成效与单个数据库,dbm 是颇负数据库,db2 update dbm
cfg 是总按键,monitor switches是小开关
11)event monitor是要为特定事件类型创立
12)db2evmon工具来格式化sql event monitor原始数据 
13)db2mtrk是用来监督内部存款和储蓄器
14)db2pd -version -osinfo查看版本 操作系统音讯

================================================================================================================
第十章 运转数据库必需思忖的数据库设置
1)db2 get dbm cfg show detail里面包车型地铁Delayed Value 与Current
Value在在线配置的情状下,值应该是相等的
2)db2pd -dbptnmem能够查阅数据库内部存储器总括音信
3卡塔尔(قطر‎通讯设置不可能协同配置(在线配置,满含注册变量,节点配置,端口配置);
  内部存款和储蓄器设置中instance_memory能够合作动态更新;
  self_tunning_mem单分区多分区DPF能够一并配置;
 
数据库分享内部存款和储蓄器能够协同配置(databse_memory,这一个内存共享配置决议于slef_tunning_mem
是ON的情况);
 
缓存池大小能够协同配置(IBMDEFAULTBP是暗许的缓冲池,当syscat.bufferpools目录表中该缓冲的NPAGES值为-1是,db2数据库配置参数   
BUFFPAGE调节缓冲池大小,不然会忽视BUFFPAGE参数,并用NPAGES参数内定的页数创设缓冲值);
 
pckcachesz能够一齐配置(程序包告诉缓存用来高速缓存数据库上的静态和动态SQL和XQuery语句的享有section);
 
catalogcache_sz高速缓存可以使用的数据库堆中最大空间(以页总计)能够风姿浪漫并配置;
4)数据库微机要求从磁盘I/O进行的越少,品质越好
5)BPH猎豹CS6缓冲池命中率应该超越十分九(能够使用SYSIBMADM.BP_HITRATIO计占星中率),个中的字段:SNAPSHOT_TIMESTAMP
,DB_NAME ,BP_NAME  ,TOTAL_HIT_RATIO_PERCENT
,DATA_HIT_RATIO_PERCENT,INDEX_HIT_RATIO_PERCENT)
6)程序包高速缓存(pckcachesz卡塔尔(英语:State of Qatar)不建议设置automatic
,它使SQL不用寻访系统目录,以至动态SQL或XQuery免去编写翻译这一步,在那之中能够是用上边那几个讲话判定是或不是满意要求:
select (1-pkg_cache_inserts/pkg_cache_lookups)*100 as
pchr,pkg_cache_num_overflows from sysibmadm.snapdb
7)catalogcache_sz(高速缓存卡塔尔使用状态查看:db2 get snapshot for dabtabase
on dbname|grep -i “catalog”卡塔尔(英语:State of Qatar)中的catalog cache
overflows那生龙活虎项,不为0就要追加:db2 update db cfg using catalogcache_sz
XX
8卡塔尔locklist到达maxlocks时,数据库微电脑会对应用程序挂起的锁定实行从行到表的锁定晋级
9)db2 event monitor
笔录下音信后用db2evmon -path 命令展开

1.db2 update monitor switches using lock on statement on

2.create event monitor lockmonitor for deadlocks, statements  write to
file ‘c:\dulog’ 
  db2 “create event monitor dlockevm for deadlocks with details history
write to file ‘/home/db2inst1/locks'”

3.set event monitor lockmonitor state 1

最后
4.set event monitor lockmonitor state 0 

5.db2evmon -path /home/db2inst1/deadlock > deadlock.txt

6 more sqltrace.txt

================================================================================================================
第十后生可畏章 平日运承保险 runstats,reorg,rebind,健检,数据库监察和控制
1卡塔尔总计音讯是记录种种数据库对象音讯,并保存在数据库系统表目表中,优化器会依照这个信息采取最低的实施开销
1)db2运行的本钱是指CPU费用(以指令数计)和I/O(以寻道数和页的调换数计),开支的单位是timeron,数据库总计新闻抽样误差过大,就有望导致质量难题
2卡塔尔静态SQL在runstats之后供给重新bind,因为在bind以前就已经规定,则会现出总结新闻不黄金时代致的处境,但动态SQL就无需,因为动态SQL语句的寻访战术是依据总计消息在运营是动态变化的
3)runstats犹如小车的GPS
4卡塔尔  静态 SQL:静态 SQL 语句常常用于嵌入式 SQL 应用中,在程序运转前,SQL
语句必须是鲜明的,比方 SQL 语句中涉嫌的列名和表名必须是存在的。静态 SQL
语句的编写翻译是在应用程序运维前行行的,编写翻译的结果会蕴藏在数据库内部。而后程序运转时,数据库将直接施行编写翻译好的
SQL 语句,降低运作时的开采。
    动态 SQL:动态 SQL 语句是在应用程序运行时被编写翻译和实行的,举个例子,使用
DB2 的交互作用式工具 CLP 访谈数据库时,顾客输入的 SQL 语句是不明确的,因此SQL 语句只好被动态地编写翻译。动态 SQL 的接收比较多,更仆难数的 CLI 和 JDBC
应用程序都施用动态 SQL。 
 依据编程方法的比不上,DB2 的应用程序开还足以分为嵌入式 SQL
编制程序和非嵌入式编制程序 :

    嵌入式 SQL 编制程序将 SQL 语句嵌入到宿主语言 (host卡塔尔(قطر‎ 的次序中,比如 C/C++
程序。因为宿主语言不识别 SQL 语句,先要对程序开展预编写翻译,把 SQL
语句转换为对 DB2
服务的调用,同等对待写源代码,最终再采纳宿主语言的编写翻译器对应用程序举办编写翻译。嵌入式
SQL 都亟需被绑定到一定的数据库中,可分为嵌入式静态 SQL 和嵌入式动态
SQL。
    非嵌入式应用程序不要求预编写翻译,且方法超级多,如
CLI、JDBC、ODBC、ADO.NET 等等,那些方法中都应用动态 SQL。表
2罗列了大范围的 DB2 编制程序接口。 
5)db2 reorgchk update statustucs on table all
对全表实行runstats,固然有批量的数量插入时候,就必要做runstats
6卡塔尔(英语:State of Qatar)对特定表的runstats,db2 -v runstats on table tablename and indexs all
7卡塔尔(英语:State of Qatar)查看是不是举行了runstats:
syscat.tables中的stats_time列呈现的值能够查看是还是不是运转,当为null时,正是从未运转runstats;syscat.indexes也能够用这种方法检查测量试验
8)在表中运营runstats有二种顾客访谈选项:allow read access,allow write
access(默许)
9)9.5事情发生早前的runstats之能在单区(单个数据库分区)举办总结,所以风流倜傥旦不是在颇负数据库分区中相通公布,那么会冒出总结信息不相通,即就要runstats此前每种的对种种分区之间重新分发数据,用那几个命令:redistribute
database partition group
10)db2rbind能够用来重新绑定数据库中具备应用程序包,使用 db2 flush
package cache
dynamic删除程序包缓存器中负有当前缓存的动态SQL,并强制隐式的编写翻译一下伸手
11)stat_heap_sz是代理个人内部存款和储蓄器的少年老成局地,钦定了runstas总计的持有内部存款和储蓄器堆的最大值,运行是分配,完毕时释放,最棒是能增大其值
12)当定义了runstats调节(thrittling,在那之中的参数util_impact_priority,util_impact_lim卡塔尔国,并且该调治可操作时,runstas经常会话费更多的时日,但对生育系统影响非常的小
例:db2 runstats on table tablename and indexes all util_impact prioriy
10 ,如果util_impact_lim 10 ,表达专业负荷约束在百分之十下
13)在自动化总计消息配置此前,要透过运营sysinstallobjects存款和储蓄进度创立查询反馈库,即在设置auto_stats_prof
on,auto_prof_upd on之前,要用call
sysinstallobjects(toolname,action,tablespacename,schemaname)
14)在动用runstats对特定表和目录实行时,必得利用完全限制的表名和索引名
15)搜聚分布式总括音讯:db2 runstats on table tablename with
distribution and indexes all
16卡塔尔(قطر‎runstats有相当多样差异的选项举行加强优化效用:
   在特定的列和目录举行
   搜聚布满式计算音信
   包蕴频率和分位数计算音信
   包涵列组总结音讯
   包含like statistics的runstats
   包括总计新闻配置文件的runstats
   带有抽样的runstats
   带有系统页级抽样的runstats
   reorgchk搜罗全体表的数据库总计消息:reorgchk update statistics on
table / schema
   边load边做总结音讯,边成立索引边总计音讯
17)重新组合表要比runstats计算新闻时间更加长,能够先实践runstats绑定程序包计算音讯,若无改进可以再实行reorg
18卡塔尔v8以前只好离线重新组合,v8之后能够协同也可以离线:钦命了选项inplace便是一齐重新组合,暗许是离线脱机重新组合
19)有关心敬性格很顽强在荆棘丛生或巨大压力面前不屈组的快慢消息将记录在数据库活动的历史记录文件中,能够用db2 list
history命令展开,也足以用表快速照相来见识重新组合进程(db2 get snapshot for table
on db,不关如何设置数据库监视表开关,都会记录表重新组合监视数据
20卡塔尔(قطر‎假诺系统开展的咽气复苏且步入替换过程,那么一定要使重新组合表操作完毕
21)脱机表重新整合须求将别本复制到临时表空间,但在线重新组合表不会
22)联机表重新整合会成立一个.OLTucson的二进制的文书记录重新整合时要用的音信,如:LSN
重新整合项目,下个腾出的约束,索引标志,是为着珍爱数据集群照旧回笼空间等
23)联机表重组富含多个阶段:select N pages,vacate the range,fill the
range,truncate table 
24卡塔尔国假使要对联机表重新整合进展重新结合,必需先暂停(db2 reorg table tbname
inplace pause卡塔尔(英语:State of Qatar),手艺结成
  
发出resume央浼之后,若无再度钦定实践的整合项中truncate的选项,将沿须原本的截断表选项truncate
   在restore 和 backup的时候无法实行结合
25卡塔尔(英语:State of Qatar)监视在线重新整合表方法:快速照相(get
snapshot卡塔尔(英语:State of Qatar),管理视图(snaptab_reorg),表函数(snap_get_tab_reorg)
26卡塔尔国由于脱机表重新整合是同步的,由此脱机表重新整合中的任何错误都会再次回到给实用程序
  
联机表重新组合是异步的,因此未有SQL音信写入CLP,查看重返SQL错误,请发出list
history reorg
27)联机重新整合索引,假诺钦定了allow write
access那些选项,将会重新创设该表的具备索引,命令:db2 reorg index
index_name for table table_name[clean up /clean up all /cleanup only
pages]
28卡塔尔国PCTfree是指 在创造索引的时候为其定义的可用空间百分比
29)db2 “select ‘revoke select  on
‘||rtrim(tabschema卡塔尔(قطر‎||’.’||rtrim(tabname卡塔尔(قطر‎||’ from public;’ from
syscat.tables ” > script.sql 利用目录表做的脚本rvoke public的权杖
30卡塔尔(英语:State of Qatar)脱机表重新整合必要的附加存款和储蓄空间保存表的阴影别本,脱机索引重新组合不供给,联机表重新整合须要的是越多的日记空间,联机索引重新组合须求更加多的日记空间和阴影别本存款和储蓄空间
31)rebind会对应用程序在进行前行行绑定,绑定和依照总结消息和数据库对象创设八个主次包,那个程序包便是奉行安排
32)所以只要进行了计算或是重新整合,那就要再次开展rebind
33)runstats > reorgchk > reorg > rebind/db2rbind > runstats
循环
34)syscat.packages表中的valid值标记当前的程序包是不是可用,假如是X值,就象征当前的主次包是不可用,那么就供给重新绑定
35)db2diag.log 错误日志,db2inst1.nfy文告日志。那三个需求常常检查
36)DMS表空间的剩余查询是用,db2 list tablespaces show detail
,SMS表空间对应的器皿用操作系统查看剩余空间df -k 
37卡塔尔国DB2有多数工具用于监察和控制数据库和实例活动 举个例子:snapshot monitors/sql
snapshot函数 ; event monitor ; sysibmadm动态品质试图
38) db2 list utilities show detail 能够监察和控制 LOAD ,BACKUP ,RESTORE,
RUNSTATS

================================================================================================================
第十七章 数据库常用工具
1卡塔尔国db2cfexp ,db2cfimp 实例配置新闻导入导出
2卡塔尔db2exfmt,db2expln是用来查看已收罗并写入解释表(explain_instance卡塔尔(英语:State of Qatar)的周到讲解多少
3)visual explain查看特定SQL语句接受的拜会布署的图形化表示GUI解释工具
4卡塔尔(英语:State of Qatar)timeron是db2优化器使用的黄金时代种资本衡量单位,用于总括查询完全施行所需的时刻和财富数量
5)访谈安顿是db2用于奉行db2语句的门路和步骤,那是享有可用解释工具呈现的消息
6)syscat.packages是用来囤积数据库中的以程序包的样式的访谈陈设
7)查看静态SQL,动态SQL用 db2expln
8)db2exfmt是直接管理已搜罗并村混在分健胃中的应有尽有讲明多少或表达快速照相数据,输出是基于文本的报告
9)db2advis索引设计工具,测验如若创制了目录,SQL实践开支能够拉长多少,
10卡塔尔(قطر‎使用db2advis第一步是要访谈和汇报提须求Design advisor的行事负荷
11)db2batch
是意气风发种规范测验工具,是以黄金时代组sql和xquery语句作为输入,动态的备选语句的进行时间,并重临结果集
12)db2dart
数据库后生可畏致性检查工具和修补工具,那么些实用程序会直接从硬盘中读取数据库的数量和元数据开展相比,因而无法对全体运动总是的数据库运行该工具
13卡塔尔国 db2look
能够提取数据库定义语言DDL;生成缓冲池,表空间和数据库分区组音信 ;
创造数量定义语言DDL
;搜聚数据库子集的计算数据和DDL。以至用db2look来创设模拟测验数据库

意况搭建

(1)DB2Client

DB2 客户端:DB2 v9.1

安装到位后,能够由此cmd命令行查看 DB2Client 相关音讯:

  • db2level:查看DB2Client版本信,包括32/64位

在开头一贯运营 db2cmd 来运作 db2cmd.exe 运营 db2命令路程序,实施 db2:

图片 1

以后,能够实践连接数据库、访谈数据等操作。

db2命令行连接数据库

catalog tcpip node runnode_My remote IP server Port
catalog database calldb_Dest as calldb_My at node runnode_My

再凭 顾客名和登陆密码 就能够访谈数据库了。个中,DB2 数据库暗中同意端口是
50000。

connect to calldb_My user 用户名 using 密码

(2)Quest
Central

DB2 可视化工具:Quest Central for DB2 v5.0.2.4

有关心册码

  • Quest Central for DB2:2-95710-05964-91891-64750 和 Bergelmir/CORE
  • Knowledge Xpert for DB2:147851648424638496327 和 stenny

设置之后,运维遭逢如下难点:

图片 2

削株掘根措施:程序上点击鼠标右键–>属性–>宽容性;勾选乃相当方式运作那么些程序(包容windowsXP);勾选以管理人身份运路程序,就能够减轻。

具体操作

透过 db2指令 连接到数据后,在 Quest Central
首页会展现已三番两次的照顾数据库的连续几天结点。

除 Quest Central 外,还也可以有任何 DB2可视化学工业具,可扩高校习。

14)

第十楚辞 v10.1的新特色 

底子运用

事前多是用 SQLServer,初次操作 DB2
数据库,虽说语法大多相似,依然种种不顺手。

关于DB2,相关材质和书本推荐:

  • 牛新庄
    -《鲁人持竿DB2》《长远解析DB2》《DB2质量调解与优化》
  • 《DB2 Express-C 快速入门》

此外,可参考:DB第22中学华夏族民共和国社区

七个服务器能够建多少个实例,二个实例下能够建八个数据库,多个数据库能够富含多少个表空间。

几个注意事项

  • SQL 语句必定要以 ; 结尾
  • declare 定义变量不要带 @,那是与 SQL Server 的界别
  • SQLSTATE 和 SQLCODE 能够提供 SQL 命令的运作状态
  • 储存进程调用:call ProcedureName(inVal, …, inVal, ?, … ,
    ?卡塔尔国;,在那之中,? 是出口参数占位符
  • NULL
    对于完整性限制和询问带给负效应,提出表中最棒未有空值,在建表时加上非空限定
  • 表存款和储蓄在表数据空间,索引存款和储蓄在目录数据空间
  • 分区提升系统质量

常用命令

(1)查询

// 查看表字段信息
[1]. describe table schemaName.tableName;
[2]. describe select * from schemaName.tableName;
// 查看表索引信息
[1]. describe indexes for table schemaName.tableName show detail;
[2]. select * from syscat.indexes where tabname='大写的表名';

(2)删除

// 删除索引
drop index schemaName.indexName;

(3)重命名

// 重命名 表名
rename table schemaName.oldTabName to newTabName;
// 重命名 字段
alter table schemaName.TabName
    rename column oldColName to newColName;

里面,表 oldTabName 不要有外键限制和视图援用。此外,尽量制止字段重命名。

建表

已知存在表 tabSqh,成立 tabSqh 的别本 tabSqh_Copy:

CREATE TABLE tabSqh_Copy like tabSqh;
INSERT INTO tabSqh_Copy select * from tabSqh;

留意,该措施只复制表结交涉表数据,tabSqh_Copy
没有有关的表节制,供给手动增添:

alter table tabName
    add constraint P_tabName primary key(IDKey);
alter table tabName1
        add constraint F_IDKey foreign key (IDKey)
                references tabName2 (IDKey)
on delete restrict on update restrict;        

其余相关限定增加方法如是之。

SELECT 高等用法

这里介绍 select 在 DB2 中的 3 种高端用法:

(1)复制表结构

CREATE TABLE new_table_name LIKE table_name; 

(2)创制结果表

CREATE TABLE new_table_name AS (
    SELECT * FROM table_name
) DEFINITION ONLY; 

(3)创立物化查询表(MQT)

create table new_table_name AS (
    select * from table_name
) data initially deferred refresh deferred;   
refresh table new_table_name; 

物化表SELECT语句看似二个查询,未有真正形成表,类型突显为Query,但它完全能够当表来用。 

删表

(1)删除单行数据或批量去除数据:方法2比办法1属性好

// 方法1
DELETE FROM tabName WHERE 过滤条件  
// 方法2
DELETE FROM  
(  
    SELECT * FROM tabName WHERE 过滤条件  
);

(3)全表数据删除

// 方法1
DELETE FROM tabName;
// 方法2
DROP TABLE ...
CREATE TABLE ...
// 方法3
ALTER TABLE tabName ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE;

(4)直接删除表

DROP TABLE tabName;

临时表

DB2的有时表基于会话(session),且会话之间互相隔断。当会话结束时,有时表的数量被删除,不经常表也会被删除。

有的时候表的效应:

  • 封存中间结果集,以便职务的存在延续管理
  • 幸免复杂的SQL语句,将一条较为复杂的SQL语句分解成多条轻松的SQL语句,进步运转成效

    // 创立不经常表
    DECLARE GLOBAL TEMPORARY TABLE session.TmpTableName
    LIKE rvc.TableName INCLUDING COLUMN DEFAULTS
    WITH REPLACE
    ON COMMIT PRESERVE ROWS
    NOT LOGGED;
    // 向不常表中插入数据
    INSERT INTO session.TmpTableName
    SELECT * FROM rvc.TableName WHERE <过滤条件>;

此中,NOT LOGGED 表示不记录日志,WITH REPLACE
代表若已存在偶尔表则替换之,ON COMMIT PRESECRUISERVE ROWS
表示commit后照旧保留表中的数据。之后,不常表能够视作是普通表,查询、联表均可。

至于session有的时候表的多少个难点:http://www.db2china.net/Question/28913

至于session不时表调节选项 ON COMMIT PRESE奥迪Q5VE
ROWS的表达:http://www.db2china.net/Article/9916

小心,全局有的时候表允许成立索引、但不一样意创立主键和唯意气风发节制。创立的权且表同原表有生龙活虎致的表布局,不过相关列的性质(主键、外键、唯后生可畏约束、索引等)新闻是未有的。

其余音讯可参看:DECLARE GLOBAL TEMPORARY TABLE –
IBM

DGTT 与 CGTT

上述一时表均为 DGTT(已扬言的大局一时表),DB 9.7 开端支持CGTT(已成立的全局不经常表)。

共同点:

  •  扶持基于会话的数码
  •  扶植索引,但不帮衬唯风度翩翩约束或主键

双方都扶持基于会话的数目。

CGTT 优点:

  •  漫长化的,在系统安装时优先创制、供之后分享之,而 DGTT
    是在某三回应中注明、仅供该会话使用;
  •  防止在各客户会话开头时声称不经常表的渴求;
  •  采纳与平时表相似的情势准绳,而 DGTT 必需是定位的格局 SESSION;

创建 CGTT:

CREATE GLOBAL TEMPORARY TABLE <table_name> (
    <column_name>  <column_datatype>,
    <column_name>  <column_datatype>,
…  )
ON COMMIT [PRESERVE|DELETE] ROWS
ON ROLLBACK [PRESERVE|DELETE] ROWS 
[NOT LOGGED|LOGGED] 
DISTRIBUTE BY HASH ( col1,..)
IN <tspace-name>;

其他详细音信可参看:DB2 临时表 – DGTT 和
CGTT

索引

目录是有序键值的集聚,每叁个键值指向表的一整套。

目录是后生可畏把双刃剑,当表的目录过多时,数据删除、插入和换代频率会回降,当索引过少大概安插不客观时会影响多少的询问功用。尽量不要在含蓄
null 值的字段上树立(单列)索引,因为索引不会蕴藏该条记录的消息。

对于构成索引,指导列(组合索引中排在最左侧的列)对查询语句中where条件的影响最大。由此,应该对索引键中的列按重复值由少到多的依次排序,该排序会使索引键提供最棒质量。

优点:

  •  加速查询速度
  •  幸免不须求的表扫描 或 排序操作
  •  减弱死锁的发出
  •  唯大器晚成性索引保障数据的唯风流洒脱性

缺点:

  •  额外的仓库储存空间
  •  索引创立和维护的耗费时间

计算新闻

数据库对象的计算参数音信,如表的数据量大小、占用的页数、表的行数、索引的状态和外市的分区情形等。

贰个SQL在写完并运转之后,大家只是告诉DB2去做什么,而不是怎么去做。具体咋做,决计于优化器。优化器为了转移最优的实践布署,供给明白当前的系统消息、目录中的总计音信等。runstats
命令正是用来访问数据库对象的意况新闻,对优化器生成最优的推行陈设第后生可畏。

对数据表频仍的insert,
update,会变成数据库存款和储蓄中冒出物理碎片,runstats能够对数据库举行数据整合,有帮助数据块延续化、提升多少存取的频率,原理形似于OS中的磁盘碎片收拾。

// 针对表
runstats on table schemaName.tableName;
// 针对表和索引信息
runstats on table schemaName.tableName [with distribution] and [detailed] indexes all;
// 针对某个单一索引
runstats on table schemaName.tableName for/and indexes schemaName.indexName;

1)

实践陈设

在关系型数据库调优进程中,SQL语句是关联质量难题的机要原因,而实践安插则是表达SQL语句试行进程的言语。

  •  不相同数据库之间对于实践安排的代表方法各不相近
  •  每一趟导入存款和储蓄进度,生成的存款和储蓄进程实施安排不必然完全相像,受当前的数据库参数、总结音讯的熏陶

SQL语句的实行进度生机勃勃共满含三个关键环节:

  •  数据读取情势(scan):表扫描
    or 索引围观
  •  表之间如何开展接二连三(join):饱含Nest
    Loop 、Merge Join、Hash join及半总是等、多表间的连年各种选取

有关多表间连接的依次选用难题:

随意在平等条SQL语句中蕴含了不怎么张表连接,同临时刻独有两张表举行连接,但多表间的连天各样也是调整品质的珍视原因。数据库对于表的顺序的筛选,依照两个表之间总是后得出的行数进行排序,假如总括消息与事实上情形不是十分大,有望会促成由于延续各种不当而导致的属性难点。

连锁音信请参谋:DB2施行铺排浅析

对此有个别复杂的SQL,提出使用
Quest Central 中的 SQL Turning 功用,相比直观。

SQL语句推行安插的其他查看方法:

(1)db2expln

db2expln推行布署分为三片段:

  •  当前采摘实施陈设的言语
  •  施行计划详细信息
  •  实践陈设图:从下往上,从左往右,遵照号码从大到小的依次举办阅读

在cmd命令行运转 db2expln
命令,能够查阅该命令的施用辅助。

db2expln -d 数据库名称 -u 用户名 密码 -q "sql语句"[-f "文件名.sql"] -t -o 输出文件名.out

个中,文件名.sql 中的多条独立的SQL语句各占1行,行末不要带分号。

db2expln -d dbName -u sqh cmb@2018 -q "sql语句" -g -t -o tmp_sqh.out
db2expln -d dbName -u sqh cmb@2018 -f "sqh.sql" -g -t -o tmp_sqh.out

对上述命令的讲授:

  • -t:输出到尖峰,-o:输出到文件
  • -q:施行三个SQL语句,-f:实行有些保存了多条SQL语句的文本
  • -g:图形化突显
  • -z:内定SQL语句间的相间符

参考:应用 db2expln 的 DB2
SQL性能优化示例

(2)db2exfmt

该方法要求在DB2设置目录 …\IBM\SQLLIB\MISC\ 下有 explain.dll
文件,有待于进一层读书。

关于查看存储进度的实行布置

率先,获取存款和储蓄进度相对应的包

SELECT bname, bschema, pkgname, pkgschema 
FROM syscat.packagedep
WHERE btype='T' AND pkgname in (
     select bname from sysibm.sysdependencies where dname in (
            select specificname from syscat.procedures where procname='存储过程名称' AND procschema='存储过程模式名称'
     )
);

下一场,再通过如下命令获取包中的实施安排

db2expln -d 数据库名称 -u 用户名 密码 -g -c 包模式名称 -p 包名称 -s 0 -t -o tmp_sqh.out

留意,上述代码获取存款和储蓄进度对应的包,有些意况下询问不到信息,至于缘何还不知底,再提供另生机勃勃种格局

select c.PROCSCHEMA, c.PROCNAME, b.* 
from syscat.STATEMENTS b, syscat.PROCEDURES c, syscat.ROUTINEDEP d
where b.pkgname = d.bname
      AND c.SPECIFICNAME = d.SPECIFICNAME
      AND c.PROCSCHEMA   = d.ROUTINESCHEMA
      AND c.PROCSCHEMA   = '存储过程模式名称' AND c.PROCNAME = '存储过程名称'; 

总括之,鉴于数据仓库储存款和储蓄进度进行安顿的多变性,提出:

  •  runstats + rebind
  •  删除重新建立 

runstats
命令参见上述总括消息部分,下边给出其余常用命令

// 重新绑定包
rebind package pkgSchemaName.pkgName;
// 更新 package cache 中的执行计划
flush package cache dynamic;

留神,runstats
仅是翻新推行布署的一方面(对动态SQL生效、但对存款和储蓄过程无效),其他方面还需
rebind 包(对革新存款和储蓄进度实行安顿才有效)。

================================================================================================================================================================================================================================

================================================================================================================================================================================================================================

================================================================================================================================================================================================================================

================================================================================================================================================================================================================================

 
1)CLI JDBC ODBC
是应用程序是用来db2服务器交换的驱动,当多少个口舌被驱动后,会打成叁个互连网包发送给数据库

2)查看db2进度执市价况: ps -ef|grep -i db2

3卡塔尔国查看db2版本下有哪些实例: db2ilist

4卡塔尔借使db2stop
force不恐怕停止实力,db2start不也许运转,能够履行db2_kill强制终止全数分区实行的进度,然后施行ipclean ,重新启航数据库时,做崩溃恢复生机

5)db2 get dbm cfg 观看的是sqllib目录下的db2systm那几个文件

6)db2 list db directory /catalog databse
观望编目标是/sqllib/sqldbdir/sqldbdir这么些文件 ,那些和node
是意气风发致的(node要创建才有)

7)db2support <output_path> -d <db name> -cl 0
备份当前实例和数据库配置消息,

??8)难道说补丁的底工上不能够打补丁,一定要有底子版本 ? qa

9卡塔尔(英语:State of Qatar)表空间容器的连锁音信可以透过list tablespace containers for tbspid show
detail

10卡塔尔(英语:State of Qatar)用db2pd -d <dbname> -tablespaces直观展现表空间的配备音讯

11)list tablespaces相比较,get snapshot for
tablespaces消息要通盘,比方自动积累和表空间map消息

12)SMS表空间不扶植容器大小,只辅助改过路径;DMS能够扶植容器大小校订,ADD,DROP,(add和drop会重新平衡rebalance)EXTEND,REDUCE,RESIZE;自动积累管理表空间(那几个表空间是db在创建时暗许选项或是钦命了automatic
storage
yes卡塔尔国境况下暗许的选项,不能在表空间级校订表空间大小,只好在数码库级增添add
storage on 选项为数据库增加新的储存路线(db2 alter database dbname add
storage on dbpath卡塔尔(قطر‎,这里有有些要验证:
9.7
在此以前新加的路线不会被表空间立刻利用,唯有本来就有囤积路线文件系统满了,才会选用新扩大的门路,何况一定要扩展不能去除。9.7后头就足以对活动储存表空间施行rebalance操作就会马上接收那个蕴藏路线

13)DMS中利用add扩展容器会另行rebalance,影响属性 ,

14卡塔尔国 DMS中选拔begin neww stripe set
选项是当本来就有容器已用完后,再利用新增的容器,于add容器不一致,该选项不会rebalance,但会促成数据偏移

15)db2pd -d tomdb -storagepaths 查看存款和储蓄路线(数据库等级)

16)在数据库级扩张存款和储蓄路线必必要在实例目录下边建设布局才行:db2 “alter
database tomdb add storage on ‘/home/db2inst1/testdbpath/’ “
DB20000I  The SQL command completed successfully ,qa ?

17)对怎么样表做rebalance ,哪个表就有新增加的不二诀窍咯

18)能够从DMS改成机动处理表空间(展现的用上选项alter tablespace tbname
managed by automatic storage卡塔尔国

19)如何删除二个在多少库级创设的器皿,表空间已经rebalance,容器路线已经rm
-rf掉了 ,db2pd -d dbname -storagepath查看以后是drop pending? qa

20)quiesce能够对表空间锁定,防止别的顾客对表空间的表数据进行改善db2
quiesce tablespaces for table db2inst1.t1 share /【reset】

21)对表空间状态的二进制解释用:db2tbst 0x4000

22卡塔尔国SYSIBM.SYSCAT,SYSIBMADM,SYSSTAT那多少个系统格局对有关对象开展分组

23)syscat.schemata这么些视图用来查阅数据库创设了哪些方式

24)decimal(p,s卡塔尔p是数字的总位数,s是小数位
;假若不点名准确的位数就依照decima(5,0卡塔尔来代表

25)表约束:*非空约束 not null *唯生龙活虎限制unique(columm卡塔尔(英语:State of Qatar)*主键限定和外键限制 *自己切磋约束 constraint constraintname
chek

26卡塔尔国constraint只是封锁名称 ,个中外键节制供给名称,检查约束供给名称

27)能够经过syscat.references检查有着完整性约束,syscat.checks查看检查约束 

28)删除约束:db2 alter table tbname drop constraint contraintname

29)在sysibmadm.admintabinfo里面查看表容积,已经压缩之后的容积

30)在根节点上找到大约对应的数值范围,然后经过那几个限定指针知道叶节点对应的数值,然后在数值通过QashqaiID偏移找到呼应的行消息

31)独一索引:当在表上创立了主键或唯意气风发键的时候,表会自动创设独一索引:db2
create unique index indexname on tablename(column卡塔尔(英语:State of Qatar)

32卡塔尔(英语:State of Qatar)独有创立了唯一索引本事利用include那么些选项进行八个字段的询问

33)db2 describe indexes for table tablename show detail
命令查看三个表是不是有目录,在哪个字段上创制了目录,以至索引的品种,也得以通过syscat.indexes接纳字段查看索引

34)怎样改良暗许使用的表空间? qa

35)有八个章程化解连串唯生龙活虎:generate_unique , identity , sequence

36卡塔尔(قطر‎唯意气风发系列号:generate_unique函数是db2最初选用在表中生成唯豆蔻梢头值的不二诀窍(bit
data卡塔尔(قطر‎

db2 create table tablename(columnname char(13卡塔尔国 for bit
data,columnname….卡塔尔(قطر‎,此中十二个字节的数据串满含的是timestamp和表分区,比方:
[db2inst1@oc6162546036 ~]$ db2 “select * from customers”

CUSTNO                        CUSTNAME        


x’20140402203636696427000000′ tom             
x’20140402203636696544000000′ sam             

  2 record(s) selected.

[db2inst1@oc6162546036 ~]$ db2 “select timestamp(custno) as
custno,custname from customers”

CUSTNO                     CUSTNAME        


2014-04-02-20.36.36.696427 tom             
2014-04-02-20.36.36.696544 sam             

  2 record(s) selected.

36)sequence是db2的一个指标,用选项nextval for seqname抓取下个值,prevval
for seqname抓取上个值 用法:db2 create sequence db2inst1.my_seq as
bigint start with 1 increment by 1 no maxvalue cycle cache 100 ;
此中cache 100是指
玖21个先行算出来的队列存在内部存款和储蓄器中,当要读取的时候一贯从内部存款和储蓄器里面拿,所以cache
不对等1的时候,连接断开会现身缓存值错过而引致不一而再,通过syscat.sequences视图查看连串定义
[db2inst1@oc6162546036 ~]$ db2 “create sequence myseq start with 1
increment by 1”
[db2inst1@oc6162546036 ~]$ db2 “create table t1(id int,name char(16))
in testdms2”
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 ~]$ db2 “insert into t1 values (nextval for
myseq,’tom’)”
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 ~]$ db2 “insert into t1 values (nextval for
myseq,’sam’)”
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 ~]$ db2 “select * from t1”

ID          NAME            


          1 tom             
          2 sam             

  2 record(s) selected.

37)indentity自增字段
,于sequence的区分在于,indentity只好在表中某一列使用,成效范围是多个表。而sequence是db2对象,于表无关,能够在全路数据库总使用

###############################################################################################################################################################################################
 
仓库储存进度(stored procedure卡塔尔(قطر‎,函数,LOB,tirgger,自增字段(indentity)那一个从未学
###############################################################################################################################################################################################

39卡塔尔国定界ASC(II卡塔尔(قطر‎ DEL是db2最常用的格式。””双引号作为字符分割符 ;
,逗号列字段分割符 ;换行来限定行区划符

40)定长ASC(II卡塔尔(英语:State of Qatar)格式,各种字符长度于列定义的字符长度肖似,不足用空格补齐

41)PC/IXF 那个是IBM特有的,能够保存表结构定义,WSF格式是lotus的格式

42)cursor游标只援助LOAD,无需中介就足以在表和表之间迁移 :declare
mycursor cursor for select c1 ,c2 ,c3 from tab1 ; load from mycursor of
cursor insert into newtab

43)export :db2 “export to tablename.del of del messages emp.msg select
* from tablename”
            db2 “export to tablename.del of del modified by chardel”
messages emp.msg select * from tablename”  
    import : db2 “import from tablename.del of del messages emp.msg
insert/insert_update/replace into tablename
             db2 “import from tablename.del of del modified by chardel”
allow wirte access commitcount messages emp.msg insert into tablename”

44卡塔尔(英语:State of Qatar)load跟import不雷同,import依然施行insert,update,delete操作,供给注脚限制和触发器,通过职业日志记录变化。而load不是意气风发行行的导入,而是格式化数据,不必验证约束和触发器,日志也相当少,符合大量数量导入。

45)load常用命令:db2 load source-file of filetype messages msgfile
[insert,replace,terminate,restart] into targettable

46卡塔尔(英语:State of Qatar)load除了是非唯生龙活虎键的表独有load装载那几个操作,只假如有唯后生可畏键的表(独一索引)将在开展塑造,删除,索引复制其余3个阶段,可由此db2diag.log查看各种阶段步骤

47)load在剔除重复值阶段,只会检查唯意气风发键,不会检测check和完整性(主键和外键),在首先个装载阶段不相符表定义的输入数据不会被装载到表中

48)含唯大器晚成键的load进程:load(不经过db2引擎将文件深入分析成物理存款和储蓄形式,无效数据能够投身转储文件)
> build(假使有目录就能依据load采摘的键创建索引) >
delete(检查测量检验唯生机勃勃键,创制丰硕表) > index copy(钦定了allow read
access/use ts选项会将build的目录数据从temporary sp里面copy到index
sp(索引表空间卡塔尔(قطر‎卡塔尔国
    
49)LOAD例子:
[db2inst1@oc6162546036 ~]$ db2 “alter table t1_exp add column ts
timestamp add column msg clob(32k卡塔尔”
《《《《《《创制充足表,加上timestamp 和 大对象
[db2inst1@oc6162546036 ~]$ db2 “load from t1load.del of del modified
by dumpfile=/home/tomzhao/t1.dmp messages msg.t1 insert into t1load for
exception t1_exp” 《《《《《《load过程

Number of rows read         = 8
Number of rows skipped      = 0
Number of rows loaded       = 6
Number of rows rejected     = 2
Number of rows deleted      = 2
Number of rows committed    = 8

SQL3107W  At least one warning message was encountered during LOAD
processing.
[db2inst1@oc6162546036 ~]$ cat t1.dmp.load.000 
《《《《《《查看有线数码(转储文件)
20,”sam”,
40,”aaaaa”,x
[db2inst1@oc6162546036 ~]$ db2 “select id
,name,seqno,ts,substr(msg,1,10)as msg from t1_exp”
《《《《《《查正视复值(非凡表)

ID          NAME       SEQNO       TS                         MSG     
 



         30 mike                 4 2014-04-04-12.26.15.342640
00001I0000
         50 cccc                 7 2014-04-04-12.26.15.342640
00001I0000

  2 record(s) selected.

装载完之后,要检查错误消息(msg.t1卡塔尔,分外表(t1_exp卡塔尔,转储文件(t1.dmp卡塔尔(قطر‎ 

50)在实际上中风度翩翩旦能作保唯风度翩翩键未有重复值的话,可以绝不创立充裕表

51)用load query检查表load状态

52)load有个copy选项用来备份load,因为有希望举行数据库或表空间的东山复起,此时前滚需求copy的表空间备份苏醒被数据库复苏删掉的load数据
(copy no 缺省,copy之对归档日志有效)

53)copy
no会是归档日志load的时候处于backup-peding状态,那个时候须要backup
db/ts来消释那么些情形

54)copy yes会使归档日志数据库load的时候产生备份媒介物,用于db
苏醒rolllforward的时候利用 
[db2inst1@oc6162546036 ~]$ db2 update db cfg for sample using
archlogmeth1 disk:/home/dbi2nst1/archlog  《《《《《《归档数据库
[db2inst1@oc6162546036 ~]$ db2 “load from t3.del of del insert into t3
copy yes to /home/db2inst1”     《《《《《《copy yes 的load
[db2inst1@oc6162546036 ~]$ db2 restore db sample taken at
二〇一四0404143751                               《《《《《《复苏数据库
[db2inst1@oc6162546036 ~]$ db2 connect to sample
SQL1117N  A connection to or activation of database “SAMPLE” cannot be
made 
because of ROLL-FORWARD PENDING.  SQLSTATE=57019               
[db2inst1@oc6162546036 ~]$ db2 rollforward db sample to end of logs
and stop                           《《《《《《前滚数据库

                                 Rollforward Status

 Input database alias                   = sample
 Number of members have returned status = 1

 Member ID                              = 0
 Rollforward status                     = not pending
 Next log file to be read               =
 Log files processed                    = S0000001.LOG – S0000001.LOG
 Last committed transaction             = 2014-04-04-18.57.17.000000
UTC

DB20000I  The ROLLFORWARD command completed successfully.
[db2inst1@oc6162546036 ~]$ db2 “select * from
t3”                                                    
《《《《《《表在restore / rollforward后 和事情发生早先的相似
          6 record(s) selected.

                              

55)-rw——-.  1 db2inst1 db2iadm1  20M Apr  4 14:37
SAMPLE.0.db2inst1.DBPART000.20140404143751.001
    -rw-r—–.  1 db2inst1 db2iadm1 528K Apr  4 14:45
SAMPLE.4.db2inst1.DBPART000.20140404144545.001
在那之中第四个字段 4代表load备份,0代表数据库备份

56)除了copy yes, copy no 还应该有少年老成种load 选项 nonrecoverable
,那一个选项能够在load之后不备份表空间,立刻能够利用表,但是这么些表在后来亟待备份前滚的时候不能够被恢复生机(时间点在nonrecoverable那些动作之后),假诺急需还原将在重新建立表或对数据库举行load点之后的备份

57)copy no 会使表空间处于backup-pending
    copy yes 会使表空间处于长日子等待
    nonrecoverable 会使表不可苏醒,不过速度高速

58)对于load装载阶段会将不相符表定义的输入数据放入转存文件,将违反唯风流倜傥限制放入十分表,那么违反完整节制和check限定,load会将其安装为set
intergrity (SQL0668n ,reason code “1” 卡塔尔(قطر‎

59卡塔尔(英语:State of Qatar)set intergrity 有三种选取:set intergrity no 暗中同意
db2 set integrtiy for T1
   set intergrity immediate checked 

   set intergrity unimmediate checked

60卡塔尔(قطر‎和违反唯豆蔻年华键相通,也要成立丰硕表把违反完整约束和check约束记录下来

61)演示进程:
[db2inst1@oc6162546036 ~]$ db2 “create table t2(col1 char(10),col2
char(10))”                                          《《《《《《创建表
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 ~]$ db2 “alter table t2 add constraint check1
check (col2 in( ‘a’,’b’,’c’))”                   
《《《《《《增减check约束
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 ~]$ cat
t2.del                                                                                 
《《《《《《创建del文档
“AAA”,”A”
[db2inst1@oc6162546036 ~]$ db2 create table t2_exp like
t2                                                            
《《《《《《创立丰裕表
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 ~]$ db2 “set integrity for db2inst1.t2
immediate checked for exception in t2 use t2_exp”       
《《《《《《对t2进展反省,并选择极度表  
SQL3602W  Check data processing found constraint violations and moved
them to  
exception tables.  SQLSTATE=01603 
[db2inst1@oc6162546036 dbbackup]$ db2 “select * from
t2_exp”                                                          
《《《《《《相当表查看,不管是或不是有那么些数据,t2都将脱离set integrity
pending状态
 
COL1       COL2      


AAA        A         

  1 record(s) selected.

62)对于数据旅馆来讲,有成都百货上千表要求检查,那么能够采取表字典查看怎么表处于set
integrity pending状态:db2 select
tabname,status,access_mode,substr(const_checked,1,1) as
fk_checked,substr(const_checked,2,1) as cc_checked from syscat.tables
where status=’c’

63卡塔尔(قطر‎表d>c>b>a,当C做完load处于set integrity
pending状态的时候,别的表不会处于此意况,不过对C表实行set
integrity这么些动作之后,a和b表都会处于set integrity
pending的境况,像这种景色主外键节制超级多的状态,大概要执行多次set
integrity命令   

64)db2 “select tabname from syscat.tables where status=’c'”
查看表处于set integrity pending 状态的表

65卡塔尔国db2 set integrity for t1 off no access cascade immediate
《《《《《《对表t1安装为set integrity
pending状态,不许访谈,同不经常候他的依附表也处在set integrity pending状态

66卡塔尔(英语:State of Qatar)db2 set integrity for manager foregin key, employee check immediate
unchecked
《《《《《《对表manager的外键和employee的自己商量节制检查,并将该表脱离set
integrity pending状态(确认保障没有违反约束的图景下得以如此用unchecked卡塔尔

67)倘若表处于load
pending状态,能够利用load…restart,terminate,replace,比如load
termiante模拟下列操作:
[db2inst1@oc6162546036 ~]$ db2 create bufferpool bp8k size automatic
《《《《《《创建8k bufferpool
[db2inst1@oc6162546036 ~]$ db2 “create tablespace ts3 pagesize 8k
managed by database using(file ‘/home/db2inst1/ts3’ 256) bufferpool
bp8k”《《《《《《创建8k的ts3表空间
[db2inst1@oc6162546036 ~]$ db2 “create table t1(id int,name
char(50),desc char(50)) in ts1″《《《《《《创建表
[db2inst1@oc6162546036 ~]$ db2 -td@ -f
sp_insert.sql《《《《《《试行插入存款和储蓄进程
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 ~]$ db2 “call
sp_insert(6500卡塔尔(英语:State of Qatar)”《《《《《《实践插入存款和储蓄进程

  Return Status = 0
[db2inst1@oc6162546036 ~]$ db2 “export to t1.del of del select * from
t1″《《《《《《导出数据
[db2inst1@oc6162546036 ~]$ db2 drop tablespace
ts3《《《《《《删除ts3
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 ~]$ db2 “create tablespace ts3 pagesize 8k
managed by database using(file ‘/home/db2inst1/ts3’ 232卡塔尔(英语:State of Qatar) bufferpool
bp8k”《《《《《《重新建立一个232页的8k ts3表空间
[db2inst1@oc6162546036 ~]$ db2 “create table t1(id int,name
char(50),desc char(50))in ts3″《《《《《《重建表
[db2inst1@oc6162546036 ~]$ db2 “load from t1.del of del insert into
t1″《《《《《《重新load数据
[db2inst1@oc6162546036 ~]$ db2 load query table
t1《《《《《《查看表状态 load pending 
Tablestate:
  Load Pending
[db2inst1@oc6162546036 ~]$ db2 “load from /dev/null of del terminate
into t1″《《《《《《使用terminate选项
[db2inst1@oc6162546036 ~]$ db2 load query table
t1《《《《《《查看表状态
Tablestate:
  Normal

68)从客商端load数据,假如现身路线不设有,表就处于load in
progress,那时要在顾客段施行load terminate,倘使load
是insert动作,表会苏醒到load早前情状,要是是replace动作,表会被terminate清空

69)借使要导入的多少是分号;和单引号,能够是运用modified
by修饰符来钦定,coldelx钦点分隔符,chardelx钦命字符串分割,当中x代表导入数据的分行,单引号
比如:
[db2inst1@oc6162546036 ~]$ db2 “load from t1.del of del modified by
coldel; chardel” insert into t1″

70)modified by
有广大修饰选项来修饰格式,如:decimal小数会有”aaa”,+00023.40这中状态,能够选择decplusblank
striplzeros去除+号和零 0 ;可以这么设定日期timestampformate=”YYYY/MM/DD
HH:MM:SS.uuuuuu”

71)要导入的数量比表中的字段多如何做:DEL格式的能够接收import,load的method p选项,对于ASC格式,method L ,对于IXF格式,用method
N选项 :db2 “import from t4.del of del method p(1,3卡塔尔国 insert into
t4”,此中p(1,3卡塔尔(英语:State of Qatar)代表截取导入数据的1列和3列 

72)要导入的数码比表中的字段少,和字段多风姿洒脱致,DEL的格式用method
P(1,99,2卡塔尔(英语:State of Qatar),利用99创办八个null值就能够了

72)qa :为啥时不常的会TS 会backup-pending

73)假设插入的多寡是sequence的,而开头的数据也是出自sequence的数量,那么插入新值的时候要reset
sequence的胚胎数值。模拟操作如下:
[db2inst1@oc6162546036 ~]$ db2 “create sequence seq1 as integer start
with 1 increment by 1 minvalue 1 maxvalue 9999999 cycle cache 10”
《《《《《《创建sequence cache10
[db2inst1@oc6162546036 ~]$ db2 “create table test2(id int,name
char(20))”《《《《《《创建表    
[db2inst1@oc6162546036 ~]$ db2 “load from seq.del of del insert into
test2″《《《《《《load数据
[db2inst1@oc6162546036 ~]$ db2 “select * from
test2″《《《《《《三行数据

ID          NAME                


          1 aaa                 
          2 bbb                 
          3 ccc                     

[db2inst1@oc6162546036 ~]$ db2 “select max(id卡塔尔 as counter from
test2″《《《《《《这是重大,设置最终断点 select max(id卡塔尔(قطر‎ as counter from
table

COUNTER    

          3

  1 record(s) selected.
[db2inst1@oc6162546036 ~]$ db2 “alter sequence seq1 restart with
4″《《《《《《重设伊始值,alter sequence seq1 restart with counter+1
[db2inst1@oc6162546036 ~]$ db2 “backup database sample tablespace(ts3卡塔尔国to /home/db2inst1″《《《《《《表空间不可用,做了备份 
[db2inst1@oc6162546036 ~]$ db2 connect to
sample《《《《《《重新链接db
[db2inst1@oc6162546036 ~]$ db2 “insert into test2 values (nextval for
seq1,’bbbbb’卡塔尔(英语:State of Qatar)”《《《《《《插入下个值
[db2inst1@oc6162546036 ~]$ db2 “select * from
test2″《《《《《《开采存为了14,并不是4,那是因为在起来创办sequence的时候cache
10
,当数据库断开,前10组数据(4-13)会从内部存款和储蓄器消失,链接db后从14事后开头算起

ID          NAME                


         14 bbbbb               
          1 aaa                 
          2 bbb                 
          3 ccc                 

  4 record(s) selected.
 
74)IXF格式常常会仁慈转换不会产出乱码,DEL则会有乱码的主题素材。当load的时候乱码,可以运用
modified by codepage=1208/1386/819来改换数据库钦命的格式,默许是1208 
[db2inst1@oc6162546036 ~]$ db2 get db cfg for sample |grep -i code
来查看,db2set db2codepage=1386来更改

75)表空间之间的表迁移,标准的做法是,t1原表export出来,在另个表空间创造相仿和t1表相仿t2,把t1export出来的数目import进t2,删除或rename
t1,把t2改成t1

76)能够应用存款和储蓄进程admin_move_table来开展表空间之间的迁移,这种在线的迁徙情势保证原表持续访问

77)在线表迁移有5个步骤:init copy replace swap cleanup

78卡塔尔(英语:State of Qatar)db2move适用于db2move程序用来在四个数据库间的迁徙,相符分裂平台,表数据量非常多,是import,export,load命令的包装,将数据导出为pc/ixf格式

79)db2look能为对象表发生表,视图,索引,函数,trigger,存款和储蓄进度等指标定义语句,db2look也足以抽出表的靶子定义音信,以致表空间布局

80)db2move不可能迁移identity标记列的表,之能用单独的load去导入

81)查看缓冲池大小:
    SELECT BPNAME,NPAGES,PAGESIZE FROM SYSCAT.BUFFERPOOLS
校正缓冲池大小:
    ALTER BUFFERPOOL <bp_name> SIZE <number_of_pages>
成立缓冲池时内定大小:
    CREATE BUFFERPOOL <bp_name> SIZE <number_of_pages>
PAGESIZE <integer K>

82)db2look+ db2move数据库数据里面垮平台迁移手续,举例linux 到 window :
1卡塔尔(قطر‎db2look 导出表和表空间对象的概念 db2look.ddl 
                                                                
2卡塔尔db2move 导出总体数据库表数据到一个目录下 
                                                                 3卡塔尔(قطر‎FTP
到window, 更改db2look.ddl中的内容,举例路线,施行db2 -tvf db2lool.ddl
加载定义
                                                                
4)通过db2move导入 db2move sample load   

83)db2dart 功效极度有力能够导出数据,

84卡塔尔ixf是二进制自带布局的,del是只有数据

81卡塔尔国 qa 要是4k页面,什么状态下表创制不了 行大小超越了4k 。。。。
############################################################################################################################################################################################### 
identity数据导入,lob数据导入,换行导入没学
############################################################################################################################################################################################### 

82)二种景况的复苏:恢复生机+前滚 ;
复苏工作日志和崩溃恢复生机(数据保持生龙活虎致性)

83)前滚能够还原到备份之后的某部点或日志结尾

84)崩溃苏醒:redo提交到内存缓冲池尚未写进磁盘,undo尚未交给的,缺省状态下崩溃苏醒是半自动实践不要求人工干预,

85)日志是数据库风流罗曼蒂克种恢复机制,用于操作数据在没写入存款和储蓄系统从前的长久记录

86)db2接纳写日记优先算法,先写日记,再写多少,写多少的进程是异步的。日志是不实行别的不是物理数据更新操作的,举个例子查询就没有须求记录到日志内,以至日志只记录操作发生地方,时间点和左右的数目变化,举例无需记录sql语句和发命令的客商account 

87)数据流二种方法计算,这两种能够任意转移
    LSN(log sequence
number卡塔尔(英语:State of Qatar)记录所在日记文件在磁盘中的真实的地点,用十四进制表示
    LSO(logical stream
offset卡塔尔记录真正的数目,不带有日志文件的各个头音讯

88)外界的日志命令和操纵文件都麻木不仁选择LSN记录数据流的岗位

89)pageLSN会保障日志文件在平复的时候不把写进磁盘的数据拿来回复,每种数据页头都记录了LSN,当苏醒的时候读到LSN,会跟pageLSN相比,倘使LSN更老,pageLSN更新的话,那么就不会去恢复生机这个老的LSN,pageLSN是用来和LSN相比用的

90)查看pageLSN 使用 db2dart /Dd选项,其中有pageLSN的信息

91)非活动日志是在还原源点以前的日志,活动正是以后

92)全数首要的LSN都会记录到 SQLOGCTL.LFH这么些决定文件内,backup
pending,rollforwarding pending 都是由那么些文件掌握控制

93)db2日志原理,写日记的预先算法,先写日记,在写多少,当崩溃或前滚复苏时候,须要将日志文件写回到数据盘,保障db2数据库的风流洒脱致性,db2日志最后都设有日志文件中,在内部布局上,每一种日志文件由局地日志构成,每种日志也包行一些日记记录,每一种日志记录同LSN记录,但复苏时,db2必要掌握从那多少个LSN发轫,那正是min(MinfuffLSN,LowtranLSN),甚至活动日志一定毫无删除,不然会down机
意气风发致性就是回复前滚到一个时间点,那几个小时点会将付出的数额写入磁盘,未有提交或曾经回滚的时候都被撤废

94) 日志的高低,主日志文件和拉拉扯扯日志文件:日志文件个数
 Log file size (4KB)                         (LOGFILSIZ) = 1024
 Number of primary log files                (LOGPRIMARY) = 13
 Number of secondary log files               (LOGSECOND) = 12

95)
拿到 DB2 数据库大小和其最大体积音讯的不二秘诀
db2 “call GET_DBSIZE_INFO (?,?,?,0)”
赢得表空间并吞大小的法子
DMS能够平昔查看容器大小,假设想查看里面包车型客车数据也,db2 list tablespaces
show detail
SMS由于各样对象都据有叁个文书,能够测算SMS表空间容器中文件的总大小
DMS自动积攒管理表空间,只要自动储存路线有丰硕的空中,满了后来会自扩
收获表/索引占用空间的不二等秘书诀
二种办法:
db2pd -tcbstats;datasize*页数(这种措施只限于被访问过的表)
admin_get_tab_info 表函数;
和sysibmadm.admintabinfo系统一管理理视图

96卡塔尔获取专门的工作日志大小:(logprimary+logsencond卡塔尔国*logfilesiz*4k 
设置为数据库大小10-二成性情最好(用kbyte来测算比例),logprimary+logsecond不能够超过255,日志空间大小不能抢先256GB.
对logprimary和logfilsiz参数的改变必要断开链接才具见效。而logsecond的校勘会应声生效,logsecond日志文件使用完后不会立马删除,而是在颇负连接都断开并再一次连接的时候才会去除

97卡塔尔(قطر‎日志满:SQL0946C ,事务会回滚

98)日志路线:
[db2inst1@oc6162546036 NODE0000]$ db2 get db cfg for tomdb2|grep -i
‘path’
 Changed path to log files                  (NEWLOGPATH) = 
 Path to log files                                       =
/home/db2inst1/db2inst1/NODE0000/SQL00002/LOGSTREAM0000/

99卡塔尔(英语:State of Qatar)假设急需对成立日志镜像文件
,可以透过mirrorlogpath设置日志镜像文件,将日志存在四个职位

100)循环日志,主日志用完业务提交到磁盘,可以重新利用这几个日志,当主日志全体抽成出去,何况都没交给到磁盘,则利用分配协理日志来世襲日志,帮衬日志分配完没交给到磁盘,系统报错SQL09460C

101卡塔尔(英语:State of Qatar)归档日志,日志生龙活虎旦写满就归档(不管是或不是commit或然写入磁盘,归档日志还足以是活动日志,富含没交给的数据),系统会复制写满的日记进行双重使用(如若日志是活动的那么会用援助日志,假使是非活动,那么就能复制)

102)归档日志常用选项:db2 get db cfg for sample using logarchmeth1
disk:/archlogs

103)创造数据库暗中认可是循环日志,改良成归档日志要求离线完全备份,不然会报backup-pending状态

104)循环日志多用来OLAP
数据存款和储蓄的询问,并发,多维,扶植rollback,崩溃恢复,backup/restore,但力不能够支保存日志,不支持前滚
    归档日志多用来OLTP 交易系统,能够在现身难题时,第不时间恢复生机

105) DML(data manipulation
language)是数额垄断(monopoly卡塔尔(قطر‎语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字雷同,那4条命令是用来对数据库里的数码开展操作的语言。

    DDL(data definition
language)是数量定义语言:DDL比DML要多,首要的指令有CREATE、ALTEOdyssey、DROP等,DDL首倘诺用在概念或改换表(TABLE)的协会,数据类型,表之间的链接和自律等起始化职业上,他们许多在创造表时使用。

   
DCL(DataControlLanguage)是数据库调整语言:是用来安装或转移数据库客户或剧中人物权限的口舌,包蕴(grant,deny,revoke等)语句。

106卡塔尔国监察和控制日志使用情状:db2 get snaphost for database on sample 

107卡塔尔查看归档日志 :db2 list history archive log all for sample,

108卡塔尔国first active log file(db2 get db cfg for sample |grep -i ‘first log’
)以前是非活动日志,之后是运动日志

108)事务日志满的意况(SQL09460N卡塔尔国 :
事务太大,能够加大logsecond大小,logprimary大小
logfilsiz大小。能够思量用load from /dev/null of del replace into
tbname(这种办法能够不用记录日志)
                               
事务小但没交给:使用快速照相查看最先事务应用程序(appl id holding the oldest
transaction卡塔尔(قطر‎,抓取应用快速照相:db2 get snapshot for application agentid
228

110)备份:离线备份 和 在线备份(归档日志)
          数据库备份 和 表空间备份
          增量备份(归档日志)和完全备份 

111)在线备份中的include
logs是把日志一同打包在备份介质媒质,是为了在另生机勃勃台机械方便大张旗鼓前滚,个中在线备份中的include
logs是可选,但日常情况下都是加多那么些选项 
例如:
db2 backup db sample online include logs 在A机器上做在线备份
db2 restore db sample from /data1 taken at timestamp logtarget
/data/logs 把介质媒质传到B机器上做通过logtarget将日志恢复生机到叁个点名的目录
d2b “rollforward db sample at the end of logs and stop overflow log
path(/data/logs卡塔尔(قطر‎ 在B机器上通过overflow log path恢复生机的日志做前滚复苏
倘使不想过来数据库只想重温旧业日志使用logtarget:db2 restore db sample logs
from /data1 logtarget /data/logs

112)能够查看恢复生机推行顺序:db2ckrst -d sample -t timestamp -r database

113卡塔尔(英语:State of Qatar)若是要运用增量备份:db2 update db cfg for sample using trackmod on

114卡塔尔国增量备份:db2 backup db sample [tablespace(tbspname)] [online]
incremental [delta] to /home/db2inst1
    增量苏醒:db2 restore db sample [tablespace(tbspname)] incremental
[auotmatic] taken at timestamp

115卡塔尔(قطر‎db2ckbkp -h image(媒介物)查看备份媒介物精确性

116)db2帮助二种复苏:崩溃复苏,前滚恢复生机,版本复苏

117)暗许意况下崩溃复苏是暗中同意(autorestart on卡塔尔,无需人工干预

118卡塔尔国 db2各样备份介质媒质正是三个本子(image卡塔尔国,所以版本恢复生机就是运用介质媒质复苏

119卡塔尔(قطر‎重定向复苏:db2 restore db sample redirect generate script
redirect.ddl
              db2 -tvf redirect.ddl
重定向苏醒不补助 自动积攒表空间,能够在回复命令中通过 on path-list 
钦赐期存款款和储蓄路线,重定向复苏要前滚复苏,对于源端和对象段表空间容器不相称的情况特地切合

120)前滚复苏多少个选取:时间
                   end of logs and stop (最大程度恢复生机)
                   end of backup and stop
(最时辰间回复,backup中包括了在线备份的log)

121)前滚提取日志顺序:活动日志目录 > overflow log path >
logarchmeth1

122卡塔尔国表空间的小时辰间苏醒点=表空间的连串目录表或内部表的末梢叁回立异操作的时间点,唯有前滚到微小苏醒时间过后手艺作保系统表和数据库对象

123)删除表复苏(dropped table
recovery卡塔尔(归档日志),暗许是张开的,可以手动张开,db2 alter tablespace
tbspname dropped table recovery on
效仿操作表复苏:
[db2inst1@oc6162546036 ~]$ db2 “create table t3(id int,name char(10))”
《《《《《《创建表
[db2inst1@oc6162546036 ~]$ db2 “insert into t3
values(10,’tom’)”《《《《《《插入值
[db2inst1@oc6162546036 ~]$ db2 backup db sample
online《《《《《《在线备份

Backup successful. The timestamp for this backup image is :
20140413153752
[db2inst1@oc6162546036 ~]$ db2 drop table t3《《《《《《删除表
[db2inst1@oc6162546036 ~]$ db2 list history dropped table all for
sample《《《《《《利用历史文件查看表定义

 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup
ID

 — — —————— —- — ———— ————

  D  T  20140413153841                                       
00000000000053430004000a 
 —————————————————————————-
  “DB2INST1”.”T3″ resides in 1 tablespace(s):

 00001 IBMDB2SAMPLEREL
 —————————————————————————-
    Comment: DROP TABLE
 Start Time: 20140413153841
   End Time: 20140413153841
     Status: A
 —————————————————————————-
  EID: 47

 DDL: CREATE TABLE “DB2INST1”.”T3″ ( “ID” INTEGER , “NAME” CHAR(10) ) 
IN “IBMDB2SAMPLEREL” ;     
[db2inst1@oc6162546036 ~]$ db2 “restore db sample
tablespace(IBMDB2SAMPLEREL卡塔尔(قطر‎ taken at
20150413153752″《《《《《《表空间恢复生机
[db2inst1@oc6162546036 ~]$ mkdir droppedtablerecoverytest
[db2inst1@oc6162546036 ~]$ db2 “rollforward database sample to end of
logs tablespace(IBMDB2SAMPLEREL卡塔尔(英语:State of Qatar) recover dropped table
00000000000053430004000a to
/home/db2inst1/droppedtablerecoverytest”《《《《《《利用历史文件的表定义,能够查看见backup
id ,和行使的tablesapce .在前滚的进度司令员表数据导出到多个目录里
[db2inst1@oc6162546036 NODE0000]$ cat data《《《《《《
10,”tom       “
[db2inst1@oc6162546036 ~]$ cat
creatt3.ddl《《《《《《创造叁个本子,DDL语句能够在历史记录里查见到
CREATE TABLE “DB2INST1”.”T3″ ( “ID” INTEGER , “NAME” CHAR(10) )  IN
“IBMDB2SAMPLEREL” ;
[db2inst1@oc6162546036 ~]$ db2 -tvf creatt3.ddl《《《《《《
[db2inst1@oc6162546036 ~]$ db2 “import from
/home/db2inst1/droppedtablerecoverytest/NODE0000/data of del insert into
t3″《《《《《《
[db2inst1@oc6162546036 ~]$ db2 “select * from t3″《《《《《《
ID          NAME      


         10 tom       

  1 record(s) selected.

124)前滚苏醒黄金年代旦变成就能够生成新的日志链,之后时间的日志将长久的不可能被还原,被剔除了曾经
例如:
 
125)前滚恢复有多个选项:timestamp某个时刻点
                     end of logs and stop 最大苏醒时间
             end of backup最小恢复时间

126)db2 “values current timestamp” 
那一个能够记下当前精准的日子和前滚时候供给的格式
[db2inst1@oc6162546036 ~]$ db2 “values current timestamp”

1                         

2014-04-14-04.50.13.452212

127)使用db2 list history backup all for sample查看备份最小时间(start
time卡塔尔国和最大时间(end time卡塔尔
     使用db2 list history archive log all for sample 查看归档日志 

###############################################################################################################################################################################################
相近备份苏醒境况及遭遇的难题 
###############################################################################################################################################################################################

128卡塔尔国自动表空间设置有五个挑选要同时安装才会活动管理空间:创立的表空间的是automatic
storage yes ;autoresize yes,  autoresize yes本事达成automatic storage 

129)runstats > reorgchk > reorg > runstats > rebind
    runstats > reorgchk > rebind

130卡塔尔runstats 使用distrubution
参数搜聚数据布满(生机勃勃种是frequency,风姿洒脱种是quantile卡塔尔(قطر‎

131)[db2inst1@oc6162546036 ~]$ db2 “select tabname,stats_time from
syscat.tables where stats_time is null”
《《《《《《查看是或不是搜罗过总结消息 

132)runstats只可以对单纯表展开施行,无法对一切数据库做运转计算,须要脚本来搜罗一切数据库的总计新闻

133)runstats有allow write access(默认)和allow read acess

134)假设现身表和目录计算音讯不等同,runstats将会报告警察方,这时候就要同临时候对表和目录进行总括音信
db2 runstats on table db2inst1.t1 and detailed indexes all

135)假使进行大数据量的总计新闻采撷时,会现出sql2310n
使用程序无法生成总括消息,那是可以运用抽样计算

136)runstats总计的结果是保存在sysstat.tables 和sysstat,indexs,
不建议改正

137)db2look -d sample -m > db2look_stat.out保存总括消息

138)runstats使用实行:

*当表数据量爆发宏大变化的时候,如通过load加载大批量数码或reorg后,或追加的新的目录,建议runstats
*空闲的时候试行runstats
*表相当大,或表数据频繁更换,可以寻思在好几字段上runstats,并非整个字段,
*表十分的大,总计时间相当长,可以虚构抽样计算
*抓牢能够用性,能够暗许使用allow wirte access
*系统表也要时有时做runstats
*为压缩消息不平等的意况,考虑同期在表和目录上同一时间进行总结音讯搜罗
*总括完音讯要爆发commit
以释放锁。对于静态语句,还亟需对package重新绑定,大器晚成便生成新的访谈陈设

139)reorg磁盘碎片收拾工具

140)但现身难题时,reorg表可能会大大进步质量

*万一表中有为数不菲剔除的行,恐怕某个表已然是空表,那么reorg能够是表占用的上台湾空中大学大裁减
*假使发生overflow行溢出,首要产生在变长字段varchar更新之后,记录的长短会跨页,增大了
I/O,reorg表数据能够再度协会数据的贮存顺序
*遵守有些索引重新协会表数据的各种物理,即cluster
index聚焦索引的定义,表数据在物理上的积存顺序于索引顺序相相配。
*但表数据压缩是,能够因此reorg建设结构字典,并对表数据进行压缩

141)当然 reorg不是万能的,有超大只怕遵照索引扩充页数,DBA 比较关系
reorg实行时间,频率 和对应用的熏陶
 
142)剖断是或不是须求reorg 两个选取:reorgchk和sysibmadm.snaptab管理视图
db2 reorgchk on schema db2admin
如果F1,F2,F3标记 *,则须求重新组合表,若是索引总计结果 F4-F8 有*
标志,则要求对索引重新组合 

143)判别某一张表是还是不是供给结合,能够应用视图sysibmadm.snaptab管理视图,overflow_accesses于rows_read比例超过3%,就要求对表进行组合
[db2inst1@oc6162546036 ~]$ db2 “select substr(tabname,1,18) as
tabname,rows_read,overflow_accesses from sysibmadm.snaptab where
(rows_read > 999) and ((overflow_accesses *100) / (rows_read +1)
>3 )”

TABNAME            ROWS_READ            OVERFLOW_ACCESSES   


  0 record(s) selected.

144)对索引重新组合的自己商议还是必要reorgchk

145)reorg分为 离线重新整合 和 在线重新整合

离线重新组合 选拔shoadow copy的方法,创造生机勃勃份原始数据别本保持原表可读(allow
read access卡塔尔(英语:State of Qatar),reorg进度中会记录日志,能够在此二个的意况下进展依据日志苏醒
对于离线重新组合。能够依靠具体的目录实行整合index indexname ,如下:
[db2inst1@oc6162546036 ~]$ db2 reorg table db2inst1.t3 index il allow
read access use tempts1
DB20000I  The REORG command completed successfully.

146)db2 提供三种措施行检查查监察和控制reorg是不是成功:

*通过sysibmadm.snaptab 检查(打开dft_mon_table实例监察和控制器按钮 
*透过快速照相查看db2 get snapshot for tables on sample(current counter/max
counter来预测达成的比例)
*通过db2pd -d sampe -reorg
*透过list history reorg all for sample 获得表或索引重新组合音信(因为
reorg会记录日志)

147)在线reorg表比离线reorg慢非常多,因为在线不会创制数量别本,分批次重组,每便只有局地数目

148)在线reorg表也叫inplace reorg(
原定reorg卡塔尔(英语:State of Qatar),reorg可随即运维和小憩,为了确定保障恢复生机性,在线reorg会记录大量的日记,要求在日记空间注重于运动的行数,表上索引的个数和索引键大小,因而大概是表大小的数倍

db2 reorg table db2inst1.t3 inplace allow write access

149)在线reorg表是后台异步,固然我们看出命令成功重回,实际上依旧在后台实施。即使在线结合的表比超多,那么或然变成I/O
cpu能源占用非常多,並且恐怕会费用全体的移位日志,影响系统健康运转,那么能够应用脚本调整三个表在线reorg施行顺序:db2
list applicaitons show detail |grep -i db2rerog判定,假使有 reorg
正在推行,则等待该 reorg 实行达成,否则推行脚本里的下三个表重新组合,在那之中db2reorg是叁个接受进度,能够断开

150)监控在线重新整合和离线重新整合的监督相像

151)离线reorg表之后会重新建立索引,在线表重新组合仅仅维护索引,而不会重新建立索引(除
cluster index 之外),假使要对索引单独构成能够:db2 reorg indexs all for
tbname,对在线重新整合索引的督察:db2 list history all for
sample,可能查看db2diag.log文件

152)对于在线重新组合,要保持丰盛的日记空间,同期要保险 util_heap_sz
数据库参数的值丰富大

153)bind(绑定),是将C程序中的DB2 SQL
语句经过编写翻译(prep卡塔尔(英语:State of Qatar)绑定到db2的package中,package中含有了各样SQL语句的探望布署,今后实施那么些C程序时,就能依据保存的package的拜谒安插实行SQL语句
那就是说rebind正是重新绑定更新实施陈设。rebind日常都对静态sql
(事情发生前已经在package里面)绑定,存款和储蓄进程也是在package里面,所以rebind也同样相符

154)逻辑空间恐怕低于物理空间(物理空间是分配过并未有自由的,实际占用的空中是逻辑空间),总结表空间尺寸的时候是用物理空间),reorg能够杀绝这种气象

###############################################################################################################################################################################################
###############################################################################################################################################################################################
155卡塔尔国隔开品级只限于读锁

156)暗许级其他CS可以在程序级,语句级,事务级设置

157)4中隔开品级:
ULX570(uncommited read卡塔尔:读的时候不加锁,能够读到未提交的数目
CS(cusror stability卡塔尔(英语:State of Qatar):读到哪行,哪行就加锁,读完之后就释放锁
ENCORES(read stability卡塔尔(قطر‎:把询问的结果行,全体都加锁
奥德赛Odyssey(repeatable stablility卡塔尔(قطر‎:把读过的行,全体都加锁

157)表锁在默许意况下db2不会实施强锁(s u x z 卡塔尔国,唯有经过lock table 或
发生锁晋级的时候才会在表上坚实项目锁形式,弱类型锁主假使相称行锁使用,在获得行锁早先应当要有表锁(IN,IX,IS,SIX卡塔尔国
    
158)db2pd是锁的督察好工具,因为没有需求锁定引擎能源,对系统开支小,格式上也正如直观

159)加Z锁,是当create,alter,drop,表或create.drop索引时须求要。用db2pd
-d sample
-locks观看,开掘出了mode下边有Z锁外还或许有其余锁,那是因为drop归于DDL语句,DDL定义会存到catalog
table 中,所以系统表上会加行锁和表锁

160)list tables for schema <schema name>
     list tables for all 
     list tables 查看当前顾客做为形式名的表和视图
     syscat.tables系统视图查看表的概念,所属的表空间
 
161)U锁是介于 S 和 X锁中间的锁,日常用于”select….for update
“,目标是为了保证和s锁的至极,但八个u锁是不相配的。幸免连个S锁之间晋级到X锁
所发生的死锁
模仿如下:

[db2inst1@oc6162546036 ~]$ db2 +c “select * from t1 for update with
rr”
[db2inst1@oc6162546036 ~]$ db2pd -d sample -locks

Database Member 0 — Database SAMPLE — Active — Up 0 days 00:04:19 —
Date 2014-04-16-23.45.20.002013

Locks:
Address            TranHdl    Lockname                   Type       Mode
Sts Owner      Dur HoldCount  Att        ReleaseFlg rrIID
0x00007FD8F6611980 552        41414141415649626B457D1AC1 PlanLock   ..S 
G   552        1   0          0x00000000 0x40000000 0     
0x00007FD8F6611D80 552        010000000100000001004079D6 VarLock    ..S 
G   552        1   0          0x00000000 0x40000000 0     
0x00007FD8F6611B80 552        06000400000000000000000054 TableLock  ..U 
G   552        1   0          0x00002000 0x00000001 0     

162)SIX锁是S+IX锁或IX+S锁产生的 。即先有S锁,或IX锁再去申请IX锁或S锁
模仿如下:
[db2inst1@oc6162546036 ~]$ db2 +c lock table t1 in share mode 
[db2inst1@oc6162546036 ~]$ db2 +c “insert into t1(id,name)
values(13,’tim’)”
[db2inst1@oc6162546036 ~]$ db2pd -d sample -locks

Database Member 0 — Database SAMPLE — Active — Up 0 days 00:12:56 —
Date 2014-04-16-23.53.57.095565

Locks:
Address            TranHdl    Lockname                   Type       Mode
Sts Owner      Dur HoldCount  Att        ReleaseFlg rrIID
0x00007FD8F6611980 552        41414141415649626B457D1AC1 PlanLock   ..S 
G   552        1   0          0x00000000 0x40000000 0     
0x00007FD8F6612100 552        000005000F1E0000C19D3AFBC3 CatCacheLock
..S  G   552        5   0          0x00000000 0x40000000 0     
0x00007FD8F6611B80 552        06000400040000000000000052 RowLock    ..X 
G   552        1   0          0x00200008 0x40000000 0     
0x00007FD8F6612700 552        000021000A000000A0FA39FBC3 CatCacheLock
..S  G   552        6   0          0x00000000 0x40000000 0     
0x00007FD8F6611A80 552        06000400000000000000000054 TableLock  SIX 
G   552        255 0          0x00202000 0x40000000 0     

163)W 和 NW行锁
是有目录的时候才会用到,S和NS是例外隔断品级下读锁的格局,在CS 和
LANDS隔开分离等第下是NS锁,在ENVISIONTiguan隔断等级下是S锁

164)在收获行锁以前,要拿到那几个行所在表的最低表锁,假诺要询问某些行,那么就是对表有读的希图,须要先的到表的计划读(IS卡塔尔国,假设是增删改某行,就是有意图写(IX卡塔尔国

165) 行锁的s和x模拟: 
锁窗口的观测可以看来,有八个IS表锁和NS行锁,但NS行锁是W状态,表示锁等

[db2inst1@oc6162546036 ~]$ db2pd -d sample -locks

Database Member 0 — Database SAMPLE — Active — Up 0 days 00:01:50 —
Date 2014-04-17-22.41.46.759541

Locks:
Address            TranHdl    Lockname                   Type       Mode
Sts Owner      Dur HoldCount  Att        ReleaseFlg rrIID
0x00007F9B55C72300 3          04000A00080000000000000052 RowLock    ..X 
G   3          1   0          0x00200008 0x40000000 0     
0x00007F9B55C76100 14         04000A00080000000000000052 RowLock    .NS 
W   3          0   0          0x00000000 0x00000000 0     
0x00007F9B55C76200 14         010000000100000001006057D6 VarLock    ..S 
G   14         1   0          0x00000000 0x40000000 0     
0x00007F9B55C71980 3          41414141415649626B457D1AC1 PlanLock   ..S 
G   3          1   0          0x00000000 0x40000000 0     
0x00007F9B55C76300 14         41414141415649626B457D1AC1 PlanLock   ..S 
G   14         1   0          0x00000000 0x40000000 0     
0x00007F9B55C71B80 3          04000A00000000000000000054 TableLock  .IX 
G   3          1   0          0x00202000 0x40000000 0     
0x00007F9B55C76180 14         04000A00000000000000000054 TableLock  .IS 
G   14         1   0          0x00003000 0x40000000 0 
166)锁等
     锁超时 locktimeout=-1 是极其等待的情趣
     死锁
     锁晋级(lock escation卡塔尔,正是由行锁替换为表锁,释放内部存储器能源的过程(行锁升级为表锁),能够行使db2diag.log查看
     锁调换(lock conversion卡塔尔(英语:State of Qatar)是锁的情势转黄,比如NS锁转为X锁
(弱型的锁转向强类型的锁)

167)db2
用locklist和maxlocks出发锁进级,locklist用来支配各种数据能够应用最大锁内存;maxlocks用来决定每种应用能够侵夺的锁内部存款和储蓄器百分比,在多客户并发系统中,此参数的指标是限定某些应用占用过多的锁内部存款和储蓄器,锁进级发生的准绳包涵:
锁内部存款和储蓄器超过了locklist大小
某些应用使用的锁内部存款和储蓄器空间达到了locklist * maxlock%
发出锁晋级时,会在db2diag.log 中记录锁晋级的详细消息。
     

168)推断锁的主题素材出现:
*系统响应慢,吞吐量低,cpu使用率低,磁盘空闲
*应用程序重临错误 SQL911
*透过普通监督工具,如快照监察和控制和事件监察和控制 ,那一点是一级起源db2 get
snapshot for db on sample |more

169)锁是弹指间的,某一时刻也许监察和控制到比相当多锁等,而另不经常时或然早就刑释,所以必要经过脚本实行多次(find_lickwait.sh
脚本用于抓取超过2min的接纳)

170)db2pd -d sample -locks showlocks wait -tra -app -dyn >db2pd.out
那是db2pd常用的一声令下组合
大家得以凭借db2pd
-locks选项定位锁音信,找到持有锁和锁等的政工句柄(TranHdl卡塔尔(英语:State of Qatar)>>依照db2pd
-tra找到那多少个业务句柄所属的施用句柄(AppHandl卡塔尔国>>接着依据db2pd
-app找到这一个句柄刚推行的或正在进行的sql句柄(通过Anchid和Stmtid识别>>最终依据db2pd
-dyn找到sql句柄所表示的sql语句,在实质上条件中,能够依赖需求写一个剧本,定期调治和抓取锁的音讯

171)对锁的监察和控制,固然锁快速照相也足以得到锁的音讯,但大家照旧提出用db2pd,锁列表能够直达几百m
,何况锁快速照会面对db2内部数据构造加上中间锁,以保证本身独享内部存款和储蓄器,而db2pd没有必要占用内部锁

172)db2pd具备自然的局限性,无法承保一定能抓取到引起锁等的SQL语句,db2pd只可以抓取到近些日子和上二个的进行语句(C-AnchID/C-StmtID卡塔尔国(L-AnchID/L-StmtID卡塔尔,若是三个业务增删改操作之后,又开展了往往读的操作,那是db2pd抓取的结果就不是真的占领锁的SQL

173卡塔尔(قطر‎9.5版本如若运用db2pd不可能抓取到引起锁等的SQL,那么能够locktimout的值间距设置小部分,然后用v9.5提供的db2_capture_locktimeout注册变量来抓取

174)9.5现在 如若想要用+C 这么些选项,首先要查看这么些构造参数(CU索罗德_COMMIT)
= disabled [on , off]
[db2inst1@oc6162546036 ~]$ db2 get db cfg for sample|grep -i
‘commit’
 All committed transactions have been written to disk    = NO
 Currently Committed                        (CUR_COMMIT) = ON
现阶段以完成这一个参数用来支配currently commited
机制,CC是CS暗许品级的新完结,目标是谨防写操作阻碍读操作(wirte blocks
read卡塔尔(قطر‎,减弱锁等而滋长并发性,,即一个事业做update
delete以前的数目无需等待,三个作业做insert但未提交,另个事情读取是会忽略新插入的多少,没有要求等待。这种体制是通过其里面包车型地铁日志来保险职业少年老成致性,即在行锁上边增添二个标记(no
information ; uncommited insert identifier ; log information 卡塔尔(قطر‎

175)
[db2inst1@oc6162546036 ~]$ db2 get snapshot for db on sample|more

Number of Threshold Violations             = 0      
Locks held currently                       = 0
Lock waits                                 = 1  
《《《在快速照相须臾间发生锁的次数
提姆e database waited on locks (ms卡塔尔国         = Not Collected
《《《锁等的日子总和 (除以lock waits
即没个锁等的光阴,那么些时间一点都不小,将要查处引起锁等的SQL语句,db2pd -d
sample -locks showlocks wait -tra -app -dyn卡塔尔国
Lock list memory in use (Bytes)            = 19200  
Deadlocks detected                         = 0   
《《《多少个死锁被检查测量检验到
Lock escalations                           = 0    《《《多少个锁产生晋级(db2diag.log查看)
Exclusive lock escalations                 = 0     
Agents currently waiting on locks          = 0
Lock Timeouts                              = 1   
《《《发生锁超时的次数
Number of indoubt transactions             = 0    
《《《正在等待锁的施用

对此快照监察和控制锁,必定要在有些时刻内深入分析才有意义

176)锁超时
因为db2pd抓取SQL语句的技术有限,所以我们能够用那几个注册变量:db2_capture_locktimeout来有效的抓取死锁和锁超时,还需协作创设deadlock
event monitor工夫正确完好的抓取锁超时的相关音讯(适用于9.5上述)
[db2inst1@oc6162546036 ~]$ db2set -lr|grep -i ‘capture’
《《《注册变量
DB2_CAPTURE_LOCKTIMEOUT

模拟:
[db2inst1@oc6162546036 ~]$ db2set db2_capture_locktimeout=on
《《《张开注册变量
[db2inst1@oc6162546036 ~]$ db2set 
DB2_CAPTURE_LOCKTIMEOUT=ON
DB2AUTOSTART=YES
[db2inst1@oc6162546036 ~]$ mkdir locks 《《《成立死锁监控器目录
[db2inst1@oc6162546036 ~]$ db2 “create event monitor deadlock for
deadlocks with details history write to file ‘/home/db2inst1/locks'”
《《《创造死锁监察和控制器
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 locks]$ db2 set event monitor deadlock state=1
《《《展开死锁监察和控制器
[db2inst1@oc6162546036 locks]$ db2 +c “insert into t3
values(20,’may’)”
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 locks]$ db2 +c “select * from t3 where
id=20”

ID          NAME      


         20 may       

  1 record(s) selected.
[db2inst1@oc6162546036 ~]$ db2 +c “select * from t3 where id=20”
SQL0911N  The current transaction has been rolled back because of a
deadlock 
or timeout.  Reason code “68”.  SQLSTATE=40001
[db2inst1@oc6162546036 db2dump]$ ll |grep -i ‘lock’
查看db2dump里面生成的db2locktimout文件,那些文件蕴涵五个部分,叁个有个别是申请锁类型,锁超时的言辞,别的二个为锁具有者相关新闻,包含了这段时间情势,和当下作业实施的持有SQL
-rw-r—–. 1 db2inst1 db2iadm1    3160 Apr 17 23:23
db2locktimeout.0.40.2014-04-17-23-23-55
[db2inst1@oc6162546036 db2dump]$ cat
db2locktimeout.0.40.2014-04-17-23-23-55
Lock Requestor: 
.
.
 Lock mode requested:     .NS  《《《诉求锁的项目
Context of Lock Request: 
.
.
    Statement:              select * from t3 where id=20 
《《《发生锁超时的主人语句
Lock Owner (Representative): 
.
.
 Lock mode held:          ..X 《《《锁持有形式

177)死锁这段时间的常用的办法就是透过deadlock event monitor (9.5版本)
模拟:
率先个窗口:
[db2inst1@oc6162546036 ~]$ db2 +c “insert into t1 values(‘aaa’)”
[db2inst1@oc6162546036 ~]$ db2 set event monitor deadlock state=1
[db2inst1@oc6162546036 ~]$ db2 +c “select * from t2”
[db2inst1@oc6162546036 ~]$ db2 flush event monitor deadlock
[db2inst1@oc6162546036 ~]$ db2 set event monitor deadlock state=0
[db2inst1@oc6162546036 deadlock]$ db2evmon -path
/home/db2inst1/deadlock > deadlock2.txt
Reading /home/db2inst1/deadlock/00000000.evt …
[db2inst1@oc6162546036 deadlock]$ cat deadlock2.txt
.
.
5) Deadlocked Connection …
.
Deadlocked Statement:
.
Text     : select * from t1 《《《发生死锁回滚的SQL语句

第3个窗口:
[db2inst1@oc6162546036 ~]$ db2 +c “insert into t2 values(‘bbb’)”
[db2inst1@oc6162546036 ~]$ db2 +c “select * from t1”
SQL0911N  The current transaction has been rolled back because of a
deadlock 
or timeout.  Reason code “2”.  SQLSTATE=40001

死锁监控器event monitor只好用二回 

178卡塔尔(قطر‎为了改动锁等 锁超时
死锁都需求用区别工具去检验,9.7施用统大器晚成抓取锁超时,锁等 和
死锁,那就是creat event monitor for locking 语句
[db2inst1@oc6162546036 deadlock]$ db2 get db cfg for sample
 Lock timeout events                   (MON_LOCKTIMEOUT) = NONE
 Deadlock events                          (MON_DEADLOCK) =
WITHOUT_HIST
 Lock wait events                         (MON_LOCKWAIT) = NONE
 Lock wait event threshold               (MON_LW_THRESH) = 5000000
能够把前3个参数改成hist_values,将mon_LW_thresh改成10000(10秒)

179卡塔尔(英语:State of Qatar) 参数设置实现后,就可以初阶创设锁监察和控制器实行锁时间的抓取:
[db2inst1@oc6162546036 ~]$ db2 “create event monitor lockevmon for
locking write to unformatted event table(table locks)”
DB20000I  The SQL command completed successfully.
db2 set event monitor lockevmon state=1 敞开监察和控制开关

180)因为用了未格式化的表,所以要求分析,分析方法包罗java程序和储存进程(略),如下:
[db2inst1@oc6162546036 jdbc]$ cp db2evmonfmt.java DB2EvmonLocking.xsl
/home/db2inst1
《《《在samples目录上边自带一个java拆解解析程序,需把这几个程序编写翻译成class能力进行
[db2inst1@oc6162546036 ~]$ ~/sqllib/java/jdk64/bin/javac
db2evmonfmt.java 
[db2inst1@oc6162546036 ~]$ ls -alt db2evmon*
-rw-r–r–. 1 db2inst1 db2iadm1 16996 Apr 21 01:57 db2evmonfmt.class
-r-xr-xr-x. 1 db2inst1 db2iadm1 40360 Apr 21 01:55 db2evmonfmt.java
[db2inst1@oc6162546036 ~]$ ~/sqllib/java/jdk64/jre/bin/java
db2evmonfmt -d sample -ue locks -ftext -u db2inst1 -passwd >
db2locks.out
《《《现身锁等,锁超时,死锁的时候,就足以选取刚编写翻译的java程序对未格式化的表进行深入分析,个中ue
<table>钦点未格式化的表名,-ftext将出口格式化为文本文件,-u
-p钦命客户和密码

181)除了用java程序解析表还足以用存款和储蓄进度

182)假若不能从利用范围改换隔绝等第(UWrangler>CS>冠道S>Tiguan普拉多,隔绝级越低,并发越好),能够透过sql语句级通过with设置隔断等第:select….from…with
UR 表示经过UR隔断品级查询数据

183)有那般八个锁参数能够降低锁的行数,提升并发
[db2inst1@oc6162546036 ~]$ db2set -lr |grep -i ‘db2_eva*’
DB2_EVALUNCOMMITTED
[db2inst1@oc6162546036 ~]$ db2set -lr |grep -i ‘db2_skip*’
DB2_SKIPDELETED
DB2_SKIPINSERTED

DB2_EVALUNCOMMITTED:验证未提交数据,私下认可景况下决定某行数据是或不是知足查询条件前,假如知足就加锁,假设不满意,则不加锁
DB2_SKIPDELETED:跳过插入行,在CS或GL450S隔离等级下,假设插入的行没有交给,那么其它三个应用程序扫描时会处于锁等,但万少年老成用了这些参数,则忽视未提交的新插入数据
DB2_SKIPINSERTED:跳过删除行,在CS或本田UR-VS隔开品级下,若是去除的行并未有交给,那么其余七个应用程序扫描时会处于锁等,但万黄金时代用了这么些参数,则借使那多少未有删除

末尾五个参数其实在某种情势方面是脏读,要小心使用

###############################################################################################################################################################################################
###############################################################################################################################################################################################

184卡塔尔(قطر‎db2 提供了成都百货上千监察和控制工具,主要分为:实时监察和控制和追踪监察和控制

185)实时督察记录数据库某一个每14日的快速照相新闻:snapshot,db2pd,db2top和9.7本子的in-memory
metrics等工具,就像相机
     追踪监察和控制提供了更详细的数据库活动:事件监控器和9.7本子的activity
monitor,事件监察和控制器也许会产生一点都不小的数据量

186)snapshot能够监察和控制的靶子满含实例,数据库,各个应用程序的位移,表空间,缓冲池,表,动态sql语句,锁和排序等音讯,最棒是把她们都展开,实例级其余要重启数据库生效
[db2inst1@oc6162546036 ~]$ db2 get dbm cfg |grep -i ‘dft’
 
   Buffer pool                         (DFT_MON_BUFPOOL) = OFF
   Lock                                   (DFT_MON_LOCK) = OFF
   Sort                                   (DFT_MON_SORT) = OFF
   Statement                              (DFT_MON_STMT) = OFF
   Table                                 (DFT_MON_TABLE) = ON
   Timestamp                         (DFT_MON_TIMESTAMP) = ON
   Unit of work                            (DFT_MON_UOW) = OFF
    

187)snapshot监控命令比较容易,深入分析结果才难,监察和控制的结果是由一些监控成分构成:
流速計(counter卡塔尔(قطر‎用来积存累积值,举例自运维以来产生的总排序次数(total
sorts卡塔尔(قطر‎死锁个数(dead locks卡塔尔国读的行数(rows read)
测算/须臾时值(gauge卡塔尔(英语:State of Qatar):记录有些监察和控制成分的脚下值。比如当前产生的次数(active
sorts卡塔尔,当前锁的个数(locks卡塔尔.
高水位(high water
mark卡塔尔国,记录一个监督成分在开荒监控器开关最大的值或纤维值。
一般必要开展再三的抓取来解析生机勃勃段时间内的数据库活动,能够用脚本

188)为了更加直观的查看snapshot的深入解析结果,v9之后能够用snapshot管理视图查看,这一个视图与snapshot命令行是相应的
[db2inst1@oc6162546036 ~]$ db2 list tables for schema sysibmadm|grep
-i ‘snap*’可查看
留意:snapshot处理视图须要将实例监控按钮张开,否则不或许抓取全体快照,在会话级设置无效。db2
reset monitor all 命令只对snapshot命令生效,对管住视图不起功能

189)db2pd不需求db2内部锁(latches卡塔尔和引擎财富重返监控数据,由此进程越来越快,质量越来越好。db2pd直接调用shmat链接到数据库与实例的共享内部存款和储蓄器,不允许要成立到数据库的链接,db2pd基本不会对系统形成显著的影响

190)db2pd工具包括大气精通与未公开的参数,假诺急需更加多新闻,能够动用db2pd-everything获得许多当面包车型地铁音讯

191)db2pd在分区数据库能够接纳dbp参数来内定分区:db2pd -db -sample -dbp
3

192卡塔尔国db2pd常用参数:

db2pd -db sample -appl,该参数列出数据库中当前连年,那有的音信雷同db2
list applications show detail的出口
db2pd -edus ,EDU列表,即引擎管理单元(engine dispathched unit卡塔尔,用来监察和控制edu的cpu总消耗量,假诺须要运用该命令检查实验特按时刻内的cpu消耗,则需求做差,给准时期的始发和安息计算差量
db2pd -edus
interval=3,还足以采纳interval参数来获取时间段内的cpu消耗量,user delta
和 sys delta
列是客商cpu和种类cpu对于该线程的开支cpu时间差,那样就没有必要手动计算
db2pd -osinfo,操作系统消息
db2pd -bufferpool,缓冲池音信,该参数要开发bufferpool监察和控制器开关,
db2pd -db sample -logs,日志新闻
db2pd -db sample -tablesapces,表空间音讯
db2pd -db sample -locks,锁信息
db2pd -db sample -agents,代理新闻
db2pd -db sample -static |more ,查看系统中留存的静态语句包新闻
db2pd -db sample -dynamic,该新闻包蕴数据库的包缓存中存有动态sql,
db2pd -db sample -tcbstats,表情形音讯

193)db2top的规律正是在后台各类黄金时代段时间搜集一遍快速照相,然后通过总括其与这两日贰次快速照相此前的数量差别于通过的时日,总结出部分列总计数据胡
db2top首要有七个效率:
实例检查评定系统
捕捉历史快速照相音信,
事实上db2top对质量更是在分区数据库上会影响系能,因为还未点名的话,会对全局做快速照相,占用内部存款和储蓄器
对立于db2pd, db2top是抓取快照消息,所以必要开采监察和控制按钮,db2pd
是从内部存储器布局中抓取,没有须要监察和控制按键

194)db2top -d sample

###############################################################################################################################################################################################
###############################################################################################################################################################################################

195卡塔尔dba实现数据库安全陈设:居民身份表明(authentication卡塔尔(英语:State of Qatar);权限(authorizaiton卡塔尔(英语:State of Qatar);特权(privilege卡塔尔(قطر‎

196卡塔尔国db2 server
数据库服务器是数据库实际所在机器(在分区数据库系统上只怕是多台机器)
    db2 client
数据库顾客机是对服务器上的数目实行查询的机械,那些客商能够是本地的(驻留在与数据库服务器相仿的物理机械上),也足以是长距离的(驻留在单独的机械上)

197)authentication决定了db2客商在怎么着地点开展身份验证

198)v9能够依赖分裂必要来设定认证机制,举例是举行实例连接和实例级操作,依然只是接连数据库都有两样的参数内定
[db2inst1@oc6162546036 ~]$ db2 get dbm cfg |grep -i ‘authentication’
 Server Connection Authentication          (SRVCON_AUTH卡塔尔(英语:State of Qatar) = KERBEROS 
《《《廉洁数据库的证实
 Database manager authentication        (AUTHENTICATION卡塔尔 = SETiguanVELAND  
《《《连接实例的辨证
那三个参数表明:顾客在延续实例会用SETucsonVE奥德赛,不过在接二连三数据库时会用kerberos身份ID明,借使在服务器上还未有准确初步化kerberos,可是提供了实用的userid和passwd,那么允许那么些顾客连接实例,可是不许连接数据库。

199)服务器上种种实例仅同意朝气蓬勃种等级次序的身份,也正是说,设置适用于该实例下全数的数据库
    客户机上编目标种种数据库具有和谐之处认证项目,用catalog database
命令中的authentication参数内定:db2 catalog db test as test2 at node
db2inst1 authentication server 

200卡塔尔(قطر‎authentication是
sever的时候,在当地连接的话无需表明,如若是长间隔连接的话,需求将服务器上的db2user和db2passwd通过网络发送给服务端
    authentication是
client的时候,允许客商在顾客机上进行身份ID明,即能登录到顾客机,便得以连绵不断数据库,不须要重复提供口令
    authentication是 client的时候,须求注意四个参数trust_allclnts ,
trust_clntauth ,那四个仅在authentication 为clinet的时候生效
    trust_allclnts 为yes(私下认可设置),即在客户段进行求证
    trust_allclnts 为no
,则信赖的客户机不须要提供口令,而不信的顾客机则仍旧要求提供密码和userid以便在服务端实行居民身份注脚
    trust_allclnts 为drdaonly
,则仅信赖在iSeries和z塞里es平台上运营的客户机,除了那几个之外都要提供口令和id 
    trust_clntauth
为client,身份认证在客商机处实施,没有需要客商id和口令
    trust_clntauth
为server,身份验证在服务器处形成,需求提供顾客id和口令(这是为着以任何身份在顾客机上登录去实施别的特权的操作)
[db2inst1@oc6162546036 ~]$ db2 get dbm cfg |grep -i ‘trust’
 Trust all clients                      (TRUST_ALLCLNTS) = YES
 Trusted client authentication          (TRUST_CLNTAUTH) = CLIENT

201卡塔尔(قطر‎ 依照权限(authorization)功用范围来分别,db第22中学国共产党包含两类权限:实例权限和数据库权限。
     实例权限:sysadm,sysctrl,sysmaint,sysmon
[db2inst1@oc6162546036 ~]$ db2 get dbm cfg |grep -i ‘sys’
 
 SYSADM group name                        (SYSADM_GROUP) = DB2IADM1
 SYSCTRL group name                      (SYSCTRL_GROUP) = 
 SYSMAINT group name                    (SYSMAINT_GROUP) = 
 SYSMON group name                        (SYSMON_GROUP) = 

9.7后头sysadm的权限中对数据库对象的拜谒以致数据库对象上的管理权限抽离给了数据库管理员(dbadm卡塔尔(قطر‎和安全管理员(secadm卡塔尔(英语:State of Qatar).
dbadm也分为了dataacess和acessctrl
sysctrl 不能够访谈数据库中的任何数据独有付与一定的权杖
sysmaint 也无法访谈数据库中的任何数据,以至不能够去除创造数据库和表空间
     

202卡塔尔(قطر‎数据库权限:secadm,dbadm,accessctrl,dataacess,sqladm,wlmadm,explain,load,connect,createtab
9.7中,只有secadm才能grant/revoke dbadm权限 

203)db2 create db sample 《《《 
sample下面的dbadm将隐式的付与发此命令的客户
     db2 grant dbm on database to user tom 《《《那是显得
     db2 grant dbadm with dataaccess without accessctrl on database to
user tom 《《《注意这里分明要已经连上钦定的数据库
     db2 grant dbadm on database to group db2grp1
《《《也得以给一个组,相似那几个命令唯有secadm客户发生

204)只有secadm和accessctrl权限客商才干grant/revoke
客商/客户组的load权限,以致对象的control特权,

205)特权大意上分三种:数据库特权(针对数据库中负有目的)和指标级特权(与特定对象相关联)
表空间特权:use(允许客商在钦命表空间中创设表)(除了syscatspace或任何系统有时表空间)
形式特权:createin;alterin;dropin
表和视图特权:control;alter;delete;index;insert;references;select;update;
索引特权:control(允许客户删除索引)
包特权:control;bind;execute
例程:execute
队列特权:usage;alter

206卡塔尔(英语:State of Qatar)于实例级权限相通,能够行职责令语法grant/revoke :db2 grant insert on
table test to user tom ;db2 grant select on table test to group
db2grp1

207卡塔尔(英语:State of Qatar)从 DB2 V9.1 早先,CREATE DATABASE 命令语法扩充了 RESTHighlanderICTIVE
选项。借使该命令中回顾了 REST索罗德ICTIVE 选项,那么会导致 RESTPRADOICT_ACCESS
数据库配置参数被设置为 YES,同临时间不自动授予 PUBLIC 任何特权。假若忽略了
REST科雷傲ICTIVE 选项,那么 RESTENCOREICT_ACCESS 数据库配置参数被设置为
NO,前述全部特权都将自动授予 PUBLIC。
[db2inst1@oc6162546036 Security]$ db2 get db cfg for sample |grep -i
‘access’
 Restrict access                                         = NO

208卡塔尔国with grant option并不适用全体grant语句
,control特权也不能不有secadm和accessctrl来予以,系统一编写目表也只能由那多少个客户给予。並且在给与数据库级权限,索引权限,表权限或视图的control权限是,with
grant option字句无效
撤消dbadm权限,必须求有secadm权限

209)显示grant connect sample的权柄给 tomzhhao

[db2inst1@oc6162546036 ~]$ db2 connect to sample user tomzhao 
Enter current password for tomzhao: 
SQL1060N  User “TOMZHAO ” does not have the CONNECT privilege. 
SQLSTATE=08004

[db2inst1@oc6162546036 ~]$ db2 grant connect on database to user
tomzhao
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 ~]$ db2 connect to sample user tomzhao 
Enter current password for tomzhao: 

   Database Connection Information

 Database server        = DB2/LINUXX8664 10.1.1
 SQL authorization ID   = TOMZHAO
 Local database alias   = SAMPLE

210卡塔尔(英语:State of Qatar)展现付与select 特权在table db2inst.t3

[db2inst1@oc6162546036 ~]$ db2 “select * from db2inst1.t3” 
SQL0551N  “TOMZHAO” does not have the required authorization or
privilege to 
perform operation “SELECT” on object “DB2INST1.T3”.  SQLSTATE=42501
[db2inst1@oc6162546036 ~]$ db2 grant select on db2inst1.t3 to user
tomzhao
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 ~]$ db2 “select * from db2inst1.t3”

ID          NAME      


         15 tom       
         16 tim       
         17 tim       
         17 tim       

  4 record(s) selected.

210) 突显grant insert 在表t3上的特权 给tomzhao 组
[db2inst1@oc6162546036 ~]$ db2 “insert into db2inst1.t3
values(18,’sam’)”
DB21034E  The command was processed as an SQL statement because it was
not a 
valid Command Line Processor command.  During SQL processing it
returned:
SQL0551N  “TOMZHAO” does not have the required authorization or
privilege to 
perform operation “INSERT” on object “DB2INST1.T3”.  SQLSTATE=42501
[db2inst1@oc6162546036 ~]$ db2 grant insert on table db2inst1.t3 to
group tomzhao
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 ~]$ db2 “insert into db2inst1.t3
values(18,’sam’)”
DB20000I  The SQL command completed successfully.

211)显示grant dropin 在模式db2inst1的特权 给用户tomzhao 
[db2inst1@oc6162546036 ~]$ db2 drop table db2inst1.t3
DB21034E  The command was processed as an SQL statement because it was
not a 
valid Command Line Processor command.  During SQL processing it
returned:
SQL0551N  “TOMZHAO” does not have the required authorization or
privilege to 
perform operation “DROP TABLE” on object “DB2INST1.T3”.  SQLSTATE=4250
[db2inst1@oc6162546036 ~]$ db2 grant dropin on schema db2inst1 to
all
DB20000I  The SQL command completed successfully.

212卡塔尔隐式的予以权力:
开创数据库的时候,将dbadm,secadm权限以致bindadd.connect.createtab.create_external_rounte等授权于创设者
授予dbadm权限的时候,将bindadd.connect.createtab.implict_schema.load.quiesce_connect等授权于被给予dbadm权限者
来得成立方式的时候,将createin,alterin,dropin付与成立格局者
隐式创造形式的时候,将createin给与public
创建对象(表,索引,包),将control授予对象创设者
成立视图,将富有视图定义根底表视图外号control权限赋予control权限 

213)认证>>权限(实例,数据库)>>特权(对象)

214)db2将关于特权的新闻囤积在7个种类编目视图里:
syscat.dbauth
syscat.colauth
syscat.indexauth
syscat.packageauth
syscat.schemaauth
syscat.tabauth
syscat.tbspaceatuh

###############################################################################################################################################################################################
###############################################################################################################################################################################################

1卡塔尔(英语:State of Qatar)假诺系统生成的目录,删除主键就可以去除索引,alter table drop primary
key

2卡塔尔(英语:State of Qatar)打补丁在此之前要做的备选专业
       :备份数据库配置音讯和实例音讯:db2support . -d sample -cl 0 (-cl
0搜集数据库系统目录,数据库和实例配置参数,db2
注册参数变量,那一个都会卷入到db2support.zip)
         备份packages :db2 list packages for all show detail >
packages.txt
         备份数据库的ddl语句 :db2look -d sample -e -l -x -o sample.ddl
         备份数据库自己数据:db2 backup db sample 
  补丁之后的专门的学业
         使用补丁的新特点进级数据库:db2updv10 -d sample
        
对工具进行绑定,path是绑定文件目录:譬喻:/home/db2inst1/sqllib/bnd (db2
bind path..卡塔尔(قطر‎
         重新绑定packages:dbrbind dbname -l logfile all

3)查看数据库是还是不是足以荣升
[db2inst1@oc6162546036 instance]$ ./db2ckupgrade sample -l
/tmp/db2chkupgrade.log -u db2inst1 -p guoguo0308
DBT5508I  The db2ckupgrade utility completed successfully. The database
or databases can be upgraded.

4卡塔尔db2在读写数据的时候,是跨容器按顺序写的,以保障读写成效,数据均匀布满

5)容器能够是目录,文件 和裸设备,其汉语件就好比是DMS的容器file ‘/’
,在那之中目录路线就好比SMS的器皿 ‘/’ 

6卡塔尔国db2 create database dbname automatice storage yes on /dbauto dbpath on
/database,个中数据库表空间数据的不二等秘书诀是足以钦定的(举例在那之中的自动表空间路线/dbauto卡塔尔,数据库路线也是足以钦赐的.
唯有钦赐了automatic storage yes 手艺钦点自动积累管理表空间路线/dbauto

7)监察和控制表空间的秘诀:
  db2 list tablespaces show detail / db2 list tablespace containers for
tablespacesID show detail
  db2 get snapshot for tablespaces on sample 
  db2pd -d sample -tablepsaces
  sysibmadm.snaptbsp / sysibmadm.snapcontainer管理视图

8)怎样删除归档日志中,不移步的存档日志(logarchmeth1 using disk卡塔尔:
率先步,list history backup all for db,找到最先的备份 ,
第二部,在备份中找到first log
其三部,删除fist log此前的存档日志 

若是logarchmeth1
的值是logretain,这几个将要小心因为运动日志也在日记文件中,会误删

9)如若客商不想记录日志能够使用那么些选项:alter table tbname activate not
logged initially 

10卡塔尔SUBST奇骏 第多个参数是 字符串, 第3个参数 初阶地方,  第八个参数  长度
即使第4个参数未有,暗许到底

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图