DB二

目前,工作中贰个门类的多少 Table 和 Stored Procedure 在 DB2数据库,须要拜访之。上边把施用进度中相见的多少个问题整治下:

第9章:数据库备份与还原
(苏醒的概念,db27日志,数据库和表空间的备份,数据库和表空间的死灰复燃,数据库和表空间的前滚,recover使用程序,数据库重建,监察和控制备份复苏和恢复生机,优化备份苏醒和复苏)
一) Redo
是指db记录了成功的操作commite之后但没及时的写入硬盘,今年开机数据库会自行做写入硬盘的操作
2)崩溃苏醒(crash
recovery)是数据库的一个功能,使数据库达到一样的景况,能够回滚未提交的数额,重做已经在内部存款和储蓄器提交的多少。选项:autorestart
on ,以及能够使用db2 list utilites show detail或db2pd -until查看进度。
三)脱机是指在崩溃苏醒的时候表空间发出错误
4)悲惨苏醒(disaster recovery),用HAD途观功效来回复,原理
是将源数据复制到目标数据库幸免
5)前滚恢复生机要依附启用备份并且启用了归档日志,恢复生机数据库时且不能够用without
rolling forward,数据库在还原操作甘休时处于roll foward pending
六)前滚复苏分为:前滚数据库和前滚表空间
7)前滚表空间一般可以选拔在日记中前滚至:日志末尾(to end of
log)和有些特定期间点(称为时间点复苏)。一般三种境况用前滚表空间:表空间作复苏操作后高居前滚暂挂状态(做rollfoward
database将日志应用于表空间)和崩溃苏醒时遇上3个或多少个表空间处于前滚暂挂(那种景观要先修复表空间,才能做rollfoward
database将日志应用于表空间)
八)前滚恢复生机要启用归档日志成效,暗中同意是一直不的
玖)日志记录任何commit到磁盘的数据,提交的数量redo ,未有交到的数据undo
拾)日志只记录DML(insert,delete,update)
1一)循环日志 有 主日志(primary log files) 和 协助日志(second log
files).循环日志只好复苏到备份点
12)活动日志(active
log)是还没写入磁盘的日志,三种规格肆意三个准绳下就是活动日志:包括尚未提交或回滚的作业新闻;包蕴已经付诸但尚无写入磁盘的事务音信
一3)logarchmeth一=off 是循环日志
14)logarchmeth1=logretain,userexit,disk:directory_name,tsm:managment
class name,vendor:libary name
一五)日志总计:循环日志协理崩溃复苏和本子苏醒,归档日志支持除了前多个外还有2个前滚复苏
1陆)备份不会去备份数据库管理器配置文件或注册变量
17)固然是在线备份(backup online)那就必将固然归档日志
1八)复苏(restore)数据库只可以是离线来做,这几个和rollforward
数据库是同样的平整
1九)本地数据库目录 和 系统数据库目录都以同八个名字的文书夹:sqlbdir
20)表空间的恢复自然会有rolling forward的操作以到达同样的气象
21)能够运用db2 list tablespaces show detail或db二 get snapshot for
tablespace on db查看minimum recovery time这一取舍
2贰)db2ckbkp -h 检查评定备份性息 db2ckrst -d dbname -t time 检查增量复苏
二三)苏醒restore数据库的时候,容器的地点或称谓设备与备份时的不及,将要动用重定向恢复生机
2四)drop是剔除表,使用drop之后表结交涉表的数额都会被剔除,truncate 和
delete是去除表里的多少,但不删除表本人,truncate 和
delete比较,truncate要快大多,但缺点正是不能够回滚,包罗索引等都会化为初叶值,数据就不大概苏醒了
25)db2 select tbspace,drop_recovery from syscat.tablespaces
查看表空间的选项                    
26)drop_recover那些选项不能够用在system temporary tablespace ; LOB ;
XML上
二七)复苏删除表步骤:壹)完整数据库备份二)restore在删除表以前建立的数量库级或表空间级备份image
三)检索已删除表的对象ID 四)rollforward 数据库 5)重建表
6)用前滚的数据库导入的数码导入到表中
2捌)rollforward 会使表空间处于不可访问的图景
2九)历史文件db二rhist.asc
在db贰inst1/NODE0000/SQL0000一上边,及其备份文件db贰rhist.bak
30)db二rhist.asc能够用list history来查阅哪
3一)db2 list history backup all for db tomdb 列出tomdb的历史文件
32)prune histroy 命令管理苏醒破坏了的野史文件
33)为了保证日志文件能够保留,可以行使backup db dbname online to
/backuodir include logs,保存日志在备份影像中的操作之能是在线备份
3肆)离线备份:earliest log=current log   而在线备份 earliest log <
current log 
3伍)苏醒删除的野史文件:db二 restore db dbname history file 
36)可还原数据库重建:表空间备份可复原数据库,部分表空间备份可过来数据库,含有log文件的在线备份可过来数据库,使用增量备份重建可还原数据库,使用重定向选项重建可复原数据库
三7)db二 restore db tomdb rebuild with all tablespaces in database taken
at 二〇一四03171303二四 用表空间备份重建数据库(归档日志)
3捌)用表空间重建之后要前滚表空间,假使没有对号入座的备份影象都能在历史文件中找到技巧索罗德F,当中国和东瀛志文件一定要可用,如若不在数据库参数的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的表空间
四一)可还原数据重建能够用任何备份,不可恢复生机数据库只可以用数据库备份

(说实话,DB二 并不曾 SQLServer 好用,也说不定笔者是太小白了,有待于进步…)

42)0x0100 表示:restore pending 

第⑤章 数据移动 (export,import.load,db贰move,db2look)
1)db2 “export to table1.dat of del messages table1.log select * from
table1”
SQL30一伍N  An SQL error “-15八伍” occurred during processing.
就算有记录但是会报错 
二)import 脱机导入(allow no access), 联机导入(allow write access)
三)导入格局有:insert,insert_update,replace,db贰look
前3适合对象表存在(协助的格式IXF,WSF,ASC,DEL),db贰look适合没有目的表(帮衬的格式PC/IXF)
四)load有多个动作选项:insert,replace,restart,terminate

