数据库备份与回复,上边把施用进程中相遇的多少个难题整治下

脚下,职业中1个门类的数额 Table 和 Stored Procedure 在 DB二数据库,须求拜访之。上边把利用进度中相见的多少个难题整治下:

第10章:数据库备份与回复
(恢复生机的定义,db11日志,数据库和表空间的备份,数据库和表空间的回复,数据库和表空间的前滚,recover使用程序,数据库重建,监控备份恢复生机和还原,优化备份恢复生机和还原)
壹) Redo
是指db记录了完结的操作commite之后但没立马的写入硬盘,这一年开机数据库会自行做写入硬盘的操作
二)崩溃复苏(crash
recovery)是数据库的2个效用,使数据库到达一样的景况,能够回滚未提交的数量,重做已经在内部存款和储蓄器提交的数目。选项:autorestart
on ,以及能够行使db2 list utilites show detail或db二pd -until查看进度。
三)脱机是指在崩溃恢复生机的时候表空间发出错误
肆)劫难恢复生机(disaster recovery),用HADSportage功用来平复,原理
是将源数据复制到目的数据库制止
5)前滚苏醒要基于启用备份并且启用了归档日志,复苏数据库时且不能够用without
rolling forward,数据库在平复操作甘休时处于roll foward pending
6)前滚恢复分为:前滚数据库和前滚表空间
7)前滚表空间一般能够挑选在日记中前滚至:日志末尾(to end of
log)和有个别特定时期点(称为时间点过来)。一般二种景况用前滚表空间:表空间作复苏操作后处于前滚暂挂状态(做rollfoward
database将日志应用于表空间)和崩溃恢复生机时相遇2个或几个表空间处于前滚暂挂(那种意况要先修复表空间,手艺做rollfoward
database将日志应用于表空间)
八)前滚复苏要启用归档日志效能,默许是绝非的
玖)日志记录任何commit到磁盘的数据,提交的数据redo ,没有提交的数据undo
拾)日志只记录DML(insert,delete,update)
11)循环日志 有 主日志(primary log files) 和 援救日志(second log
files).循环日志只可以苏醒到备份点
1二)活动日志(active
log)是还没写入磁盘的日记,二种口径任意1个标准化下正是活动日志:包罗尚未提交或回滚的事务新闻;包括已经付出但从没写入磁盘的事体音讯
1三)logarchmeth一=off 是循环日志
14)logarchmeth1=logretain,userexit,disk:directory_name,tsm:managment
class name,vendor:libary name
一五)日志计算:循环日志支持崩溃恢复生机和本子复苏,归档日志帮忙除了前多少个外还有一个前滚复苏
16)备份不会去备份数据库管理器配置文件或注册变量
17)即使是在线备份(backup online)那就一定倘若归档日志
1八)恢复生机(restore)数据库只好是离线来做,那么些和rollforward
数据库是壹模同样的规则
1玖)本地数据库目录 和 系统数据库目录都是同一个名字的文本夹:sqlbdir
20)表空间的东山再起一定会有rolling forward的操作以达成平等的动静
②一)能够选择db二 list tablespaces show detail或db二 get snapshot for
tablespace on db查看minimum recovery time那1摘取
2二)db二ckbkp -h 检查实验备份性息 db二ckrst -d dbname -t time 检查增量苏醒
2三)苏醒restore数据库的时候,容器的职位或名称设备与备份时的例外,将在采纳重定向复苏
二四)drop是删除表,使用drop之后表结构和表的数码都会被删除,truncate 和
delete是去除表里的数额,但不删除表自个儿,truncate 和
delete比较,truncate要快繁多,但缺点就是不能够回滚,包罗索引等都会化为起首值,数据就无法复苏了
25)db2 select tbspace,drop_recovery from syscat.tablespaces
查看表空间的选项                    
26)drop_recover那几个选项不能用在system temporary tablespace ; LOB ;
XML上
2七)苏醒删除表步骤:一)完整数据库备份二)restore在删除表此前建立的数量库级或表空间级备份image
3)检索已删除表的对象ID 四)rollforward 数据库 5)重建表
6)用前滚的数据库导入的数码导入到表中
28)rollforward 会使表空间处于不可访问的景况
2九)历史文件db2rhist.asc
在db二inst1/NODE0000/SQL00001上边,及其备份文件db二rhist.bak
30)db二rhist.asc可以用list history来查看哪
3一)db二 list history backup all for db tomdb 列出tomdb的野史文件
3二)prune histroy 命令管理恢复生机破坏了的历史文件
3三)为了确定保障日志文件能够保存,能够使用backup db dbname online to
/backuodir include logs,保存日志在备份印象中的操作之能是在线备份
3肆)离线备份:earliest log=current log   而在线备份 earliest log <
current log 
35)苏醒删除的历史文件:db2 restore db dbname history file 
3陆)可还原数据库重建:表空间备份可复原数据库,部分表空间备份可复原数据库,含有log文件的在线备份可过来数据库,使用增量备份重建可还原数据库,使用重定向选项重建可复原数据库
三7)db2 restore db tomdb rebuild with all tablespaces in database taken
at 二零一六03171303二4 用表空间备份重建数据库(归档日志)
3八)用表空间重建之后要前滚表空间,如果未有相应的备份影像都能在历史文件中找到手艺KugaF,个中国和东瀛志文件一定要可用,如若不在数据库参数的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的表空间
肆1)可还原数据重建能够用别的备份,不可复苏数据库只好用数据库备份

(说实话,DB二 并未 SQLServer 好用,也大概自身是太小白了,有待于进步…)

42)0x0100 表示:restore pending 

第5章 数据移动 (export,import.load,db二move,db二look)
1)db2 “export to table1.dat of del messages table1.log select * from
table1”
SQL30一伍N  An SQL error “-158五” occurred during processing.
即使有记录然而会报错 
贰)import 脱机导入(allow no access), 联机导入(allow write access)
3)导入情势有:insert,insert_update,replace,db2look
前三顺应对象表存在(援救的格式IXF,WSF,ASC,DEL),db贰look适合没有指标表(援救的格式PC/IXF)
四)load有八个动作选项:insert,replace,restart,terminate

================================================================================================================
第10章 基本监察和控制措施 
一)监察和控制工具备:快速照相监视器,事件监视器,db二pd工具,db二mtrk, activity
monitor等
二)快速照相监察和控制器是在对话品级改造:有二种方法更动:更动数据库的布局参数(db2update dbm cfg using dft_mon_lock on)
,调用应用程序级的db二MonitorSwitches() API函数,大概实行update monitor
switches using [[SwitchID] on | off,…]
3)得到快照新闻:db2 get snapshot for dbm/database on dbname/locks on
dbname/sdynamic sql on dbname
肆)复位计数器:reset monitor for db dbalias,reset monitor all,
能够重新恢复设置单个数据库,全局数据库,但不可能选取性的对用快速照相监视器开关调控的特别监视器组重新设置计数器
五)db二pd首借使监督检查锁
陆)为啥快速照相监察和控制未有别的项,如:tablespaces ,dbm,tables
7)快速照相监察和控制的艺术:get snapshot for
8)利用函数监察和控制,可是要受控于监视器开关 
玖)利用视图监察和控制 sysibmadm方式名起初的视图
10)monitor switches 功能与单个数据库,dbm 是具备数据库,db二 update dbm
cfg 是总开关,monitor switches是小开关
1壹)event monitor是要为特定事件类型创造
1贰)db贰evmon工具来格式化sql event monitor原始数据 
一3)db二mtrk是用来监督内部存款和储蓄器
1肆)db二pd -version -osinfo查看版本 操作系统音讯

================================================================================================================
第拾章 运营数据库必须思虑的数据库设置
一)db二 get dbm cfg show detail里面包车型客车Delayed Value 与Current
Value在在线配置的动静下,值应该是相等的
二)db贰pd -dbptnmem能够查阅数据库内部存储器总括音信
三)通讯设置不得以共同配置(在线配置,蕴涵注册变量,节点配置,端口配置);
  内部存款和储蓄器设置中instance_memory能够同步动态更新;
  self_tunning_mem单分区多分区DPF能够1并配置;
 
数据库共享内部存款和储蓄器能够协同配置(databse_memory,那个内存共享配置取决于slef_tunning_mem
是ON的情况);
 
缓存池大小可以同步配置(IBMDEFAULTBP是暗中同意的缓冲池,当syscat.bufferpools目录表中该缓冲的NPAGES值为-1是,db贰数据库配置参数   
BUFFPAGE调控缓冲池大小,不然会忽略BUFFPAGE参数,并用NPAGES参数钦命的页数创设缓冲值);
 
pckcachesz能够一并配置(程序包告诉缓存用来高速缓存数据库上的静态和动态SQL和XQuery语句的有着section);
 
catalogcache_sz高速缓存能够应用的数据库堆中最大空间(以页总结)能够壹并配置;
肆)数据库管理器须要从磁盘I/O举办的越少,质量越好
伍)BPH猎豹CS六缓冲池命中率应该超过九成(可以选拔SYSIBMADM.BP_HITRATIO总计命中率),个中的字段:SNAPSHOT_TIMESTAMP
,DB_NAME ,BP_NAME  ,TOTAL_HIT_RATIO_PERCENT
,DATA_HIT_RATIO_PERCENT,INDEX_HIT_RATIO_PERCENT)
陆)程序包高速缓存(pckcachesz)不提议设置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(高速缓存)使用状态查看:db贰 get snapshot for dabtabase
on dbname|grep -i “catalog”)中的catalog cache
overflows那1项,不为0将在加进:db贰 update db cfg using catalogcache_sz
XX
八)locklist达到maxlocks时,数据库管理器会对应用程序挂起的锁定实践从行到表的锁定晋级
9)db2 event monitor
笔录下音信后用db二evmon -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

================================================================================================================
第十1章 日常运作维护 runstats,reorg,rebind,健检,数据库监察和控制
一)总计消息是记录各类数据库对象音信,并保存在数据库系统表目表中,优化器会依照那些音信选用最低的举行花费
1)db2周转的资本是指CPU开支(以指令数计)和I/O(以寻道数和页的转变数计),开销的单位是timeron,数据库计算消息标称误差过大,就有相当的大希望引致品质难点
2)
静态SQL在runstats之后要求重新bind,因为在bind从前就已经规定,则相会世总括消息分歧等的图景,但动态SQL就不必要,因为动态SQL语句的造访计策是依据总括音信在运维是动态变化的
叁)runstats就如小车的GPS
四)  静态 SQL:静态 SQL 语句壹般用于嵌入式 SQL 应用中,在程序运维前,SQL
语句必须是规定的,例如 SQL 语句中关系的列名和表名必须是存在的。静态 SQL
语句的编写翻译是在应用程序运维前开展的,编写翻译的结果会储存在数据库内部。而后程序运转时,数据库将向来实施编写翻译好的
SQL 语句,降低运作时的支付。
    动态 SQL:动态 SQL 语句是在应用程序运转时被编写翻译和推行的,例如,使用
DB二 的交互式工具 CLP 访问数据库时,用户输入的 SQL 语句是不鲜明的,因此SQL 语句只可以被动态地编写翻译。动态 SQL 的行使较多,常见的 CLI 和 JDBC
应用程序都利用动态 SQL。 
 依照编制程序方法的例外,DB2 的应用程序开还能够分成嵌入式 SQL
编程和非嵌入式编制程序 :

    嵌入式 SQL 编制程序将 SQL 语句嵌入到宿主语言 (host) 的次序中,例如 C/C++
程序。因为宿主语言不识别 SQL 语句,先要对先后开展预编写翻译,把 SQL
语句调换为对 DB二服务的调用,比量齐观写源代码,最终再选用宿主语言的编写翻译器对应用程序进行编写翻译。嵌入式
SQL 都急需被绑定到一定的数据库中,可分为嵌入式静态 SQL 和嵌入式动态
SQL。
    非嵌入式应用程序不须要预编写翻译,且方法较多,如
CLI、JDBC、ODBC、ADO.NET 等等,那些艺术中都采纳动态 SQL。表
2点数了普及的 DB2 编程接口。 
5)db2 reorgchk update statustucs on table all
对全表举行runstats,若是有批量的多寡插入时候,就供给做runstats
6)对特定表的runstats,db2 -v runstats on table tablename and indexs all
7)查看是还是不是实行了runstats:
syscat.tables中的stats_time列突显的值能够查看是不是运营,当为null时,正是未有运转runstats;syscat.indexes也能够用这种情势检查测试
八)在表中运转runstats有三种用户访问选项:allow read access,allow write
access(暗许)
玖)玖.5以前的runstats之能在单区(单个数据库分区)进行总结,所以壹旦不是在享有数据库分区中同样发表,那么会并发总计音讯不等同,即就要runstats以前各种的对各样分区之间重新分发数据,用那么些命令:redistribute
database partition group
十)db二rbind能够用于重新绑定数据库中享有应用程序包,使用 db二 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%下
一三)在自动化总计音信配置在此以前,要透过运维sysinstallobjects存款和储蓄进程成立查询反馈库,即在设置auto_stats_prof
on,auto_prof_upd on之前,要用call
sysinstallobjects(toolname,action,tablespacename,schemaname)
1肆)在动用runstats对特定表和目录举行时,必须使用完全限定的表名和索引名
一五)采撷分布式总计信息:db贰 runstats on table tablename with
distribution and indexes all
1陆)runstats有很两种分裂的选项实行加强优化功能:
   在一定的列和目录实行
   收罗分布式总结信息
   包涵频率和分位数总括消息
   包涵列组计算音讯
   包含like statistics的runstats
   包涵计算音信配置文件的runstats
   带有抽样的runstats
   带有系统页级抽样的runstats
   reorgchk搜聚全体表的数据库总括音讯:reorgchk update statistics on
table / schema
   边load边做总括音信,边创造索引边总计音信
一7)重组表要比runstats总括音信时间更加长,能够施夷光行runstats绑定程序包总括音讯,如若未有改正能够再实行reorg
1八)v8在此之前只好离线重组,v八之后方可协同也得以离线:钦定了选项inplace就是1道重组,默许是离线脱机重组
1九)有关心重视组的速度消息将记录在数据库活动的历史记录文件中,能够用db2 list
history命令张开,也得以用表快速照相来见识重组进程(db二 get snapshot for table
on db,不关怎么样设置数据库监视表按钮,都会记录表重组监视数据
20)借使系统举行的崩溃恢复生机且进入替换进度,那么自然要使重组表操作达成
二一)脱机表重组必要将别本复制到权且表空间,但在线重组表不会
2二)联机表重组会创立三个.OLKuga的2进制的文书记录重组时要用的音信,如:LSN
重组项目,下个腾出的范围,索引标志,是为着爱戴数据集群依然回收空间等
2三)联机表重组包涵八个级次:select N pages,vacate the range,fill the
range,truncate table 
贰4)要是要对联机表重组进展重新整合,必须先暂停(db贰 reorg table tbname
inplace pause),工夫结合
  
发出resume请求之后,假使未有重新钦定实施的结合项中truncate的选项,将沿须原来的截断表选项truncate
   在restore 和 backup的时候不能够实行结合
二五)监视在线重组表方法:快速照相(get
snapshot),管理视图(snaptab_reorg),表函数(snap_get_tab_reorg)
二陆)由于脱机表重组是共同的,由此脱机表重组中的任何不当都会回来给实用程序
  
联机表重组是异步的,因而尚未SQL消息写入CLP,查看再次来到SQL错误,请发出list
history reorg
二七)联机重组索引,假使内定了allow write
access这些选项,将会重建该表的具备索引,命令:db二 reorg index
index_name for table table_name[clean up /clean up all /cleanup only
pages]
2八)PCTfree是指 在创设索引的时候为其定义的可用空间百分比
2玖)db二 “select ‘revoke select  on
‘||rtrim(tabschema)||’.’||rtrim(tabname)||’ from public;’ from
syscat.tables ” > script.sql 利用目录表做的脚本rvoke public的权限
30)脱机表重组须要的附加存款和储蓄空间保存表的影子别本,脱机索引重组不需求,联机表重组必要的是愈来愈多的日记空间,联机索引重组须要越来越多的日志空间和影子别本存款和储蓄空间
3一)rebind会对应用程序在推行前进行绑定,绑定和依据总括新闻和数据库对象创设一个顺序包,那么些程序包就是实行布置
32)所以一旦举行了总计或是重组,那将要双重开始展览rebind
33)runstats > reorgchk > reorg > rebind/db2rbind > runstats
循环
34)syscat.packages表中的valid值标记当前的程序包是还是不是可用,倘诺是X值,就表示当前的次序包是不可用,那么就须求重新绑定
35)db二diag.log 错误日志,db2inst1.nfy通告日志。那八个须要平时检查
36)DMS表空间的多余查询是用,db二 list tablespaces show detail
,SMS表空间对应的器皿用操作系统查看剩余空间df -k 
三7)DB2有诸多工具用于监察和控制数据库和实例活动 例如:snapshot monitors/sql
snapshot函数 ; event monitor ; sysibmadm动态质量试图
3捌) db2 list utilities show detail 能够监察和控制 LOAD ,BACKUP ,RESTORE,
RUNSTATS

================================================================================================================
第10二章 数据库常用工具
一)db2cfexp ,db2cfimp 实例配置音讯导入导出
二)db二exfmt,db贰expln是用来查阅已搜聚并写入解释表(explain_instance)的一应俱全讲明多少
3)visual explain查看特定SQL语句选择的拜会安顿的图形化表示GUI解释工具
四)timeron是db二优化器使用的1种资本度量单位,用于计算查询完全实施所需的年月和财富数量
五)访问计划是db二用于推行db2语句的门径和手续,那是具备可用解释工具呈现的新闻
陆)syscat.packages是用来囤积数据库中的以程序包的样式的拜访安排
7)查看静态SQL,动态SQL用 db二expln
八)db2exfmt是直接处理已搜罗并村混在表明表中的通盘批注多少或表明快速照相数据,输出是根据文本的报告
玖)db贰advis索引设计工具,测试假诺创设了目录,SQL实行开销能够加强多少,
拾)使用db二advis第②步是要搜集和讲述提须要Design advisor的劳作负荷
11)db二batch
是1种标准测试工具,是以壹组sql和xquery语句作为输入,动态的备选语句的实行时间,并再次回到结果集
1二)db2dart
数据库一致性检查工具和修复工具,这几个实用程序会直接从硬盘中读取数据库的多寡和元数据开始展览比较,因而无法对具备运动延续的数据库运转该工具
一三) db二look
能够提取数据库定义语言DDL;生成缓冲池,表空间和数据库分区组消息 ;
创造数量定义语言DDL
;收集数据库子集的计算数据和DDL。以及用db2look来创设立模型拟测试数据库