================================================================================================================
第十章 基本监察和控制措施 
一)监察和控制工具备:快速照相监视器,事件监视器,db贰pd工具,db贰mtrk, activity
monitor等
二)快速照相监察和控制器是在对话品级改变:有三种办法改换:改变数据库的安排参数(db二update dbm cfg using dft_mon_lock on)
,调用应用程序级的db2MonitorSwitches() API函数,可能奉行update monitor
switches using [[SwitchID] on | off,…]
三)拿到快速照相信息:db二 get snapshot for dbm/database on dbname/locks on
dbname/sdynamic sql on dbname
4)重新载入参数计数器:reset monitor for db dbalias,reset monitor all,
能够重新设置单个数据库,全局数据库,但不能够接纳性的对用快照监视器开关调整的非常监视器组复位计数器
5)db2pd首假诺监督检查锁
陆)为啥快速照相监察和控制未有任何项,如:tablespaces ,dbm,tables
七)快速照相监察和控制的办法:get snapshot for
八)利用函数监察和控制,然则要受控于监视器开关 
九)利用视图监察和控制 sysibmadm格局名初叶的视图
10)monitor switches 功用与单个数据库,dbm 是装有数据库,db二 update dbm
cfg 是总开关,monitor switches是小开关
11)event monitor是要为特定事件类型创造
1贰)db二evmon工具来格式化sql event monitor原始数据 
一3)db2mtrk是用来监督内存
1肆)db2pd -version -osinfo查看版本 操作系统新闻

================================================================================================================
第八章 运转数据库必须思量的数据库设置
1)db贰 get dbm cfg show detail里面包车型客车Delayed Value 与Current
Value在在线配置的情状下,值应该是相等的
2)db二pd -dbptnmem能够查阅数据库内部存款和储蓄器总结音讯
三)通讯设置无法一同配置(在线配置,包涵注册变量,节点配置,端口配置);
  内部存款和储蓄器设置中instance_memory能够协同动态更新;
  self_tunning_mem单分区多分区DPF能够同步配置;
 
数据库共享内部存款和储蓄器能够协同配置(databse_memory,那些内部存款和储蓄器共享配置取决于slef_tunning_mem
是ON的情况);
 
缓存池大小能够一同配置(IBMDEFAULTBP是暗中同意的缓冲池,当syscat.bufferpools目录表中该缓冲的NPAGES值为-一是,db二数据库配置参数   
BUFFPAGE调节缓冲池大小,不然会忽略BUFFPAGE参数,并用NPAGES参数钦命的页数创设缓冲值);
 
pckcachesz能够同步配置(程序包告诉缓存用来高速缓存数据库上的静态和动态SQL和XQuery语句的具有section);
 
catalogcache_sz高速缓存能够利用的数据库堆中最大空间(以页总括)能够联手配置;
四)数据库管理器必要从磁盘I/O举行的越少,品质越好
5)BPH本田UR-V缓冲池命中率应该抢先9/10(能够接纳SYSIBMADM.BP_HITRATIO总括命中率),当中的字段:SNAPSHOT_TIMESTAMP
,DB_NAME ,BP_NAME  ,TOTAL_HIT_RATIO_PERCENT
,DATA_HIT_RATIO_PERCENT,INDEX_HIT_RATIO_PERCENT)
6)程序包高速缓存(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(高速缓存)使用景况查看:db2 get snapshot for dabtabase
on dbname|grep -i “catalog”)中的catalog cache
overflows那1项,不为0即将扩展:db贰 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)总结音讯是记录种种数据库对象消息,并保存在数据库系统表目表中,优化器会依据这个消息选用最低的试行耗费
一)db二运营的资金是指CPU开销(以指令数计)和I/O(以寻道数和页的调换数计),开销的单位是timeron,数据库计算音信固有误差过大,就有希望引致品质难点
二)
静态SQL在runstats之后要求重新bind,因为在bind以前就早已分明,则会现出总计音讯差异的意况,但动态SQL就不需求,因为动态SQL语句的走访计谋是基于总括音信在运作是动态变化的
三)runstats就像小车的GPS
4)  静态 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。表
贰罗列了附近的 DB二 编制程序接口。 
伍)db二 reorgchk update statustucs on table all
对全表实行runstats,假若有批量的多少插入时候,就须求做runstats
陆)对特定表的runstats,db二 -v runstats on table tablename and indexs all
7)查看是否进行了runstats:
syscat.tables中的stats_time列呈现的值能够查看是或不是运维,当为null时,就是未有运转runstats;syscat.indexes也得以用那种办法检查测试
8)在表中运维runstats有二种用户访问选项:allow read access,allow write
access(暗中同意)
九)九.伍从前的runstats之能在单区(单个数据库分区)举行总括,所以若是还是不是在装有数据库分区中平等发布,那么会师世总计新闻不均等,就要在runstats在此之前每种的对一1分区之间重新分发数据,用这么些命令:redistribute
database partition group
十)db二rbind能够用于重新绑定数据库中持有应用程序包,使用 db2 flush
package cache
dynamic删除程序包缓存器中有所当前缓存的动态SQL,并强制隐式的编写翻译一下请求
11)stat_heap_sz是代理个人内部存款和储蓄器的一有的,钦点了runstas计算的全部内部存款和储蓄器堆的最大值,运营是分配,完毕时释放,最棒是能增大其值
1二)当定义了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 ,表达专门的职业负荷限定在1/10下
13)在自动化总结信息配置从前,要透过运维sysinstallobjects存款和储蓄过程创设查询反馈库,即在设置auto_stats_prof
on,auto_prof_upd on之前,要用call
sysinstallobjects(toolname,action,tablespacename,schemaname)
1肆)在利用runstats对特定表和目录进行时,必须选用完全限定的表名和索引名
1五)收罗布满式总括音讯: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边做计算新闻,边创造索引边计算信息
一柒)重组表要比runstats总括新闻时间越来越长,能够先奉行runstats绑定程序包总结信息,即便未有革新能够再拓展reorg
18)v八在此以前只可以离线重组,v八之后能够共同也能够离线:钦赐了选项inplace正是一起重组,暗许是离线脱机重组
1玖)有关心珍视组的速度音信将记录在数据库活动的历史记录文件中,能够用db2 list
history命令张开,也足以用表快速照相来见识重组进程(db贰 get snapshot for table
on db,不关怎么着设置数据库监视表开关,都会记录表重组监视数据
20)假如系统实行的崩溃苏醒且进入替换进程,那么肯定要使重组表操作完成
二壹)脱机表重组要求将别本复制到一时半刻表空间,但在线重组表不会
2二)联机表重组会创立三个.OLTucson的二进制的公文记录重组时要用的新闻,如:LSN
重组项目,下个腾出的限量,索引标志,是为了有限支持数据集群依旧回收空间等
二叁)联机表重组包含八个品级: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
二7)联机重组索引,就算钦定了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会对应用程序在举办前进行绑定,绑定和依据总计音信和数据库对象创立二个程序包,那一个程序包正是实行安顿
3二)所以借使进展了总括或是重组,那将在重复张开rebind
33)runstats > reorgchk > reorg > rebind/db2rbind > runstats
循环
3四)syscat.packages表中的valid值标记当前的程序包是不是可用,如若是X值,就意味着当前的次第包是不可用,那么就必要再行绑定
3伍)db贰diag.log 错误日志,db二inst1.nfy布告日志。那五个必要平时检查
3陆)DMS表空间的结余查询是用,db二 list tablespaces show detail
,SMS表空间对应的容器用操作系统查看剩余空间df -k 
叁7)DB二有无数工具用于监察和控制数据库和实例活动 举例:snapshot monitors/sql
snapshot函数 ; event monitor ; sysibmadm动态质量试图
38) db二 list utilities show detail 能够监察和控制 LOAD ,BACKUP ,RESTORE,
RUNSTATS