环境搭建

(1)DB2Client

DB2 客户端:DB2 v9.1

安装到位后,能够经过cmd命令行查看 DB2Client 相关信息:

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

在开首一贯运维 db二cmd 来运营 db二cmd.exe 运行 db2命令行程序,推行 db二:

图片 1

之后,能够施行连接数据库、访问数据等操作。

db二命令行连接数据库

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

再凭 用户名和登入密码 就能够访问数据库了。在那之中,DB二 数据库暗中同意端口是
60000。

connect to calldb_My user 用户名 using 密码

(2)Quest
Central

DB贰 可视化工具:Quest Central for DB二 v五.0.二.四

关于注册码

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

设置之后,运转遇到如下问题:

图片 2

斩草除根办法:程序上点击鼠标右键–>属性–>包容性;勾选以格外格局运作那些顺序(包容windowsXP);勾选以管理员身份运转程序,就可以缓解。

具体操作

透过 db贰下令 连接到数据后,在 Quest Central
首页会彰显已接连的对应数据库的再三再四结点。

除 Quest Central 外,还有此外 DB贰可视化学工业具,可扩高校习。

14)

第十三章 v拾.1的新特点 

基本功运用

事先多是用 SQLServer,初次操作 DB贰数据库,虽说语法多数类似,还是各个不顺手。

至于DB二,相关材质和本本推荐:

  • 牛新庄
    -《循途守辙DB贰》《深远解析DB二》《DB二品质调控与优化》
  • 《DB二 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 在 DB二 中的 三 种尖端用法:

(1)复制表结构

CREATE TABLE new_table_name LIKE table_name; 

(2)创立结果表

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

(三)创造物化查询表(MQT)

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

物化表SELECT语句看似一个询问,未有当真造成表,类型彰显为Query,但它完全能够当表来用。 

删表

(壹)删除单行数据或批量刨除数据:方法二比办法一属性好

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

(叁)全表数据删除

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

(4)直接删除表

DROP TABLE tabName;

临时表

DB二的一时半刻表基于会话(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 PRESEEnclaveVE ROWS
表示commit后依旧保留表中的数据。之后,权且表能够看做是普通表,查询、联表均可。

关于session一时表的多少个难点:http://www.db2china.net/Question/28913

关于session一时表调控选项 ON COMMIT PRESE猎豹CS陆VE
ROWS的解释:http://www.db2china.net/Article/9916

小心,全局一时半刻表允许创制索引、但不容许创造主键和唯1约束。创设的暂且表同原表有壹致的表结构,可是相关列的属性(主键、外键、唯1约束、索引等)音讯是绝非的。

其它音信可参考:DECLARE GLOBAL TEMPORARY TABLE –
IBM

DGTT 与 CGTT

上述近来表均为 DGTT(已表明的大局权且表),DB 九.柒 开首援助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条件的熏陶最大。由此,应该对索引键中的列按重复值由少到多的逐1排序,该排序会使索引键提供最好质量。

优点:

  •  加速查询速度
  •  幸免不须求的表扫描 或 排序操作
  •  减弱死锁的产生
  •  唯壹性索引有限扶助数据的唯一性

缺点:

  •  额外的囤积空间
  •  索引创设和维护的耗费时间

总括消息

数据库对象的总结参数音讯,如表的数据量大小、占用的页数、表的行数、索引的气象和各州的分区情状等。

二个SQL在写完并运维之后,我们只是告诉DB二去做哪些,而不是哪些去做。具体怎么样做,取决于优化器。优化器为了转换最优的进行布署,要求精通当前的种类音信、目录中的总括音讯等。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及半连接等、多表间的接二连三各类采纳

关于多表间连接的1一选拔难点:

不论在同等条SQL语句中包罗了多少张表连接,同近年来刻只有两张表张开延续,但多表间的接连各样也是决定质量的显要原因。数据库对于表的逐条的选用,依据三个表之间接连后得出的行数进行排序,假如总计音讯与事实上意况不是较大,有非常大可能率会促成由于接二连三各种不当而致使的性质难题。

连锁音讯请参考:DB二施行布置浅析

对此某些复杂的SQL,提出使用
Quest Central 中的 SQL Turning 作用,比较直观。

SQL语句推行安顿的任何查看方法:

(1)db2expln

db2expln推行安排分为三片段:

  •  当前征集实践安顿的言语
  •  实行安插详细音讯
  •  实行安顿图:从下往上,从左往右,遵照号码从大到小的次第进行阅读

在cmd命令行运维 db二expln
命令,能够查看该命令的行使支持。

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 的 DB2SQL品质优化示例

(2)db2exfmt

该办法必要在DB二安装目录 …\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 包(相持异存储进程进行布署才使得)。

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

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

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

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

 
一)CLI JDBC ODBC
是应用程序是用来db二服务器调换的驱动,当三个口舌被驱动后,会打成一个网络包发送给数据库

2)查看db2进程执市场价格况: ps -ef|grep -i db二

三)查看db贰版本下有哪些实例: db2ilist

4)假如db2stop
force不能甘休实力,db二start不可能运维,能够奉行db贰_kill强制终止全数分区实施的长河,然后实践ipclean ,重新启航数据库时,做崩溃恢复生机

5)db2 get dbm cfg 观望的是sqllib目录下的db二systm那几个文件

陆)db二 list db directory /catalog databse
观察编指标是/sqllib/sqldbdir/sqldbdir那一个文件 ,这些和node
是壹致的(node要成立才有)

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

??八)难道说补丁的根底上无法打补丁,一定要有底子版本 ? qa

九)表空间容器的有关音信能够透过list tablespace containers for tbspid show
detail

十)用db二pd -d <dbname> -tablespaces直观呈现表空间的配备消息

1一)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 选项为数据库增多新的储存路线(db贰 alter database dbname add
storage on dbpath),那里有几许要证实:
9.七此前新加的不二秘技不会被表空间立刻使用,只有已有囤积路线文件系统满了,才会动用新增的门径,而且只可以扩张无法去除。九.柒过后就足以对自动储存表空间实施rebalance操作就能及时使用这些蕴藏路径

一三)DMS中应用add扩张容器会重复rebalance,影响属性 ,

1四) DMS中动用begin neww stripe set
选项是当已有容器已用完后,再利用新增的器皿,于add容器不相同,该选项不会rebalance,但会招致数据偏移

一伍)db二pd -d tomdb -storagepaths 查看存款和储蓄路线(数据库级别)

16)在数量库级扩充存款和储蓄路线一定要在实例目录上边建立才行:db二 “alter
database tomdb add storage on ‘/home/db贰inst1/testdbpath/’ “
DB20000I  The SQL command completed successfully ,qa ?

17)对哪些表做rebalance ,哪个表就有新扩展的不二等秘书技咯

1捌)能够从DMS改成都电子通信工程高校动管理表空间(展现的用上选项alter tablespace tbname
managed by automatic storage)

1九)怎样删除二个在多少库级创立的器皿,表空间已经rebalance,容器路线已经rm
-rf掉了 ,db二pd -d dbname -storagepath查看未来是drop pending? qa

20)quiesce能够对表空间锁定,幸免别的用户对表空间的表数据举行改变db2quiesce tablespaces for table db二inst1.t一 share /【reset】

二一)对表空间状态的2进制解释用:db二tbst 0x6000

2二)SYSIBM.SYSCAT,SYSIBMADM,SYSSTAT那多少个体系方式对有关对象开始展览分组

二三)syscat.schemata那些视图用来查看数据库创立了怎么着形式

二肆)decimal(p,s)p是数字的总位数,s是小数位
;如若不点名精确的位数就依据decima(5,0)来代表

25)表约束:*非空约束 not null *唯壹约束
unique(columm)*主键约束和外键约束 *检查约束 constraint constraintname
chek

二陆)constraint只是约束名称 ,个中外键约束必要名称,检查约束供给名称

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

2八)删除约束:db二 alter table tbname drop constraint contraintname

2玖)在sysibmadm.admintabinfo里面查看表容积,已经回落之后的容积

30)在根节点上找到大致对应的数值范围,然后经过这些范围指针知道叶节点对应的数值,然后在数值通过PAJEROID偏移找到相应的行消息

3一)唯一索引:当在表上创设了主键或唯壹键的时候,表会自动创造唯一索引:db2create unique index indexname on tablename(column)

32)唯有创制了唯一索引技术应用include那一个选项举办四个字段的查询

3三)db贰 describe indexes for table tablename show detail
命令查看二个表是或不是有目录,在哪些字段上开创了目录,以及索引的项目,也足以通过syscat.indexes采用字段查看索引

3肆)如何更动暗中认可使用的表空间? qa

35)有多个点子消除连串唯①:generate_unique , identity , sequence

3陆)唯1系列号:generate_unique函数是db二最早采纳在表中生成唯1值的办法(bit
data)

db二 create table tablename(columnname char(一三) for bit
data,columnname….),在那之中10个字节的多少串包蕴的是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.

3陆)sequence是db2的多个对象,用选项nextval for seqname抓取下个值,prevval
for seqname抓取上个值 用法:db二 create sequence db二inst一.my_seq as
bigint start with 一 increment by 壹 no maxvalue cycle cache 十0 ;
个中cache 100是指
玖八个优先算出来的队列存在内存中,当要读取的时候从来从内部存款和储蓄器里面拿,所以cache
不等于一的时候,连接断开会出现缓存值丢失而导致不一连,通过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只辛亏表中某壹列使用,效率范围是3个表。而sequence是db贰对象,于表无关,能够在全部数据库总使用

###############################################################################################################################################################################################
 
积存进程(stored procedure),函数,LOB,tirgger,自增字段(indentity)
那些从未学
###############################################################################################################################################################################################

3九)定界ASC(II) DEL是db贰最常用的格式。””双引号作为字符分割符 ;
,逗号列字段分割符 ;换行来限制行区划符

40)定长ASC(II)格式,每一种字符长度于列定义的字符长度同样,不足用空格补齐

四一)PC/IXF 这些是IBM特有的,能够保存表结构定义,WSF格式是lotus的格式

4二)cursor游标只帮助LOAD,不必要中介就能够在表和表之间迁移 :declare
mycursor cursor for select c一 ,c二 ,c3 from tab一 ; 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”

4四)load跟import差别,import依旧实行insert,update,delete操作,须要验证约束和触发器,通过作业日志记录变化。而load不是一行行的导入,而是格式化数据,不必验证约束和触发器,日志也很少,适合多量数码导入。

肆伍)load常用命令:db二 load source-file of filetype messages msgfile
[insert,replace,terminate,restart] into targettable

四陆)
load除了是非唯壹键的表唯有load装载这些操作,只借使有唯一键的表(唯一索引)将在开始展览创设,删除,索引复制其余3个阶段,可透过db2diag.log查看各样阶段步骤

肆七)load在剔除重复值阶段,只会检讨唯一键,不会检查评定check和完整性(主键和外键),在首先个装载阶段不合乎表定义的输入数据不会被装载到表中

4八)含唯一键的load进度:load(不通过db二引擎将文件分析成物理存款和储蓄方式,无效数据足以放在转储文件)
> build(假若有目录就会基于load搜集的键创设索引) >
delete(检查评定唯1键,创造丰富表) > 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(3二k)”
《《《《《《创立充裕表,加上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 t一.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.t壹),卓殊表(t一_exp),转储文件(t1.dmp) 

50)在骨子里中只要能确认保障唯一键未有重复值的话,能够不用成立丰硕表

51)用load query检查表load状态

52)load有个copy选项用来备份load,因为有非常大也许举办数据库或表空间的苏醒,那时前滚须求copy的表空间备份恢复生机被数据库恢复生机删掉的load数据
(copy no 缺省,copy之对归档日志有效)

伍三)copy
no会是归档日志load的时候处于backup-peding状态,今年需求backup
db/ts来排除这些境况

5四)copy yes会使归档日志数据库load的时候发出备份介质,用于db
复苏rolllforward的时候使用 
[db2inst1@oc6162546036 ~]$ db二 update db cfg for sample using
archlogmeth一 disk:/home/dbi二nst1/archlog  《《《《《《归档数据库
[db2inst1@oc6162546036 ~]$ db2 “load from t3.del of del insert into t3
copy yes to /home/db2inst1”     《《《《《《copy yes 的load
[db2inst1@oc6162546036 ~]$ db二 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 ~]$ db二 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
t叁”                                                    
《《《《《《表在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
里面第三个字段 肆代表load备份,0代表数据库备份

5陆)除了copy yes, copy no 还有一种load 选项 nonrecoverable
,那个选项可以在load之后不备份表空间,立时能够接纳表,不过这么些表在其后亟需备份前滚的时候无法被还原(时间点在nonrecoverable这一个动作之后),倘诺急需还原将在重建表或对数据库举办load点之后的备份

57)copy no 会使表空间处于backup-pending
    copy yes 会使表空间处于长日子等待
    nonrecoverable 会使表不可恢复生机,可是速度一点也不慢

5八)对于load装载阶段会将不合乎表定义的输入数据放入转存文件,将违反唯1约束放入非常表,那么违反完整约束和check约束,load会将其安装为set
intergrity (SQL066八n ,reason code “一” )

5玖)set intergrity 有二种采取:set intergrity no 私下认可
db2 set integrtiy for T1
   set intergrity immediate checked 

   set intergrity unimmediate checked

60)和违反唯一键一样,也要开创充裕表把违反完整约束和check约束记录下来

陆1)演示进度:
[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
t二                                                            
《《《《《《创制充足表
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 ~]$ db2 “set integrity for db2inst1.t2
immediate checked for exception in t2 use t2_exp”       
《《《《《《对t贰张开检讨,并使用十分表  
SQL3602W  Check data processing found constraint violations and moved
them to  
exception tables.  SQLSTATE=01603 
[db2inst1@oc6162546036 dbbackup]$ db2 “select * from
t2_exp”                                                          
《《《《《《分外表查看,不管是不是有不行数据,t贰都将脱离set integrity
pending状态
 
COL1       COL2      


AAA        A         

  1 record(s) selected.

6贰)对于数据旅舍来说,有这么些表必要检查,那么能够动用表字典查看哪样表处于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’

6三)表d>c>b>a,当C做完load处于set integrity
pending状态的时候,其余表不会处于此景况,可是对C表实施set
integrity这几个动作之后,a和b表都会处于set integrity
pending的景色,像那种景况主外键约束相比较多的图景,只怕要施行多次set
integrity命令   

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

65)db贰 set integrity for t1 off no access cascade immediate
《《《《《《对表t1安装为set integrity
pending状态,不允许访问,同时他的依靠表也处在set integrity pending状态

6陆)db二 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)”《《《《《《实践插入存款和储蓄进程

  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 ts三 pagesize 8k
managed by database using(file ‘/home/db二inst1/ts三’ 23二) bufferpool
bp八k”《《《《《《重建叁个23二页的八k ts叁表空间
[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
t一《《《《《《查看表状态 load pending 
Tablestate:
  Load Pending
[db2inst1@oc6162546036 ~]$ db2 “load from /dev/null of del terminate
into t1″《《《《《《使用terminate选项
[db2inst1@oc6162546036 ~]$ db二 load query table
t一《《《《《《查看表状态
Tablestate:
  Normal

68)从客户端load数据,假设出现路线不存在,表就处于load in
progress,那时要在客户段实行load terminate,就算load
是insert动作,表会苏醒到load在此以前情形,若是是replace动作,表会被terminate清空

6九)假若要导入的多少是分号;和单引号,能够是行使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”,+000贰三.40那中状态,能够使用decplusblank
striplzeros去除+号和零 0 ;能够这么设定日期timestampformate=”YYYY/MM/DD
HH:MM:SS.uuuuuu”

71)要导入的数量比表中的字段多怎么做:DEL格式的能够使用
import,load的method p选项,对于ASC格式,method L ,对于IXF格式,用method
N选项 :db二 “import from t四.del of del method p(一,3) insert into
t4”,当中p(一,三)代表截取导入数据的1列和三列 

7二)要导入的数额比表中的字段少,和字段多1致,DEL的格式用method
P(1,9九,二),利用9九创造3个null值就可以了

7二)qa :为何时不时的会TS 会backup-pending

7叁)若是插入的数据是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
test贰”《《《《《《叁行数据

ID          NAME                


          1 aaa                 
          2 bbb                 
          3 ccc                     

[db2inst1@oc6162546036 ~]$ db二 “select max(id) as counter from
test二”《《《《《《那是重点,设置末了断点 select max(id) as counter from
table

COUNTER    

          3

  1 record(s) selected.
[db2inst1@oc6162546036 ~]$ db二 “alter sequence seq1 restart with
四”《《《《《《重设开端值,alter sequence seq一 restart with counter+一
[db2inst1@oc6162546036 ~]$ db贰 “backup database sample tablespace(ts三)
to /home/db二inst一”《《《《《《表空间不可用,做了备份 
[db2inst1@oc6162546036 ~]$ db二 connect to
sample《《《《《《重新链接db
[db2inst1@oc6162546036 ~]$ db二 “insert into test二 values (nextval for
seq一,’bbbbb’)”《《《《《《插入下个值
[db2inst1@oc6162546036 ~]$ db2 “select * from
test2″《《《《《《发现存为了1四,而不是四,那是因为在上马创办sequence的时候cache
10,当数据库断开,前十组数据(4-13)会从内部存款和储蓄器消失,链接db后从1四从此开端算起