================================================================================================================
第十2章 数据库常用工具
一)db二cfexp ,db二cfimp 实例配置新闻导入导出
贰)db二exfmt,db二expln是用来查看已搜罗并写入解释表(explain_instance)的周详解释多少
叁)visual explain查看特定SQL语句选用的拜访布置的图形化表示GUI解释工具
四)timeron是db2优化器使用的壹种基金衡量单位,用于总结查询完全推行所需的年月和能源数量
伍)访问铺排是db贰用于试行db二语句的不二秘籍和步骤,那是独具可用解释工具展现的音信
六)syscat.packages是用来囤积数据库中的以程序包的方式的拜访安插
7)查看静态SQL,动态SQL用 db2expln
八)db二exfmt是直接处理已采撷并村混在表明表中的公正无私讲明多少或表明快速照相数据,输出是依靠文本的报告
玖)db二advis索引设计工具,测试若是成立了目录,SQL推行开销能够加强多少,
10)使用db2advis第二步是要采访和讲述提须要Design advisor的行事负荷
1一)db2batch
是1种标准测试工具,是以一组sql和xquery语句作为输入,动态的预备语句的实行时间,并回到结果集
1二)db二dart
数据库一致性检查工具和修复工具,那一个实用程序会直接从硬盘中读取数据库的多少和元数据开始展览相比,因而不能对具有运动一而再的数据库运维该工具
一三) db二look
能够提取数据库定义语言DDL;生成缓冲池,表空间和数据库分区组信息 ;
创立数量定义语言DDL
;搜集数据库子集的计算数据和DDL。以及用db贰look来营造立模型拟测试数据库

条件搭建

(1)DB2Client

DB2 客户端:DB2 v9.1

设置完毕后,可以透过cmd命令行查看 DB2Client 相关音信:

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

在初阶一直运行 db二cmd 来运维 db2cmd.exe 运维 db二命令行程序,施行 db2:

图片 1

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

db二命令行连接数据库

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

再凭 用户名和登录密码 就可以访问数据库了。在那之中,DB二 数据库暗中同意端口是
伍仟0。

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);勾选以管理人身份运营程序,就可以消除。

具体操作

透过 db2下令 连接到数据后,在 Quest Central
首页会展现已一而再的对应数据库的连日结点。

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

14)

第8三章 v10.一的新特色 

基础运用

事先多是用 SQLServer,初次操作 DB二数据库,虽说语法多数接近,依然各样不顺手。

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

  • 牛新庄
    -《绳趋尺步DB2》《长远解析DB二》《DB二性能调节与优化》
  • 《DB二 Express-C 急忙入门》

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

四个服务器能够建多少个实例,2个实例下得以建四个数据库,一个数据库能够分包多少个表空间。

多少个注意事项

  • 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二 中的 三 种尖端用法:

(壹)复制表结构

CREATE TABLE new_table_name LIKE table_name; 

(贰)创立结果表

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,但它完全能够当表来用。 

删表

(一)删除单行数据或批量删减数据:方法2比办法一性质好

// 方法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 PRESE奥迪Q7VE ROWS
表示commit后仍旧保留表中的数据。之后,一时表能够用作是普通表,查询、联表均可。

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

有关session暂时表调节选项 ON COMMIT PRESECRUISERVE
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性索引保障数据的唯1性

缺点:

  •  额外的贮存空间
  •  索引成立和有限支撑的耗费时间

总括消息

数据库对象的总结参数音讯,如表的数据量大小、占用的页数、表的行数、索引的情事和所在的分区意况等。

3个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及半连连等、多表间的连天种种选取

有关多表间连接的相继选用难题:

不论是在平等条SQL语句中包涵了不怎么张表连接,同目前刻只有两张表举行连接,但多表间的连接各类也是调控品质的基本点缘由。数据库对于表的逐一的选用,依照多个表之间连接后得出的行数实行排序,假使总括音讯与实际意况不是比较大,有十分大或然会形成由于总是各样不当而导致的属性难题。

相关音讯请参考:DB二施行安插浅析

对此有些复杂的SQL,提出利用
Quest Central 中的 SQL Turning 成效,相比直观。

SQL语句实行布署的其余查看方法:

(1)db2expln

db二expln实施布署分为三片段:

  •  当前征集实践安排的话语
  •  奉行安插详细消息
  •  施行安排图:从下往上,从左往右,遵照号码从大到小的依次实行阅读

在cmd命令行运行 db二expln
命令,能够查看该命令的施用帮忙。

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

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

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语句间的相间符

参考:动用 db二expln 的 DB二SQL性能优化示例

(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
是应用程序是用以db2服务器交换的驱动,当八个讲话被驱动后,会打成二个网络包发送给数据库

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

叁)查看db2版本下有哪些实例: db二ilist

四)假如db二stop
force不恐怕截止实力,db二start比极小概运转,能够施行db二_kill强制终止全体分区实行的长河,然后实践ipclean ,重新开动数据库时,做崩溃恢复生机

5)db贰 get dbm cfg 观望的是sqllib目录下的db二systm这一个文件

陆)db二 list db directory /catalog databse
观望编目标是/sqllib/sqldbdir/sqldbdir那个文件 ,那个和node
是同1的(node要创制才有)

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