ID          NAME                


         14 bbbbb               
          1 aaa                 
          2 bbb                 
          3 ccc                 

  4 record(s) selected.
 
7四)IXF格式壹般会协调调换不汇合世乱码,DEL则会有乱码的主题材料。当load的时候乱码,能够行使
modified by codepage=1208/1386/819来更动数据库内定的格式,默许是1208 
[db2inst1@oc6162546036 ~]$ db2 get db cfg for sample |grep -i code
来查看,db2set db2codepage=1386来更改

7伍)表空间之间的表迁移,典型的做法是,t壹原表export出来,在另个表空间创设同样和t一表同样t贰,把t壹export出来的数量import进t二,删除或rename
t1,把t二改成t壹

7陆)能够行使存款和储蓄进度admin_move_table来张开表空间之间的动员搬迁,那种在线的动员搬迁形式有限协助原表持续访问

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

7捌)db2move适用于db2move程序用来在多个数据库间的迁移,适合分裂平台,表数据量对比多,是import,export,load命令的包装,将数据导出为pc/ixf格式

7九)db二look能为对象表产生表,视图,索引,函数,trigger,存款和储蓄进程等对象定义语句,db二look也能够抽出表的目的定义音信,以及表空间结构

80)db二move不可能迁移identity标志列的表,之能用单独的load去导入

捌一)查看缓冲池大小:
    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>

捌2)db二look+ db2move数据库数据里面垮平台迁移手续,例如linux 到 window :
一)db贰look 导出表和表空间对象的概念 db二look.ddl 
                                                                
二)db二move 导出全体数据库表数据到三个索引下 
                                                                 3)FTP
到window, 修改db贰look.ddl中的内容,比如路线,施行db贰 -tvf db2lool.ddl
加载定义
                                                                
4)通过db2move导入 db2move sample load   

八3)db二dart 功用特别精锐能够导出数据,

八四)ixf是二进制自带结构的,del是只有数量

8一) qa 假若4k页面,什么景况下表创设不了 行大小超过了四k 。。。。
############################################################################################################################################################################################### 
identity数据导入,lob数据导入,换行导入没学
############################################################################################################################################################################################### 

八二)二种情景的复苏:恢复生机+前滚 ;
复苏工作日志和崩溃恢复(数据保持1致性)

八三)前滚能够回复到备份之后的某部点或日志结尾

捌四)崩溃苏醒:redo提交到内部存款和储蓄器缓冲池还没写进磁盘,undo还没交给的,缺省状态下崩溃恢复生机是活动施行不必要人工干预,

捌伍)日志是数据库1种复苏机制,用于操作数据在没写入存款和储蓄系统在此之前的千古记录

八六)db二选拔写日记优先算法,先写日记,再写多少,写多少的历程是异步的。日志是不实行别的不是物理数据更新操作的,比如查询就不须求记录到日志内,以及日志只记录操作产生地方,时间点和上下的多少变动,比如不要求记录sql语句和发命令的用户account 

87)数据流三种方法总计,那二种能够随意调换
    LSN(log sequence
number)记录所在日记文件在磁盘中的真实的地方,用十6进制表示
    LSO(logical stream
offset)记录真正的数据,不带有日志文件的种种头新闻

88)外部的日记命令和调整文件都广泛采纳LSN记录数据流的任务

8九)pageLSN会保障日志文件在还原的时候不把写进磁盘的多寡拿来还原,各类数据页头都记录了LSN,当复苏的时候读到LSN,会跟pageLSN比较,假如LSN更老,pageLSN更新的话,那么就不会去恢复生机那些老的LSN,pageLSN是用来和LSN比较用的

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

九壹)非活动日志是在平复起源此前的日志,活动正是从此

玖贰)全体重点的LSN都会记录到 SQLOGCTL.LFH那一个调节文件内,backup
pending,rollforwarding pending 都是由那个文件掌握控制

玖三)db七日志原理,写日记的优先算法,先写日记,在写多少,当崩溃或前滚复苏时候,供给将日志文件写回到数据盘,保障db二数据库的1致性,db10日志最后都存在日志文件中,在内部结构上,种种日志文件由局地日志构成,各种日志也包行1些日记记录,每一个日志记录同LSN记录,但苏醒时,db二要求通晓从这一个LSN初步,那就是min(MinfuffLSN,LowtranLSN),以及移动日志一定毫无删除,不然会down机
一致性正是过来前滚到2个时间点,这么些时间点会将交给的数目写入磁盘,未有交给或早已回滚的时候都被撤废

玖4) 日志的深浅,主日志文件和援救日志文件:日志文件个数
 Log file size (4KB)                         (LOGFILSIZ) = 1024
 Number of primary log files                (LOGPRIMARY) = 13
 Number of secondary log files               (LOGSECOND) = 12

95)
赢得 DB贰 数据库大小和其最大容积音信的艺术
db2 “call GET_DBSIZE_INFO (?,?,?,0)”
得到表空间侵吞大小的办法
DMS能够直接查看容器大小,若是想查看里面包车型大巴多少也,db二 list tablespaces
show detail
SMS由于各样对象都占领贰个文件,能够测算SMS表空间容器中文件的总大小
DMS自动储存管理表空间,只要自动储存路线有充分的长空,满领会后会自扩
获得表/索引占用空间的主意
两种艺术:
db2pd -tcbstats;datasize*页数(那种办法只限于被访问过的表)
admin_get_tab_info 表函数;
和sysibmadm.admintabinfo系统一管理理视图

玖陆)获取工作日志大小:(logprimary+logsencond)*logfilesiz*四k 
设置为数据库大小10-五分一品质最棒(用kbyte来计量比例),logprimary+logsecond不可能抢先255,日志空间大小不可能当先25陆GB.
对logprimary和logfilsiz参数的更换须要断开链接手艺立见效用。而logsecond的修改会立刻生效,logsecond日志文件使用完后不会立刻删除,而是在装有连接都断开同仁一视新连接的时候才会去除

97)日志满:SQL0玖四6C ,事务会回滚

九八)日志路线:
[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/

9玖)假若急需对创立日志镜像文件
,可以透过mirrorlogpath设置日志镜像文件,将日志存在八个岗位

十0)循环日志,主日志用完职业提交到磁盘,能够再一次使用那一个日志,当主日志全体分红出去,并且都没交给到磁盘,则运用分配扶助日志来一而再日志,帮衬日志分配完没交给到磁盘,系统报错SQL09460C

⑩1)
归档日志,日志1旦写满就归档(不管是或不是commit可能写入磁盘,归档日志还足以是活动日志,包涵没交给的多少),系统会复制写满的日志进行再度利用(若是日志是移动的那么会用协助日志,假使是非活动,那么就会复制)

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

十三)创造数据库暗中认可是循环日志,改动成归档日志供给离线完全备份,不然会报backup-pending状态

拾4)循环日志多用于OLAP
数据存储的询问,并发,多维,协助rollback,崩溃复苏,backup/restore,但不可能保存日志,不帮助前滚
    归档日志多用来OLTP 交易系统,能够在产出难题时,第临时间苏醒

105) DML(data manipulation
language)是数额操纵语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,那四条命令是用来对数据Curry的数据举办操作的言语。

    DDL(data definition
language)是数量定义语言:DDL比DML要多,首要的一声令下有CREATE、ALTEOdyssey、DROP等,DDL首如果用在概念或退换表(TABLE)的构造,数据类型,表之间的链接和束缚等开头化工作上,他们多数在建立表时使用。

   
DCL(DataControlLanguage)是数据库调节语言:是用来安装或改动数据库用户或剧中人物权限的说话,包蕴(grant,deny,revoke等)语句。

106)监察和控制日志使用状态:db2 get snaphost for database on sample 

拾七)查看归档日志 :db二 list history archive log all for sample,

拾八)first active log file(db2 get db cfg for sample |grep -i ‘first log’
)此前是非活动日志,之后是移动日志

10八)事务日志满的动静(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
22八

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

11一)在线备份中的include
logs是把日记一齐打包在备份介质,是为着在另壹台机械方便卷土重来前滚,当中在线备份中的include
logs是可选,但貌似意况下都以加多那几个选项 
例如:
db二 backup db sample online include logs 在A机器上做在线备份
db二 restore db sample from /data1 taken at timestamp logtarget
/data/logs 把介质传到B机器上做通过logtarget将日志恢复生机到二个点名的目录
d二b “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 /data壹 logtarget /data/logs

11二)能够查阅复苏实行种种:db二ckrst -d sample -t timestamp -r database

1一三)要是要利用增量备份:db二 update db cfg for sample using trackmod on

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

11伍)db二ckbkp -h image(介质)查看备份介质正确性

11陆)db2补助三种苏醒:崩溃复苏,前滚恢复生机,版本复苏

117)暗中同意景况下崩溃复苏是私下认可(autorestart on),不需求人工干预

11八) db2各样备份介质就是二个版本(image),所以版本复苏正是运用介质恢复生机