??8)难道说补丁的底蕴上不可能打补丁,一定要有根基版本 ? qa

九)表空间容器的相干音信方可由此list tablespace containers for tbspid show
detail

拾)用db2pd -d <dbname> -tablespaces直观展现表空间的配置新闻

11)list tablespaces相比较,get snapshot for
tablespaces音讯要到家,举个例子自动积累和表空间map音讯

1二)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),那里有好几要证实:
九.柒此前新加的门道不会被表空间立时利用,唯有已有囤积路径文件系统满了,才会利用新扩展的门路,而且不得不扩大不能够去除。九.七自此就可以对机关积攒表空间施行rebalance操作就能立即利用这一个蕴藏路线

一3)DMS中动用add扩张容器会再次rebalance,影响属性 ,

14) DMS中采取begin neww stripe set
选项是当已有容器已用完后,再使用新添的容器,于add容器不一样,该选项不会rebalance,但会促成数据偏移

一五)db贰pd -d tomdb -storagepaths 查看存款和储蓄路线(数据库等级)

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

一七)对什么表做rebalance ,哪个表就有新扩展的渠道咯

1八)能够从DMS改成自动处理表空间(展现的用上选项alter tablespace tbname
managed by automatic storage)

19)如何删除二个在数额库级创制的容器,表空间已经rebalance,容器路线已经rm
-rf掉了 ,db二pd -d dbname -storagepath查看未来是drop pending? qa

20)quiesce能够对表空间锁定,幸免别的用户对表空间的表数据进行更动db2quiesce tablespaces for table db贰inst一.t1 share /【reset】

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

2二)SYSIBM.SYSCAT,SYSIBMADM,SYSSTAT那多少个种类方式对相关对象进行分组

二三)syscat.schemata这几个视图用来查看数据库创立了哪些形式

2四)decimal(p,s)p是数字的总位数,s是小数位
;假诺不点名准确的位数就根据decima(5,0)来代表

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

二⑥)constraint只是约束名称 ,在那之中外键约束须要名称,检查约束需求名称

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

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

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

30)在根节点上找到大致对应的数值范围,然后经过那一个界定指针知道叶节点对应的数值,然后在数值通过TucsonID偏移找到相应的行音信

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

32)唯有创设了唯一索引才具选用include这几个选项进行两个字段的询问

3三)db二 describe indexes for table tablename show detail
命令查看三个表是还是不是有目录,在哪些字段上成立了目录,以及索引的门类,也得以通过syscat.indexes采用字段查看索引

3四)怎样更动暗中认可使用的表空间? qa

3伍)有多个办法消除类别唯1:generate_unique , identity , sequence

3陆)唯1系列号:generate_unique函数是db2最早选择在表中生成唯一值的主意(bit
data)

db2 create table tablename(columnname char(一三) 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.

3陆)sequence是db2的二个对象,用选项nextval for seqname抓取下个值,prevval
for seqname抓取上个值 用法:db2 create sequence db二inst一.my_seq as
bigint start with 一 increment by 一 no maxvalue cycle cache 十0 ;
当中cache 100是指
九十八个优先算出来的队列存在内部存款和储蓄器中,当要读取的时候一直从内部存款和储蓄器里面拿,所以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是db二对象,于表非亲非故,能够在任何数据库总使用

###############################################################################################################################################################################################
 
存款和储蓄过程(stored procedure),函数,LOB,tirgger,自增字段(indentity)
这个未有学
###############################################################################################################################################################################################

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

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

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

4二)cursor游标只协理LOAD,不必要中介就能够在表和表之间迁移 :declare
mycursor cursor for select c1 ,c贰 ,c三 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”

44)load跟import不均等,import依然实行insert,update,delete操作,要求证明约束和触发器,通过工作日志记录变化。而load不是一行行的导入,而是格式化数据,不必验证约束和触发器,日志也很少,适合大批量数量导入。

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

四六)
load除了是非唯一键的表只有load装载这么些操作,只若是有唯一键的表(唯一索引)将在开展营造,删除,索引复制别的3个阶段,可因而db二diag.log查看各种阶段步骤

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

4八)含唯壹键的load进程:load(不经过db二引擎将文件分析成物理存款和储蓄形式,无效数据足以放在转储文件)
> 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(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壹),相当表(t1_exp),转储文件(t壹.dmp) 

50)在实际中假若能担保唯1键没有重复值的话,能够毫不创立丰盛表

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
archlogmeth1 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 ~]$ db2 restore db sample taken at
二〇一四040414375一                               《《《《《《苏醒数据库
[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
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
其间第贰个字段 四代表load备份,0代表数据库备份

5陆)除了copy yes, copy no 还有1种load 选项 nonrecoverable
,这一个选项能够在load之后不备份表空间,立即能够利用表,但是这一个表在后头急需备份前滚的时候不能够被还原(时间点在nonrecoverable这一个动作之后),纵然必要还原就要重建表或对数据库实行load点之后的备份

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

58)对于load装载阶段会将不符合表定义的输入数据放入转存文件,将违反唯一约束放入格外表,那么违反完整约束和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约束记录下来

六一)演示进度:
[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”       
《《《《《《对t2开始展览反省,并采取拾分表  
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 状态的表

陆五)db2 set integrity for t壹 off no access cascade immediate
《《《《《《对表t1安装为set integrity
pending状态,不容许访问,同时他的依赖表也高居set integrity pending状态

6陆)db2 set integrity for manager foregin key, employee check immediate
unchecked
《《《《《《对表manager的外键和employee的检查约束检查,并将该表脱离set
integrity pending状态(确认保证未有背离约束的图景下得以那样用unchecked)

陆7)假诺表处于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 ~]$ db二 “create tablespace ts3 pagesize 八k
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 ~]$ db二 load query table
t一《《《《《《查看表状态 load pending 
Tablestate:
  Load Pending
[db2inst1@oc6162546036 ~]$ db2 “load from /dev/null of del terminate
into t1″《《《《《《使用terminate选项
[db2inst1@oc6162546036 ~]$ db2 load query table
t一《《《《《《查看表状态
Tablestate:
  Normal

6捌)从客户端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(壹,三)代表截取导入数据的壹列和叁列 

7二)要导入的数量比表中的字段少,和字段多一致,DEL的格式用method
P(壹,9玖,2),利用9九创制叁个null值就足以了