11九)重定向苏醒:db二 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)

1②一)前滚提取日志顺序:活动日志目录 > overflow log path >
logarchmeth一

12二)表空间的蝇头时间回复点=表空间的种类目录表或内部表的终极一回立异操作的时间点,唯有前滚到细微恢复生机时间之后才干担保系统表和数据库对象

1二三)删除表苏醒(dropped table
recovery)(归档日志),暗许是敞开的,能够手动展开,db二 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 ~]$ db贰 backup db sample
online《《《《《《在线备份

Backup successful. The timestamp for this backup image is :
20140413153752
[db2inst1@oc6162546036 ~]$ db2 drop table t3《《《《《《删除表
[db2inst1@oc6162546036 ~]$ db二 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 ~]$ db二 “restore db sample
tablespace(IBMDB二SAMPLEREL) taken at
二零一四0413153752″《《《《《《表空间复苏
[db2inst1@oc6162546036 ~]$ mkdir droppedtablerecoverytest
[db2inst1@oc6162546036 ~]$ db2 “rollforward database sample to end of
logs tablespace(IBMDB二SAMPLEREL) recover dropped table
000000000000534三千4000a to
/home/db二inst1/droppedtablerecoverytest”《《《《《《利用历史文件的表定义,能够查阅到backup
id ,和行使的tablesapce .在前滚的进度上校表数据导出到1个索引里
[db2inst1@oc6162546036 NODE0000]$ cat data《《《《《《
10,”tom       “
[db2inst1@oc6162546036 ~]$ cat
creatt3.ddl《《《《《《创立1个剧本,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.

1二四)前滚复苏1旦产生就会调换新的日志链,之后时间的日记将恒久的不可能被恢复生机,被删去了一度
例如:
 
12伍)前滚恢复生机有两个挑选:timestamp有些时间点
                     end of logs and stop 最大恢复生机时间
             end of backup最小苏醒时间

1贰陆)db二 “values current timestamp” 
这些能够记录当前精准的光阴和前滚时候须求的格式
[db2inst1@oc6162546036 ~]$ db2 “values current timestamp”

1                         

2014-04-14-04.50.13.452212

1二七)使用db二 list history backup all for sample查看备份最小时间(start
time)和最大日子(end time)
     使用db二 list history archive log all for sample 查看归档日志 

###############################################################################################################################################################################################
普遍备份复苏境况及碰着的标题 
###############################################################################################################################################################################################

12八)自动表空间设置有七个挑选要同时安装才会活动管理空间:成立的表空间的是automatic
storage yes ;autoresize yes,  autoresize yes能力落成automatic storage 

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

130)runstats 使用distrubution
参数收集数据分布(一种是frequency,1种是quantile)

131)[db2inst1@oc6162546036 ~]$ db2 “select tabname,stats_time from
syscat.tables where stats_time is null”
《《《《《《查看是不是收罗过总括音信 

13二)runstats只可以对纯粹表进行施行,不可能对整个数据库做运转总括,必要脚本来收罗一切数据库的总括音信

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

134)假如出现表和目录总括音讯不均等,runstats将会报告警察方,此时将要同时对表和目录进行总计音信
db2 runstats on table db2inst1.t1 and detailed indexes all

13五)要是举行大数据量的总括音讯采撷时,会并发sql2310n
使用程序不可能生成总结音讯,那是足以选拔抽样计算

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

137)db2look -d sample -m > db2look_stat.out保存总结音讯

13八)runstats使用举办:

*当表数据量产生巨大变化的时候,如通过load加载大批量数码或reorg后,或追加的新的目录,提议runstats
*悠闲的时候奉行runstats
*表相当的大,或表数据频仍改造,能够思索在壹些字段上runstats,而不是全方位字段,
*表相当大,总括时间相当短,可以思念抽样总计
*抓好能够用性,能够暗中认可使用allow wirte access
*系统表也要时不时做runstats
*为收缩音讯分歧样的气象,思虑同时在表和目录上同时张开总括新闻搜罗
*计算完音信要发生commit
以自由锁。对于静态语句,还索要对package重新绑定,一便生成新的访问陈设

13玖)reorg磁盘碎片整理工科具

140)但出现难点时,reorg表可能会大大进步品质

*设若表中有广大删减的行,大概稍微表已经是空表,那么reorg能够是表占用的上台湾空中大学大下降
*假设产生overflow行溢出,首要爆发在变长字段varchar更新之后,记录的尺寸会跨页,增大了
I/O,reorg表数据足以另行组织数量的囤积顺序
*遵循某些索引重新组织表数据的次第物理,即cluster
index聚集索引的概念,表数据在情理上的积存顺序于索引顺序相相配。
*但表数据压缩是,能够透过reorg建立字典,并对表数据开始展览削减

1四一)当然 reorg不是全能的,有非常的大可能遵照索引扩大页数,DBA 比较关系
reorg试行时间,频率 和对应用的影响
 
14二)判定是或不是要求reorg 四个选取:reorgchk和sysibmadm.snaptab管理视图
db2 reorgchk on schema db2admin
如果F1,F2,F3标记 *,则需求重组表,假使索引总括结果 F四-F八 有*
标志,则必要对索引重组 

1肆叁)推断某一张表是还是不是需求整合,能够行使视图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.

14肆)对索引重组的检查如故要求reorgchk

145)reorg分为 离线重组 和 在线重组

离线重组 采取shoadow copy的不二等秘书籍,创立1份原始数据别本保持原表可读(allow
read access),reorg过程中会记录日志,能够在老大的状态下进行依照日志苏醒
对于离线重组。能够依照实际的目录实行组合index indexname ,如下:
[db2inst1@oc6162546036 ~]$ db2 reorg table db2inst1.t3 index il allow
read access use tempts1
DB20000I  The REORG command completed successfully.

14陆)db2 提供各个办法检查监察和控制reorg是不是达成:

*通过sysibmadm.snaptab 检查(打开dft_mon_table实例监察和控制器按钮 
*因而快速照相查看db二 get snapshot for tables on sample(current counter/max
counter来预测完毕的百分比)
*通过db2pd -d sampe -reorg
*因此list history reorg all for sample 得到表或索引重组音讯(因为
reorg会记录日志)

1四七)在线reorg表比离线reorg慢许多,因为在线不会创立数量别本,分批次重组,每趟唯有壹部分数量

14八)在线reorg表也叫inplace reorg(
原定reorg),reorg可随时运转和甘休,为了保障恢复生机性,在线reorg会记录大批量的日记,供给在日记空间注重于活动的行数,表上索引的个数和索引键大小,因而也许是表大小的数倍

db2 reorg table db2inst1.t3 inplace allow write access

14九)在线reorg表是后台异步,固然大家见到命令成功重临,实际上依旧在后台实施。借使在线结合的表许多,那么大概导致I/O
cpu能源占用繁多,并且大概会损耗全部的活动日志,影响系统平常运维,那么能够应用脚本调控八个表在线reorg实践种种:db2list applicaitons show detail |grep -i db二rerog决断,如若有 reorg
正在奉行,则等待该 reorg 实行完成,不然实行脚本里的下1个表重组
,在那之中db二reorg是贰个利用进度,能够断开

150)监察和控制在线重组和离线重组的监察类似

15一)离线reorg表之后会重建索引,在线表重组仅仅维护索引,而不会重建索引(除
cluster index 之外),假设要对索引单独构成能够:db二 reorg indexs all for
tbname,对在线重组索引的监督:db二 list history all for
sample,也许查看db贰diag.log文件

152)对于在线重组,要保证丰盛的日记空间,同时要保管 util_heap_sz
数据库参数的值充足大

1伍三)bind(绑定),是将C程序中的DB二 SQL
语句经过编写翻译(prep)绑定到db二的package中,package中包括了各个SQL语句的拜访布署,未来施行那几个C程序时,就会遵从保存的package的造访陈设实行SQL语句
那正是说rebind正是重新绑定更新推行陈设。rebind1般都对静态sql
(事先已经在package里面)绑定,存款和储蓄进度也是在package里面,所以rebind也1致适合

15四)逻辑空间恐怕低于物理空间(物理空间是分配过未有自由的,实际占用的上空是逻辑空间),总结表空间尺寸的时候是用情理空间),reorg能够清除那种状态

###############################################################################################################################################################################################
###############################################################################################################################################################################################
155)隔断等级只限于读锁

15陆)暗许级其余CS可以在程序级,语句级,事务级设置

一5柒)肆中隔绝等级:
U哈弗(uncommited read):读的时候不加锁,可以读到未提交的多少
CS(cusror stability):读到哪行,哪行就加锁,读完之后就释放锁
HighlanderS(read stability):把询问的结果行,全体都加锁
Rubicon福特Explorer(repeatable stablility):把读过的行,全体都加锁

一伍七)表锁在暗许情状下db二不会实践强锁(s u x z ),唯有由此lock table 或
发生锁升级的时候才会在表上抓好项目锁方式,弱类型锁主借使相配行锁使用,在获取行锁从前一定要有表锁(IN,IX,IS,SIX)
    
15八)db2pd是锁的监察好工具,因为不要求锁定引擎能源,对系统开支小,格式上也相比较直观