72)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 seq一 restart with
四”《《《《《《重设起首值,alter sequence seq壹 restart with counter+1
[db2inst1@oc6162546036 ~]$ db2 “backup database sample tablespace(ts三)
to /home/db贰inst一”《《《《《《表空间不可用,做了备份 
[db2inst1@oc6162546036 ~]$ db二 connect to
sample《《《《《《重新链接db
[db2inst1@oc6162546036 ~]$ db2 “insert into test二 values (nextval for
seq壹,’bbbbb’)”《《《《《《插入下个值
[db2inst1@oc6162546036 ~]$ db2 “select * from
test2″《《《《《《开掘成为了1四,而不是4,那是因为在始发创立sequence的时候cache
10,当数据库断开,前十组数据(四-一三)会从内部存款和储蓄器消失,链接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/81九来转变数据库钦命的格式,暗中认可是1208 
[db2inst1@oc6162546036 ~]$ db2 get db cfg for sample |grep -i code
来查看,db2set db2codepage=1386来更改

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

7六)能够行使存储进度admin_move_table来进展表空间之间的迁移,那种在线的迁徙形式保险原表持续访问

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

78)db2move适用于db二move程序用来在八个数据库间的搬迁,适合区别平台,表数据量比较多,是import,export,load命令的卷入,将数据导出为pc/ixf格式

7玖)db二look能为对象表爆发表,视图,索引,函数,trigger,存款和储蓄进度等目标定义语句,db二look也能够抽出表的对象定义新闻,以及表空间结构

80)db2move无法迁移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>

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

八叁)db贰dart 功用十分强有力可以导出数据,

八四)ixf是贰进制自带结构的,del是唯有多少

八一) qa 倘使肆k页面,什么情状下表制造不了 行大小超越了四k 。。。。
############################################################################################################################################################################################### 
identity数据导入,lob数据导入,换行导入没学
############################################################################################################################################################################################### 

八二)三种情景的上涨:苏醒+前滚 ;
苏醒工作日志和崩溃苏醒(数据保持壹致性)

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

8四)崩溃复苏:redo提交到内部存款和储蓄器缓冲池还没写进磁盘,undo还没交给的,缺省情形下崩溃恢复生机是全自动推行不需求人工干预,

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

八六)db二选择写日记优先算法,先写日记,再写多少,写多少的长河是异步的。日志是不举行别的不是大意数据更新操作的,比方查询就不要求记录到日志内,以及日志只记录操作发生地点,时间点和上下的数码变化,比如不必要记录sql语句和发命令的用户account 

八七)数据流二种方法总计,那二种能够Infiniti制转移
    LSN(log sequence
number)记录所在日记文件在磁盘中的真实的职位,用十陆进制表示
    LSO(logical stream
offset)记录真正的数码,不包蕴日志文件的各个头消息

8捌)外部的日志命令和垄断文件都分布选用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 都以由那几个文件掌控

玖三)db21日志原理,写日记的先期算法,先写日记,在写多少,当崩溃或前滚复苏时候,供给将日志文件写回到数据盘,保险db2数据库的1致性,db二十四日志最终都留存日志文件中,在内部结构上,每一种日志文件由局地日志构成,每一个日志也包行一些日记记录,种种日志记录同LSN记录,但苏醒时,db二必要掌握从十二分LSN初叶,那正是min(MinfuffLSN,LowtranLSN),以及移动日志一定毫无删除,不然会down机
壹致性正是过来前滚到1个时间点,这么些时间点会将送交的数码写入磁盘,未有交给或早已回滚的时候都被注销

玖肆) 日志的深浅,主日志文件和赞助日志文件:日志文件个数
 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能够一向查看容器大小,假诺想查看里面包车型地铁多寡也,db2 list tablespaces
show detail
SMS由于每一个对象都挤占三个文本,能够总结SMS表空间容器汉语件的总大小
DMS自动积累管理表空间,只要自动积攒路线有丰盛的上空,满了以往会自扩
获得表/索引占用空间的不二等秘书诀
两种格局:
db2pd -tcbstats;datasize*页数(那种方法只限于被访问过的表)
admin_get_tab_info 表函数;
和sysibmadm.admintabinfo系统管理视图

玖陆)获取职业日志大小:(logprimary+logsencond)*logfilesiz*四k 
设置为数据库大小十-伍分一性能最好(用kbyte来计算比例),logprimary+logsecond不能够超过255,日志空间大小不能当先25陆GB.
对logprimary和logfilsiz参数的改观供给断开链接才具立见效用。而logsecond的修改会立即生效,logsecond日志文件使用完后不会马上删除,而是在颇具连接都断开仁同一视新连接的时候才会去除

97)日志满:SQL0玖4⑥C ,事务会回滚

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/

9玖)若是急需对创立日志镜像文件
,能够通过mirrorlogpath设置日志镜像文件,将日志存在三个地方

100)循环日志,主日志用完职业提交到磁盘,能够另行行使那些日志,当主日志全体分红出去,并且都没交给到磁盘,则采取分配扶助日志来持续日志,协理日志分配完没交给到磁盘,系统报错SQL09460C

十壹)
归档日志,日志壹旦写满就归档(不管是或不是commit或然写入磁盘,归档日志还足以是运动日志,包含没交给的数目),系统会复制写满的日志举行重新利用(假诺日志是移动的那么会用协助日志,假设是非活动,那么就会复制)

拾二)归档日志常用选项:db二 get db cfg for sample using logarchmeth壹disk:/archlogs

拾3)创制数据库默许是循环日志,更换成归档日志要求离线完全备份,不然会报backup-pending状态

10四)循环日志多用于OLAP
数据存款和储蓄的查询,并发,多维,帮助rollback,崩溃复苏,backup/restore,但不能够保存日志,不援助前滚
    归档日志多用于OLTP 交易系统,能够在产出难题时,第2时半刻间恢复

拾伍) DML(data manipulation
language)是数码垄断(monopoly)语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字如出1辙,这四条命令是用来对数据库里的数量进行操作的语言。

    DDL(data definition
language)是数量定义语言:DDL比DML要多,首要的下令有CREATE、ALTE汉兰达、DROP等,DDL主假诺用在概念或退换表(TABLE)的布局,数据类型,表之间的链接和平条目款项束等开端化工作上,他们大都在成立表时使用。

   
DCL(DataControlLanguage)是数据库调整语言:是用来安装或改变数据库用户或角色权限的讲话,包涵(grant,deny,revoke等)语句。

拾陆)监察和控制日志使用意况:db2 get snaphost for database on sample 

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

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

拾8)事务日志满的意况(SQL09460N) :
事务太大,能够加大logsecond大小,logprimary大小
logfilsiz大小。能够考虑用load from /dev/null of del replace into
tbname(这种格局能够不用记录日志)
                               
事务小但没交给:使用快速照相查看最早事务应用程序(appl id holding the oldest
transaction),抓取应用快速照相:db贰 get snapshot for application agentid
22八

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

11壹)在线备份中的include
logs是把日记一同打包在备份介质,是为着在另1台机械方便卷土重来前滚,当中在线备份中的include
logs是可选,但貌似情状下都以丰硕这几个选项 
例如:
db贰 backup db sample online include logs 在A机器上做在线备份
db二 restore db sample from /data壹 taken at timestamp logtarget
/data/logs 把介质传到B机器上做通过logtarget将日志恢复生机到2个点名的目录
d2b “rollforward db sample at the end of logs and stop overflow log
path(/data/logs) 在B机器上通过overflow log path复苏的日志做前滚苏醒
若是不想过来数据库只想过来日志使用logtarget:db二 restore db sample logs
from /data壹 logtarget /data/logs

112)能够查阅恢复施行各种:db贰ckrst -d sample -t timestamp -r database

113)倘诺要利用增量备份:db二 update db cfg for sample using trackmod on

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

1一五)db二ckbkp -h image(介质)查看备份介质正确性

11陆)db二帮助三种苏醒:崩溃复苏,前滚苏醒,版本复苏

1一七)私下认可情形下崩溃苏醒是暗中同意(autorestart on),不供给人工干预

11八) db二各种备份介质就是四个本子(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)

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

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 ~]$ 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 ~]$ db贰 “restore db sample
tablespace(IBMDB二SAMPLEREL) taken at
20140413153752″《《《《《《表空间复苏
[db2inst1@oc6162546036 ~]$ mkdir droppedtablerecoverytest
[db2inst1@oc6162546036 ~]$ db2 “rollforward database sample to end of
logs tablespace(IBMDB二SAMPLEREL) recover dropped table
00000000000053四三千6000a to
/home/db贰inst1/droppedtablerecoverytest”《《《《《《利用历史文件的表定义,能够查看到backup
id ,和使用的tablesapce .在前滚的进度中校表数据导出到三个索引里
[db2inst1@oc6162546036 NODE0000]$ cat data《《《《《《
10,”tom       “
[db2inst1@oc6162546036 ~]$ cat
creatt叁.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.

1二肆)前滚苏醒壹旦实现就会扭转新的日志链,之后时间的日记将永远的不能被苏醒,被去除了一度
例如:
 
1二伍)前滚复苏有四个选项: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

127)使用db二 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
参数搜聚数据布满(1种是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

135)要是实践大数据量的总括新闻采集时,相会世sql2310n
使用程序无法生成总计音信,那是能够运用抽样总计

13陆)runstats计算的结果是保存在sysstat.tables 和sysstat,indexs,
不提出修改

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

138)runstats使用举行:

*当表数据量产生巨大变化的时候,如通过load加载大批量数额或reorg后,或增添的新的目录,建议runstats
*有空的时候试行runstats
*表一点都不小,或表数据频仍转移,能够想念在某个字段上runstats,而不是成套字段,
*表异常的大,总括时间相当长,能够思虑抽样计算
*进步能够用性,能够私下认可使用allow wirte access
*系统表也要平常做runstats
*为压缩音讯不1致的情事,思索同时在表和目录上同时实行总括信息搜聚
*总计完消息要发出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比例超过三%,就要求对表举行重组
[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的诀窍,创造一份原始数据别本保持原表可读(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.

1四陆)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会记录日志)

1四7)在线reorg表比离线reorg慢诸多,因为在线不会创制数量别本,分批次重组,每趟唯有1部分数目

148)在线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 施行落成,不然执行脚本里的下3个表重组
,个中db2reorg是一个使用进度,能够断开

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

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

152)对于在线重组,要保持足够的日志空间,同时要保险 util_heap_sz
数据库参数的值丰裕大

一5叁)bind(绑定),是将C程序中的DB二 SQL
语句经过编写翻译(prep)绑定到db二的package中,package中隐含了各样SQL语句的走访安插,以往实行那么些C程序时,就会听从保存的package的拜访安排执行SQL语句
那就是说rebind正是重复绑定更新试行计划。rebind一般都对静态sql
(事先已经在package里面)绑定,存款和储蓄进程也是在package里面,所以rebind也同等适合

154)逻辑空间可能低于物理空间(物理空间是分配过未有自由的,实际占用的空中是逻辑空间),总计表空间尺寸的时候是用情理空间),reorg可避防去那种景观

###############################################################################################################################################################################################
###############################################################################################################################################################################################
15伍)隔断品级只限于读锁

156)私下认可级其他CS能够在程序级,语句级,事务级设置

157)肆中隔开分离等级:
U中华V(uncommited read):读的时候不加锁,能够读到未提交的多寡
CS(cusror stability):读到哪行,哪行就加锁,读完以往就释放锁
TucsonS(read stability):把询问的结果行,全体都加锁
CR-VRAV肆(repeatable stablility):把读过的行,全部都加锁

一五7)表锁在暗中认可景况下db二不会试行强锁(s u x z ),唯有通过lock table 或
产生锁进级的时候才会在表上狠抓项目锁情势,弱类型锁首要是协作行锁使用,在收获行锁以前一定要有表锁(IN,IX,IS,SIX)
    
15八)db二pd是锁的监察好工具,因为不必要锁定引擎能源,对系统开支小,格式上也正如直观

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锁中间的锁,一般用来”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     

16叁)W 和 NW行锁
是有目录的时候才会用到,S和NS是区别隔绝品级下读锁的格局,在CS 和
安德拉S隔开分离等第下是NS锁,在XC60帕杰罗隔开分离品级下是S锁

16四)在获取行锁以前,要收获这几个行所在表的最低表锁,倘若要询问某些行,那么便是对表有读的意图,供给先的到表的图谋读(IS),假如是增加和删除改某行,就是有意图写(IX)

165) 行锁的s和x模拟: 
锁窗口的观看能够观看,有1个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),正是由行锁替换为表锁,释放内部存款和储蓄器能源的长河
(行锁升级为表锁),能够采用db二diag.log查看
     锁调换(lock conversion)是锁的方式转黄,比如NS锁转为X锁