15九)加Z锁,是当create,alter,drop,表或create.drop索引时须求要。用db二pd
-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系统视图查看表的定义,所属的表空间
 
16一)U锁是在于 S 和 X锁中间的锁,1般用于”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     

16贰)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     

1陆三)W 和 NW行锁
是有目录的时候才会用到,S和NS是例外隔离品级下读锁的形式,在CS 和
奥德赛S隔绝等级下是NS锁,在HavalLacrosse隔绝品级下是S锁

16四)在获取行锁在此之前,要得到这么些行所在表的最低表锁,如若要询问有些行,那么就是对表有读的意图,须要先的到表的企图读(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=-一 是极致等待的情趣
     死锁
     锁进级(lock escation),即是由行锁替换为表锁,释放内部存款和储蓄器财富的历程
(行锁跳级为表锁),能够动用db2diag.log查看
     锁调换(lock conversion)是锁的形式转黄,比如NS锁转为X锁
(弱型的锁转向强类型的锁)

1陆七)db二用locklist和maxlocks出发锁晋级,locklist用来决定每一个数据可以应用最大锁内部存储器;maxlocks用来支配每种应用可以攻下的锁内部存款和储蓄器百分比,在多用户并发系统中,此参数的目标是限制有个别应用占用过多的锁内部存款和储蓄器,锁进级产生的条件包蕴:
锁内部存款和储蓄器超越了locklist大小
有些应用使用的锁内部存款和储蓄器空间达到了locklist * maxlock%
发生锁进级时,会在db二diag.log 中记录锁晋级的详细新闻。
     

16八)推断锁的主题素材出现:
*系统响应慢,吞吐量低,cpu使用率低,磁盘空闲
*应用程序再次回到错误 SQL91一
*由此平常督察工具,如快照监察和控制和事件监察和控制 ,那点是最棒源点db贰 get
snapshot for db on sample |more

16九)锁是一下子的,某1随时可能监察和控制到许多锁等,而另壹整日只怕曾经出狱,所以须求通过脚本实施数十次(find_lickwait.sh
脚本用于抓取超越二min的运用)

170)db二pd -d sample -locks showlocks wait -tra -app -dyn >db二pd.out
那是db二pd常用的一声令下组合
咱俩得以遵照db二pd
-locks选项定位锁音信,找到持有锁和锁等的政工句柄(TranHdl)>>依照db二pd
-tra找到那多少个业务句柄所属的运用句柄(AppHandl)>>接着依照db二pd
-app找到那一个句柄刚施行的或正在推行的sql句柄(通过Anchid和Stmtid识别>>最终遵照db二pd
-dyn找到sql句柄所代表的sql语句,在其实条件中,可以依照供给写贰个剧本,按期调度和抓取锁的音信

171)对锁的督察,固然锁快速照相也足以博得锁的音信,但我们依旧提议用db2pd,锁列表能够高达几百m
,而且锁快照会对db二内部数据结构加上中间锁,以保障本人独享内部存款和储蓄器,而db2pd不供给占用内部锁

17贰)db贰pd具有一定的局限性,不可能有限帮忙一定能抓取到引起锁等的SQL语句,db二pd只可以抓取到未来和上三个的进行语句(C-AnchID/C-StmtID)(L-AnchID/L-StmtID),假使一个政工增加和删除改操作之后,又举行了往往读的操作,那是db贰pd抓取的结果就不是的确据有锁的SQL

173)玖.五版本若是应用db二pd无法抓取到引起锁等的SQL,那么能够locktimout的值间隔设置小片段,然后用v九.5提供的db二_capture_locktimeout注册变量来抓取

17四)玖.伍过后 假设想要用+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),裁减锁等而增进并发性,,即3个政工做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                                 = 壹  
《《《在快速照相弹指间时有产生锁的次数
Time database waited on locks (ms)         = Not Collected
《《《锁等的年华总和 (除以lock waits
即没个锁等的小运,那么些日子对比大,将在查处引起锁等的SQL语句,db二pd -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                              = ①   
《《《爆发锁超时的次数
Number of indoubt transactions             = 0    
《《《正在等待锁的选择

对此快速照相监察和控制锁,一定要在有个别时刻内分析才有意义

176)锁超时
因为db二pd抓取SQL语句的力量有限,所以大家得以用这么些注册变量:db二_capture_locktimeout来有效的抓取死锁和锁超时,还需合作创建deadlock
event monitor技能科学完好的抓取锁超时的相关音信(适用于玖.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’
查看db二dump里面生成的db二locktimout文件,那个文件包蕴八个部分,多少个有的是报名锁类型,锁超时的言语,其它一个为锁具备者相关新闻,包蕴了眼下情势,和脚下作业施行的全部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 t三 where id=20 
《《《发生锁超时的持有者语句
Lock Owner (Representative): 
.
.
 Lock mode held:          ..X 《《《锁持有方式

177)死锁近期的常用的措施正是透过deadlock event monitor (玖.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 t壹 《《《产生死锁回滚的SQL语句

其次个窗口:
[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只可以用1次 

17八)为了转移锁等 锁超时
死锁都亟需用分歧工具去检查测试,玖.七运用统一抓取锁超时,锁等 和
死锁,那正是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
能够把前2个参数改成hist_values,将mon_LW_thresh改成10000(10秒)

17玖) 参数设置完结后,就能够早先成立锁监控器实行锁时间的抓取:
[db2inst1@oc6162546036 ~]$ db2 “create event monitor lockevmon for
locking write to unformatted event table(table locks)”
DB20000I  The SQL command completed successfully.
db二 set event monitor lockevmon state=壹 开启监察和控制开关

180)因为用了未格式化的表,所以需求分析,解析方法包含java程序和仓库储存进度(略),如下:
[db2inst1@oc6162546036 jdbc]$ cp db二evmonfmt.java DB二EvmonLocking.xsl
/home/db2inst壹《《《在samples目录上面自带3个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
db二evmonfmt -d sample -ue locks -ftext -u db贰inst一 -passwd >
db2locks.out
《《《出现锁等,锁超时,死锁的时候,就足以利用刚编写翻译的java程序对未格式化的表张开解析,当中ue
<table>钦赐未格式化的表名,-ftext将出口格式化为文本文件,-u
-p钦命用户和密码

1八1)除了用java程序解析表还是能够用存款和储蓄进度

18二)借使不能从使用范围更动隔开品级(U奇骏>CS>GL450S>Escort索罗德,隔绝级越低,并发越好),能够透过sql语句级通过with设置隔绝等级:select….from…with
UQashqai 表示经过UCR-V隔绝等级查询数据

1八3)有诸如此类多个锁参数能够减小锁的行数,提升并发
[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或EvoqueS隔开品级下,假若插入的行未有提交,那么其它三个应用程序扫描时会处于锁等,但万1用了这么些参数,则忽略未提交的新插入数据
DB2_SKIPINSERTED:跳过删除行,在CS或WranglerS隔断等级下,假设剔除的行没有付诸,那么其它八个应用程序扫描时会处于锁等,但只要用了那一个参数,则假诺那数据尚未去除

背后两个参数其实在某种格局方面是脏读,要小心使用

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

1捌四)db二 提供了重重督察工具,重要分为:实时监察和追踪监察

1八伍)实时督察记录数据库某四个时时的快速照相音信:snapshot,db二pd,db二top和玖.7版本的in-memory
metrics等工具,就像是相机
     追踪督查提供了更详实的数据库活动:事件监察和控制器和九.7版本的activity
monitor,事件监察和控制器也许会发生较大的数据量

18六)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监察和控制命令比较轻便,分析结果才难,监察和控制的结果是由1些监察成分构成:
计数器(counter)用来储存累计值,比如自运行以来发出的总排序次数(total
sorts)死锁个数(dead locks)读的行数(rows read)
测算/须臾时值(gauge):记录有些监察和控制元素的日前值。比如当前发生的次数(active
sorts),当前锁的个数(locks).
高水位(high water
mark),记录3个监理成分在张开监控器开关最大的值或一点都不大值。
1般性需求开始展览频仍的抓取来分析1段时间内的数据库活动,能够用脚本

18八)为了更加直观的查阅snapshot的分析结果,v9之后能够用snapshot管理视图查看,那么些视图与snapshot命令行是应和的
[db2inst1@oc6162546036 ~]$ db2 list tables for schema sysibmadm|grep
-i ‘snap*’可查看
瞩目:snapshot管理视图要求将实例监察和控制开关展开,否则不能抓取全数快照,在会话级设置无效。db2reset monitor all 命令只对snapshot命令生效,对保管视图不起成效

18九)db2pd不须要db2内部锁(latches)和引擎能源再次回到监察和控制数据,因此进程越来越快,质量更加好。db二pd直接调用shmat链接到数据库与实例的共享内部存款和储蓄器,不许要确立到数据库的链接,db二pd基本不会对系统形成鲜明的震慑

190)db贰pd工具包罗大气公然与未公开的参数,若是须求更多音信,能够利用db②pd-everything得到好些个当众的消息