(弱型的锁转向强类型的锁)

16七)db2用locklist和maxlocks出发锁进级,locklist用来调整各个数据足以采取最大锁内部存款和储蓄器;maxlocks用来决定每一种应用能够攻陷的锁内部存款和储蓄器百分比,在多用户并发系统中,此参数的目的是限量有些应用占用过多的锁内部存款和储蓄器,锁晋级产生的规格包括:
锁内存超出了locklist大小
某些应用使用的锁内部存款和储蓄器空间达到了locklist * maxlock%
发生锁进级时,会在db二diag.log 中记录锁晋级的详细新闻。
     

16捌)判定锁的标题应运而生:
*系统响应慢,吞吐量低,cpu使用率低,磁盘空闲
*应用程序重返错误 SQL911
*透过常备监督工具,如快速照相监察和控制和事件监察和控制 ,那一点是拔尖源点db二 get
snapshot for db on sample |more

16九)锁是一下子的,某一随时或然监察和控制到诸多锁等,而另1每日只怕早已放出,所以必要经过脚本推行数13回(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)对锁的监督检查,就算锁快速照相也得以取得锁的音信,但大家依然提出用db二pd,锁列表能够直达几百m
,而且锁快速照会见对db贰内部数据结构加上中间锁,以保障自身独享内部存款和储蓄器,而db2pd不须求占用内部锁

17二)db二pd具备一定的局限性,无法确认保证一定能抓取到引起锁等的SQL语句,db二pd只好抓取到目前和上3个的实行语句(C-AnchID/C-StmtID)(L-AnchID/L-StmtID),假若2个作业增加和删除改操作之后,又进行了往往读的操作,那是db二pd抓取的结果就不是当真占有锁的SQL

17三)玖.五版本假若选取db2pd无法抓取到引起锁等的SQL,那么可以locktimout的值间隔设置小片段,然后用v玖.伍提供的db二_capture_locktimeout注册变量来抓取

17四)九.5从此 假设想要用+C 那几个选项,首先要翻看那个布局参数(CU陆风X8_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在此以前的多寡无需等待,3个政工做insert但未提交,另个工作读取是会忽视新插入的数目,无需等待。那种机制是经过其内部的日志来确认保障工作一致性,即在行锁上面扩展3个标记(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                                 = 一  
《《《在快速照相须臾间发生锁的次数
提姆e 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    《《《几个锁爆发升级(db二diag.log查看)
Exclusive lock escalations                 = 0     
Agents currently waiting on locks          = 0
Lock Timeouts                              = 一   
《《《爆发锁超时的次数
Number of indoubt transactions             = 0    
《《《正在等待锁的利用

对于快速照相监察和控制锁,一定要在有些时刻内分析才有含义

176)锁超时
因为db2pd抓取SQL语句的才能容易,所以大家得以用那几个注册变量:db二_capture_locktimeout来有效的抓取死锁和锁超时,还需同盟创制deadlock
event monitor才干科学完好的抓取锁超时的连锁新闻(适用于九.五上述)
[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 ~]$ db二 “create event monitor deadlock for
deadlocks with details history write to file ‘/home/db2inst1/locks'”
《《《创制死锁监察和控制器
DB20000I  The SQL command completed successfully.
[db2inst1@oc6162546036 locks]$ db二 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 (玖.伍本子)
模拟:
先是个窗口:
[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只可以用二次 

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
能够把前1个参数改成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=1 张开监察和控制开关

180)因为用了未格式化的表,所以须求分析,解析方法包罗java程序和存款和储蓄进度(略),如下:
[db2inst1@oc6162546036 jdbc]$ cp db2evmonfmt.java DB二EvmonLocking.xsl
/home/db二inst一《《《在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 db二inst一 -passwd >
db2locks.out
《《《出现锁等,锁超时,死锁的时候,就能够使用刚编写翻译的java程序对未格式化的表举办剖析,当中ue
<table>钦命未格式化的表名,-ftext将出口格式化为文本文件,-u
-p钦赐用户和密码

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

18二)假设不能够从利用规模改动隔断等级(U宝马X5>CS>福特ExplorerS>Sportage奥迪Q五,隔离级越低,并发越好),能够经过sql语句级通过with设置隔绝等级:select….from…with
U卡宴 表示通过U奥迪Q5隔开分离等级查询数据

1八三)有如此七个锁参数能够减掉锁的行数,升高并发
[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或EscortS隔绝级别下,假使插入的行未有提交,那么别的三个应用程序扫描时会处于锁等,但1旦用了这几个参数,则忽略未提交的新插入数据
DB2_SKIPINSERTED:跳过删除行,在CS或福特ExplorerS隔开品级下,假诺剔除的行并没有付诸,那么其余一个应用程序扫描时会处于锁等,但只要用了这么些参数,则如果那多少未有删除

末尾三个参数其实在某种形式方面是脏读,要小心使用

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

1八4)db2 提供了数不完监察工具,首要分为:实时监督检查和追踪监督检查

185)实时监察和控制记录数据库某3个时时的快速照相音信:snapshot,db二pd,db2top和9.7本子的in-memory
metrics等工具,就好像相机
     追踪监督检查提供了更详实的数据库活动:事件监控器和九.7版本的activity
monitor,事件监察和控制器或许会时有产生很大的数据量

1八6)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
    

1八七)snapshot监察和控制命令比较轻易,分析结果才难,监察和控制的结果是由一些监察成分结合:
计数器(counter)用来囤积攒计值,举个例子自运维以来发生的总排序次数(total
sorts)死锁个数(dead locks)读的行数(rows read)
计量/刹那时值(gauge):记录某些监察和控制成分的脚下值。举例当前发出的次数(active
sorts),当前锁的个数(locks).
高水位(high water
mark),记录1个监督检查成分在开发监控器按钮最大的值或纤维值。
一般说来要求开始展览反复的抓取来分析壹段时间内的数据库活动,能够用脚本

18八)为了更加直观的查看snapshot的辨析结果,v玖之后能够用snapshot管理视图查看,那么些视图与snapshot命令行是对应的
[db2inst1@oc6162546036 ~]$ db2 list tables for schema sysibmadm|grep
-i ‘snap*’可查看
小心:snapshot管理视图须求将实例监察和控制按钮打开,不然不能够抓取所有快速照相,在会话级设置无效。db2reset monitor all 命令只对snapshot命令生效,对处理视图不起成效