1九一)db二pd在分区数据库可以采用dbp参数来钦赐分区:db贰pd -db -sample -dbp

1玖二)db二pd常用参数:

db二pd -db sample -appl,该参数列出数据库中当前线总指挥部是,那一部分音信1致db二list applications show detail的出口
db二pd -edus ,EDU列表,即引擎处理单元(engine dispathched unit)
,用来监察和控制edu的cpu总消耗量,假设急需运用该命令检验特定期间内的cpu消耗,则需求做差,给定期间的发轫和停止计算差量
db二pd -edus
interval=3,还足以行使interval参数来获得时间段内的cpu消耗量,user delta
和 sys delta
列是用户cpu和体系cpu对于该线程的损耗cpu时间差,那样就不供给手动总括
db二pd -osinfo,操作系统信息
db2pd -bufferpool,缓冲池音讯,该参数要开荒bufferpool监察和控制器按键,
db贰pd -db sample -logs,日志新闻
db2pd -db sample -tablesapces,表空间音信
db2pd -db sample -locks,锁信息
db二pd -db sample -agents,代理消息
db二pd -db sample -static |more ,查看系统中存在的静态语句包新闻
db二pd -db sample -dynamic,该音信包涵数据库的包缓存中全部动态sql,
db2pd -db sample -tcbstats,表景况音信

1九三)db2top的法则便是在后台每种一段时间收罗二遍快速照相,然后通过总计其与近来二次快速照相以前的多少差别于经过的大运,总结出一部分列总括数据胡
db二top主要有八个职能:
实例检测连串
捕捉历史快速照相音讯,
其实db2top对品质特别在分区数据库上会影响系能,因为尚未点名的话,会对全局做快速照相,占用内部存款和储蓄器
相对于db二pd, db2top是抓取快速照相音信,所以需求开发监察和控制按钮,db2pd
是从内部存款和储蓄器结构中抓取,不供给监察和控制开关

194)db2top -d sample

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

1玖5)dba达成数据库安全陈设:身份验证(authentication);权限(authorizaiton);特权(privilege)

1玖陆)db贰 server
数据库服务器是数据库实际所在机器(在分区数据库系统上恐怕是多台机械)
    db二 client
数据库客户机是对服务器上的多少举行查询的机器,这几个客户能够是本土的(驻留在与数据库服务器同样的大要机械上),也足以是长距离的(驻留在单独的机械上)

1九柒)authentication决定了db贰客户在如啥地点方开始展览身份认证

1玖八)v九能够依照分歧要求来设定认证机制,比如是实施实例连接和实例级操作,仍然只是接连数据库都有差异的参数钦命
[db2inst1@oc6162546036 ~]$ db2 get dbm cfg |grep -i ‘authentication’
 Server Connection Authentication          (SRVCON_AUTH) = KERBEROS 
《《《廉洁数据库的验证
 Database manager authentication        (AUTHENTICATION) = SEHavalVE昂科威  
《《《连接实例的认证
那多少个参数表明:用户在再三再四实例会用SE奥迪Q5VE帕杰罗,但是在接连数据库时会用kerberos身份评释,即使在服务器上尚无正确早先化kerberos,可是提供了有效的userid和passwd,那么允许那几个用户连接实例,不过不允许连接数据库。

19九)服务器上每一种实例仅同意一种档次的身价,也便是说,设置适用于该实例下全体的数据库
    客户机上编目标各类数据库具有自身的身份认证项目,用catalog database
命令中的authentication参数钦命:db二 catalog db test as test2 at node
db贰inst一 authentication server 

200)authentication是
sever的时候,在本地连接的话不要求验证,即使是远程连接的话,须求将服务器上的db2user和db2passwd通过互连网发送给服务端
    authentication是
client的时候,允许客户在客户机上实行身份注明,即能登陆到客户机,便得以连接数据库,无需重新提供口令
    authentication是 client的时候,要求留意五个参数trust_allclnts ,
trust_clntauth ,那八个仅在authentication 为clinet的时候生效
    trust_allclnts 为yes(私下认可设置),即在客户段张开认证
    trust_allclnts 为no
,则信任的客户机不须求提供口令,而不信任的客户机则依旧需求提供密码和userid以便在服务端进行身份验证
    trust_allclnts 为drdaonly
,则仅信任在iSeries和zSeries平台上运维的客户机,除了那一个之外都要提供口令和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) = 

九.七后头sysadm的权力中对数据库对象的造访以及数据库对象上的管理权限分离给了数据库管理员(dbadm)和崇左管理员(secadm).
dbadm也分为了dataacess和acessctrl
sysctrl 不可能访问数据库中的任何数据唯有赋予一定的权杖
sysmaint 也不能够访问数据库中的任何数据,以及无法去除创造数据库和表空间
     

20二)
数据库权限:secadm,dbadm,accessctrl,dataacess,sqladm,wlmadm,explain,load,connect,createtab
9.7中,只有secadm才能grant/revoke dbadm权限 

203)db贰 create db sample 《《《 
sample下边包车型客车dbadm将隐式的予以发此命令的用户
     db二 grant dbm on database to user tom 《《《那是显示
     db2 grant dbadm with dataaccess without accessctrl on database to
user tom 《《《注意那里分明要已经连上钦定的数据库
     db二 grant dbadm on database to group db2grp1《《《也足以给二个组,同样这么些命令唯有secadm用户发生

20四)唯有secadm和accessctrl权限用户手艺grant/revoke
用户/用户组的load权限,以及对象的control特权,

20伍)特权轮廓上分两种:数据库特权(针对数据库中负有目的)和目的级特权(与特定对象相关联)
表空间特权:use(允许用户在钦命表空间中创造表)(除了syscatspace或别的系统权且表空间)
情势特权:createin;alterin;dropin
表和视图特权:control;alter;delete;index;insert;references;select;update;
索引特权:control(允许用户删除索引)
包特权:control;bind;execute
例程:execute
队列特权:usage;alter

206)于实例级权限相似,能够选取命令语法grant/revoke :db二 grant insert on
table test to user tom ;db2 grant select on table test to group
db二grp一

20七)从 DB二 V9.1 起首,CREATE DATABASE 命令语法扩展了 RESTRICTIVE
选项。假若该命令中包涵了 RESTRubiconICTIVE 选项,那么会产生 REST凯雷德ICT_ACCESS
数据库配置参数棉被服装置为 YES,同时不活动赋予 PUBLIC 任何特权。如若忽略了
REST奇骏ICTIVE 选项,那么 REST猎豹CS陆ICT_ACCESS 数据库配置参数被安装为
NO,前述全数特权都将机关赋予 PUBLIC。
[db2inst1@oc6162546036 Security]$ db2 get db cfg for sample |grep -i
‘access’
 Restrict access                                         = NO

20八)with grant option并不适用全体grant语句
,control特权也只好有secadm和accessctrl来予以,系统一编写目表也不得不由那四个用户授予。并且在给予数据库级权限,索引权限,表权限或视图的control权限是,with
grant option字句无效
取消dbadm权限,必供给有secadm权限

20玖)展现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

贰10)展现赋予select 特权在table db二inst.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.

2十) 呈现grant insert 在表t三上的特权 给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.

21二)隐式的授予权力:
开创数据库的时候,将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)认证>>权限(实例,数据库)>>特权(对象)

21四)db二将有关特权的音讯囤积在捌个系统一编写目视图里:
syscat.dbauth
syscat.colauth
syscat.indexauth
syscat.packageauth
syscat.schemaauth
syscat.tabauth
syscat.tbspaceatuh

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

一)假使系统生成的目录,删除主键就足以去除索引,alter table drop primary
key

二)打补丁以前要做的预备干活
       :备份数据库配置音讯和实例音信:db二support . -d sample -cl 0 (-cl
0搜集数据库系统目录,数据库和实例配置参数,db2注册参数变量,那个都会卷入到db②support.zip)
         备份packages :db2 list packages for all show detail >
packages.txt
         备份数据库的ddl语句 :db2look -d sample -e -l -x -o sample.ddl
         备份数据库自己数据:db二 backup db sample 
  补丁之后的干活
         使用补丁的新个性进级数据库:db贰updv拾 -d sample
        
对工具进行绑定,path是绑定文件目录:比如:/home/db二inst1/sqllib/bnd (db二bind path..)
         重新绑定packages:dbrbind dbname -l logfile all

三)查看数据库是或不是足以晋级
[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.

四)db二在读写数据的时候,是跨容器按梯次写的,以确认保证读写成效,数据均匀分布

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

陆)db二 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管理视图

⑧)怎样删除归档日志中,不移步的存档日志(logarchmeth一 using disk):
先是步,list history backup all for db,找到最早的备份 ,
第3部,在备份中找到first log
其叁部,删除fist log在此之前的存档日志 

万1logarchmeth壹的值是logretain,这几个将在小心因为移动日志也在日记文件中,会误删

9)倘诺用户不想记录日志能够运用那一个选项:alter table tbname activate not
logged initially 

10)SUBST奥迪Q7 第一个参数是 字符串, 第1个参数 开首地方,  第四个参数  长度
若是第3个参数未有,暗中同意到底

相关文章