189)db二pd不须要db二内部锁(latches)和内燃机能源再次回到监察和控制数据,因而进程更加快,质量更加好。db二pd直接调用shmat链接到数据库与实例的共享内部存储器,不许要树立到数据库的链接,db贰pd基本不会对系统形成强烈的震慑

190)db二pd工具包蕴大气公然与未公开的参数,若是须要越多消息,能够选拔db2pd-everything获得许多当面包车型地铁音讯

1九一)db二pd在分区数据库能够运用dbp参数来钦点分区:db二pd -db -sample -dbp

1九2)db二pd常用参数:

db二pd -db sample -appl,该参数列出数据库中当前连连,那一部分新闻一致db二list applications show detail的输出
db二pd -edus ,EDU列表,即引擎管理单元(engine dispathched unit)
,用来监察和控制edu的cpu总消耗量,要是急需运用该命令检查实验特定期期内的cpu消耗,则须要做差,给定时期的起初和休息总计差量
db2pd -edus
interval=三,仍是可以使用interval参数来得到时间段内的cpu消耗量,user delta
和 sys delta
列是用户cpu和系统cpu对于该线程的消耗cpu时间差,那样就不须要手动总计
db2pd -osinfo,操作系统音信
db二pd -bufferpool,缓冲池新闻,该参数要开垦bufferpool监察和控制器开关,
db贰pd -db sample -logs,日志音信
db贰pd -db sample -tablesapces,表空间新闻
db2pd -db sample -locks,锁信息
db二pd -db sample -agents,代理消息
db二pd -db sample -static |more ,查看系统中存在的静态语句包信息
db二pd -db sample -dynamic,该新闻包蕴数据库的包缓存中具有动态sql,
db二pd -db sample -tcbstats,表情状消息

1玖三)db二top的规律正是在后台各样一段时间搜集一遍快速照相,然后经过测算其与目前三回快速照相以前的数目差距于经过的时光,总括出某个列总结数据胡
db二top主要有八个功效:
实例检查评定系统
捕捉历史快速照相音信,
事实上db②top对品质进一步在分区数据库上会影响系能,因为从没点名的话,会对全局做快速照相,占用内部存款和储蓄器
相对于db二pd, db2top是抓取快速照相音讯,所以供给开采监察和控制开关,db二pd
是从内部存储器结构中抓取,不须求监察和控制按钮

194)db2top -d sample

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

1九五)dba达成数据库安全布置:身份申明(authentication);权限(authorizaiton);特权(privilege)

1玖六)db二 server
数据库服务器是数据库实际所在机器(在分区数据库系统上可能是多台机械)
    db二 client
数据库客户机是对服务器上的多寡推行查询的机械,那个客户能够是本地的(驻留在与数据库服务器同样的大要机械上),也足以是长距离的(驻留在单独的机械上)

197)authentication决定了db2客户在怎么着地方开始展览身份认证

1玖八)v玖能够依附分歧必要来设定认证机制,举例是实践实例连接和实例级操作,依旧只是连接数据库都有例外的参数钦点
[db2inst1@oc6162546036 ~]$ db2 get dbm cfg |grep -i ‘authentication’
 Server Connection Authentication          (SRVCON_AUTH) = KERBEROS 
《《《廉洁数据库的申明
 Database manager authentication        (AUTHENTICATION) = SEKugaVESportage  
《《《连接实例的印证
这七个参数表达:用户在连接实例会用SELX570VE途睿欧,不过在再而三数据库时会用kerberos身份评释,要是在服务器上未曾科学开首化kerberos,但是提供了有效的userid和passwd,那么允许那个用户连接实例,可是分化意连接数据库。

19玖)服务器上每种实例仅允许1类别型的地位,也正是说,设置适用于该实例下全体的数据库
    客户机上编目标各个数据库具有本身的身价验证项目,用catalog database
命令中的authentication参数钦点:db二 catalog db test as test二 at node
db贰inst一 authentication server 

200)authentication是
sever的时候,在当地连接的话不供给注解,即便是长途连接的话,须求将服务器上的db二user和db二passwd通过互联网发送给服务端
    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

20一) 遵照权限(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) = 

九.7自此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权限 

20三)db2 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 db二grp一《《《也能够给三个组,同样那个命令只有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

20六)于实例级权限相似,可以利用命令语法grant/revoke :db2 grant insert on
table test to user tom ;db二 grant select on table test to group
db贰grp1

207)从 DB二 V玖.一 先河,CREATE DATABASE 命令语法扩展了 RESTEvoqueICTIVE
选项。借使该命令中包含了 RESTCRUISERICTIVE 选项,那么会招致 REST宝马X3ICT_ACCESS
数据库配置参数棉被服装置为 YES,同时不自行赋予 PUBLIC 任何特权。若是大意了
REST路虎极光ICTIVE 选项,那么 REST奥迪Q五ICT_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权限

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.t三

[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)认证>>权限(实例,数据库)>>特权(对象)

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

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

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

二)打补丁此前要做的策动干活
       :备份数据库配置消息和实例音讯:db2support . -d sample -cl 0 (-cl
0收罗数据库系统目录,数据库和实例配置参数,db2注册参数变量,这一个都会卷入到db二support.zip)
         备份packages :db2 list packages for all show detail >
packages.txt
         备份数据库的ddl语句 :db二look -d sample -e -l -x -o sample.ddl
         备份数据库本人数据:db2 backup db sample 
  补丁之后的专门的工作
         使用补丁的新性格进级数据库:db二updv10 -d sample
        
对工具实行绑定,path是绑定文件目录:例如:/home/db二inst1/sqllib/bnd (db贰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.

四)db贰在读写数据的时候,是跨容器按梯次写的,以有限协理读写功用,数据均匀布满

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

六)db二 create database dbname automatice storage yes on /dbauto dbpath on
/database,个中数据库表空间数据的门径是可以钦定的(例如个中的机关表空间路线/dbauto),数据库路线也是能够钦点的.
只有指定了automatic storage yes 才干内定自动积累管理表空间路线/dbauto

七)监察和控制表空间的点子:
  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在此以前的存档日志 

只要logarchmeth壹的值是logretain,这几个就要小心因为运动日志也在日记文件中,会误删

9)借使用户不想记录日志能够选择这一个选项:alter table tbname activate not
logged initially 

十)SUBSTHummerH二 第贰个参数是 字符串, 第四个参数 起头地点,  第四个参数  长度
比如第1个参数未有,默许到底