下边把利用进度中相遇的几个难点整治下,数据库和表空间的上升

近来,工作中一个种类的数据 Table 和 Stored Procedure 在 DB2
数据库,需求探访之。上边把利用进程中碰到的多少个难点整治下:

第七章:数据库备份与还原
(恢复的定义,db2日志,数据库和表空间的备份,数据库和表空间的复原,数据库和表空间的前滚,recover使用程序,数据库重新创设,监控备份恢复生机和出山小草,优化备份苏醒和恢复生机)
1) Redo
是指db记录了完毕的操作commite之后但没立马的写入硬盘,这年开机数据库会活动做写入硬盘的操作
2)崩溃苏醒(crash
recovery)是数据库的一个效应,使数据库达到同样的景况,能够回滚未提交的数目,重做已经在内部存款和储蓄器提交的数码。选项:autorestart
on ,以及能够利用db2 list utilites show detail或db2pd -until查看进度。
3)脱机是指在崩溃苏醒的时候表空间发出错误
4)祸殃复苏(disaster recovery),用HADEvoque功效来过来,原理
是将源数据复制到指标数据库幸免
5)前滚恢复生机要遵照启用备份何况启用了归档日志,恢复生机数据库时且不可能用without
rolling forward,数据库在平复操作结束时处于roll foward pending
6)前滚恢复分为:前滚数据库和前滚表空间
7)前滚表空间一般可以选择在日记中前滚至:日志末尾(to end of
log)和某些特定时间点(称为时间点过来)。一般二种情状用前滚表空间:表空间作苏醒操作后处于前滚暂挂状态(做rollfoward
database将日志应用于表空间)和崩溃复苏时遇上四个或八个表空间处于前滚暂挂(这种景色要先修复表空间,技能做rollfoward
database将日志应用于表空间)
8)前滚苏醒要启用归档日志效能,暗中认可是从未有过的
9)日志记录任何commit到磁盘的多寡,提交的数据redo ,未有提交的数据undo
10)日志只记录DML(insert,delete,update)
11)循环日志 有 主日志(primary log files) 和 协助日志(second log
files).循环日志只好恢复生机到备份点
12)活动日志(active
log)是还没写入磁盘的日记,三种口径任意二个规范化下就是活动日志:包罗尚未提交或回滚的事体音信;包罗已经付出但一直不写入磁盘的政工信息
13)logarchmeth1=off 是循环日志
14)logarchmeth1=logretain,userexit,disk:directory_name,tsm:managment
class name,vendor:libary name
15)日志总计:循环日志帮忙崩溃恢复生机和本子苏醒,归档日志协助除了前多少个外还可能有二个前滚复苏
16)备份不会去备份数据库管理器配置文件或注册变量
17)假诺是在线备份(backup online)那就必定要是归档日志
18)复苏(restore)数据库只可以是离线来做,这一个和rollforward
数据库是一致的条条框框
19)本地数据库目录 和 系统数据库目录都以同四个名字的文件夹:sqlbdir
20)表空间的重整旗鼓自然会有rolling forward的操作以达到一样的意况
21)能够选拔db2 list tablespaces show detail或db2 get snapshot for
tablespace on db查看minimum recovery time这一摘取
22)db2ckbkp -h 检验备份性息 db2ckrst -d dbname -t time 检查增量恢复生机
23)苏醒restore数据库的时候,容器的职务或称谓设备与备份时的两样,将要动用重定向复苏
24)drop是剔除表,使用drop之后表结交涉表的数量都会被去除,truncate 和
delete是删除表里的数目,但不删除表本身,truncate 和
delete比较,truncate要快非常多,但瑕玷就是不能够回滚,富含索引等都会成为起头值,数据就不只怕苏醒了
25)db2 select tbspace,drop_recovery from syscat.tablespaces
查看表空间的选项                    
26)drop_recover那么些选项不可能用在system temporary tablespace ; LOB ;
XML上
27)复苏删除表步骤:1)完整数据库备份2)restore在删除表此前营造的数码库级或表空间级备份image
3)检索已删除表的目的ID 4)rollforward 数据库 5)重新创设表
6)用前滚的数据库导入的多少导入到表中
28)rollforward 会使表空间处于不可访问的景况
29)历史文件db2rhist.asc
在db2inst1/NODE0000/SQL00001下边,及其备份文件db2rhist.bak
30)db2rhist.asc能够用list history来查阅哪
31)db2 list history backup all for db tomdb 列出tomdb的野史文件
32)prune histroy 命令管理复苏破坏了的历史文件
33)为了确定保证日志文件能够保留,可以动用backup db dbname online to
/backuodir include logs,保存日志在备份印象中的操作之能是在线备份
34)离线备份:earliest log=current log   而在线备份 earliest log <
current log 
35)恢复生机删除的历史文件:db2 restore db dbname history file 
36)可复原数据库重新建立:表空间备份可过来数据库,部分表空间备份可还原数据库,含有log文件的在线备份可复原数据库,使用增量备份重新建立可复原数据库,使用重定向选项重新组建可过来数据库
37)db2 restore db tomdb rebuild with all tablespaces in database taken
at 二〇一四0317130324 用表空间备份重新建立数据库(归档日志)
38)用表空间重新建立之后要前滚表空间,若无对号入座的备份影像都能在历史文件中找到技术奥迪Q5F,当中国和东瀛志文件必须要可用,假如不在数据库参数的Path
to log files里面,就要钦定日志文件位置(用overflow log path这么些选项)
39)[db2inst1@oc6162546036 SQL00001]$ db2 rollforward db tomdb stop
SQL1271W  Database “TOMDB” is recovered but one or more table spaces
are 
offline on members or nodes “0”.           qa:????为何复苏持续 
40)部分表空间重新建设构造数据库,除了重新建立,还要苏醒restore pending的表空间
41)可复原数据重新建立能够用任何备份,不可复苏数据库只好用数据库备份

(说实话,DB2 并从未 SQLServer 好用,也只怕自个儿是太小白了,有待于提高…)

42)0x0100 表示:restore pending 

第六章 数据移动 (export,import.load,db2move,db2look)
1)db2 “export to table1.dat of del messages table1.log select * from
table1”
SQL3015N  An SQL error “-1585” occurred during processing.
就算有记录不过会报错 
2)import 脱机导入(allow no access), 联机导入(allow write access)
3)导入格局有:insert,insert_update,replace,db2look
前三合乎对象表存在(协助的格式IXF,WSF,ASC,DEL),db2look适合未有目标表(补助的格式PC/IXF)
4)load有八个动作选项:insert,replace,restart,terminate

================================================================================================================
第九歌 基本监察和控制措施 
1)监察和控制工具备:快速照相监视器,事件监视器,db2pd工具,db2mtrk, activity
monitor等
2)快速照相监察和控制器是在对话等级改变:有二种格局改换:更换数据库的安排参数(db2
update dbm cfg using dft_mon_lock on)
,调用应用程序级的db2MonitorSwitches() API函数,也许进行update monitor
switches using [[SwitchID] on | off,…]
3)获得快速照相新闻:db2 get snapshot for dbm/database on dbname/locks on
dbname/sdynamic sql on dbname
4)重新初始化计数器:reset monitor for db dbalias,reset monitor all,
能够重新设置单个数据库,全局数据库,但不可能选拔性的对用快速照相监视器按键调节的例外监视器组重新初始化计数器
5)db2pd主假若监督锁
6)为啥快速照相监察和控制没有别的项,如:tablespaces ,dbm,tables
7)快速照相监察和控制的艺术:get snapshot for
8)利用函数监察和控制,不过要受控于监视器按钮 
9)利用视图监察和控制 sysibmadm情势名开首的视图
10)monitor switches 功效与单个数据库,dbm 是持有数据库,db2 update dbm
cfg 是总开关,monitor switches是小开关
11)event monitor是要为特定事件类型创建
12)db2evmon工具来格式化sql event monitor原始数据 
13)db2mtrk是用来监督内部存款和储蓄器
14)db2pd -version -osinfo查看版本 操作系统音信

================================================================================================================
第十章 运营数据库必得思考的数据库设置
1)db2 get dbm cfg show detail里面包车型客车Delayed Value 与Current
Value在在线配置的景观下,值应该是相等的
2)db2pd -dbptnmem能够查看数据库内部存款和储蓄器总结音讯
3)通信设置不可能一同配置(在线配置,包蕴注册变量,节点配置,端口配置);
  内部存款和储蓄器设置中instance_memory可以一同动态更新;
  self_tunning_mem单分区多分区DPF能够同步配置;
 
数据库分享内部存款和储蓄器能够共同配置(databse_memory,这么些内存分享配置取决于slef_tunning_mem
是ON的情况);
 
缓存池大小能够协同配置(IBMDEFAULTBP是私下认可的缓冲池,当syscat.bufferpools目录表中该缓冲的NPAGES值为-1是,db2数据库配置参数   
BUFFPAGE调节缓冲池大小,不然会忽略BUFFPAGE参数,并用NPAGES参数钦命的页数创立缓冲值);
 
pckcachesz可以一齐配置(程序包告诉缓存用来高速缓存数据库上的静态和动态SQL和XQuery语句的享有section);
 
catalogcache_sz高速缓存能够选择的数据库堆中最大空间(以页总结)能够一齐配置;
4)数据库管理器要求从磁盘I/O进行的越少,质量越好
5)BPH福特Explorer缓冲池命中率应该超过十分九(能够利用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这一项,不为0就要扩大:db2 update db cfg using catalogcache_sz
XX
8)locklist达到maxlocks时,数据库管理器会对应用程序挂起的锁定推行从行到表的锁定晋级
9)db2 event monitor
笔录下信息后用db2evmon -path 命令展开

1.db2 update monitor switches using lock on statement on

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

3.set event monitor lockmonitor state 1

最后
4.set event monitor lockmonitor state 0 

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

6 more sqltrace.txt

================================================================================================================
第十一章 平常运营保险 runstats,reorg,rebind,健检,数据库监察和控制
1)计算音信是记录各类数据库对象消息,并保留在数据库系统表目表中,优化器会依照那么些新闻选取最低的执行费用
1)db2运作的本金是指CPU花费(以指令数计)和I/O(以寻道数和页的改动数计),开销的单位是timeron,数据库总计音讯误差过大,就有非常的大希望产生性能难点
2)
静态SQL在runstats之后必要重新bind,因为在bind以前就早就规定,则会冒出计算新闻分歧的情事,但动态SQL就无需,因为动态SQL语句的访问攻略是基于总括新闻在运维是动态变化的
3)runstats就好像小车的GPS
4)  静态 SQL:静态 SQL 语句一般用于嵌入式 SQL 应用中,在程序运营前,SQL
语句必须是明确的,比如 SQL 语句中涉嫌的列名和表名必需是存在的。静态 SQL
语句的编写翻译是在应用程序运维前开展的,编写翻译的结果会积累在数据库内部。而后程序运维时,数据库将一贯实施编写翻译好的
SQL 语句,减弱运作时的支付。
    动态 SQL:动态 SQL 语句是在应用程序运转时被编写翻译和推行的,比如,使用
DB2 的交互式工具 CLP 访谈数据库时,顾客输入的 SQL 语句是不明确的,由此SQL 语句只好被动态地编写翻译。动态 SQL 的施用非常多,常见的 CLI 和 JDBC
应用程序都选用动态 SQL。 
 依照编制程序方法的两样,DB2 的应用程序开还是能分成嵌入式 SQL
编程和非嵌入式编制程序 :

    嵌入式 SQL 编制程序将 SQL 语句嵌入到宿主语言 (host) 的主次中,举个例子 C/C++
程序。因为宿主语言不识别 SQL 语句,先要对前后相继开展预编写翻译,把 SQL
语句转换为对 DB2
服务的调用,同等对待写源代码,最终再使用宿主语言的编译器对应用程序举办编写翻译。嵌入式
SQL 都急需被绑定到特定的数据库中,可分为嵌入式静态 SQL 和嵌入式动态
SQL。
    非嵌入式应用程序无需预编写翻译,且方法比较多,如
CLI、JDBC、ODBC、ADO.NET 等等,那一个情势中都动用动态 SQL。表
2列举了宽广的 DB2 编程接口。 
5)db2 reorgchk update statustucs on table all
对全表举办runstats,假诺有批量的多寡插入时候,就须求做runstats
6)对特定表的runstats,db2 -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(暗许)
9)9.5事先的runstats之能在单区(单个数据库分区)举行总括,所以只要不是在装有数据库分区中平等公布,那么见面世总括音讯不雷同,就要在runstats在此以前每一个的对各类分区之间重新分发数据,用这么些命令:redistribute
database partition group
10)db2rbind可以用来重新绑定数据库中负有应用程序包,使用 db2 flush
package cache
dynamic删除程序包缓存器中具有当前缓存的动态SQL,并勒迫隐式的编写翻译一下央浼
11)stat_heap_sz是代理个人内存的一有的,内定了runstas总括的装有内存堆的最大值,运营是分配,完毕时释放,最佳是能增大其值
12)当定义了runstats调治(thrittling,在那之中的参数util_impact_priority,util_impact_lim),而且该调节可操作时,runstas平日会话费更加多的时光,但对生育系统影响很小
例:db2 runstats on table tablename and indexes all util_impact prioriy
10 ,如果util_impact_lim 10 ,表达专门的学问负荷限定在百分之十下
13)在自动化总计新闻配置从前,要透过运维sysinstallobjects存款和储蓄进程成立查询反馈库,即在设置auto_stats_prof
on,auto_prof_upd on之前,要用call
sysinstallobjects(toolname,action,tablespacename,schemaname)
14)在利用runstats对特定表和目录实行时,必得运用完全限定的表名和索引名
15)收罗布满式总结音讯:db2 runstats on table tablename with
distribution and indexes all
16)runstats有很各个不一致的选项进行抓实优化功效:
   在特定的列和目录实行
   采摘遍布式总括音讯
   包括频率和分位数总结消息
   蕴涵列组总结音信
   包含like statistics的runstats
   包罗计算音讯配置文件的runstats
   带有抽样的runstats
   带有系统页级抽样的runstats
   reorgchk搜集全数表的数据库计算音讯:reorgchk update statistics on
table / schema
   边load边做总括信息,边创设索引边总括消息
17)重组表要比runstats总括音讯时间更加长,能够先实行runstats绑定程序包总结音信,若无立异能够再进行reorg
18)v8从前只可以离线重组,v8之后能够一齐也足以离线:内定了选项inplace正是手拉手重组,暗中同意是离线脱机重组
19)有关心尊敬组的进程音信将记录在数据库活动的历史记录文件中,能够用db2 list
history命令展开,也得以用表快速照相来见识重组进度(db2 get snapshot for table
on db,不关怎么着设置数据库监视表按键,都会记录表重组监视数据
20)借使系统开展的崩溃恢复生机且走入替换进程,那么必供给使重组表操作达成
21)脱机表重组须要将别本复制到临时表空间,但在线重组表不会
22)联机表重组会创设一个.OLTucson的二进制的公文记录重组时要用的音信,如:LSN
重组项目,下个腾出的界定,索引标记,是为了掩护数据集群依然回收空间等
23)联机表重组富含四个级次:select N pages,vacate the range,fill the
range,truncate table 
24)若是要对联机表重组进展重新组成,必得先暂停(db2 reorg table tbname
inplace pause),技艺整合
  
发出resume乞请之后,若无再一次钦赐实践的组合项中truncate的选项,将沿须原本的截断表选项truncate
   在restore 和 backup的时候不能打开整合
25)监视在线重组表方法:快速照相(get
snapshot),管理视图(snaptab_reorg),表函数(snap_get_tab_reorg)
26)由于脱机表重组是一块的,因而脱机表重组中的任何不当都会回来给实用程序
  
联机表重组是异步的,因而未曾SQL消息写入CLP,查看再次回到SQL错误,请发出list
history reorg
27)联机重组索引,假设内定了allow write
access这些选项,将会重新建立该表的具有索引,命令:db2 reorg index
index_name for table table_name[clean up /clean up all /cleanup only
pages]
28)PCTfree是指 在创立索引的时候为其定义的可用空间百分比
29)db2 “select ‘revoke select  on
‘||rtrim(tabschema)||’.’||rtrim(tabname)||’ from public;’ from
syscat.tables ” > script.sql 利用目录表做的脚本rvoke public的权限
30)脱机表重组需求的额外部存储器储空间保存表的黑影别本,脱机索引重组不须求,联机表重组需求的是愈来愈多的日记空间,联机索引重组要求越来越多的日志空间和阴影别本存款和储蓄空间
31)rebind会对应用程序在试行前开展绑定,绑定和依赖计算新闻和数据库对象创立多个程序包,那个顺序包正是推行安插
32)所以假使张开了计算或是重组,那将要重新进行rebind
33)runstats > reorgchk > reorg > rebind/db2rbind > runstats
循环
34)syscat.packages表中的valid值标记当前的程序包是还是不是可用,借使是X值,就代表当前的程序包是不可用,那么就供给再一次绑定
35)db2diag.log 错误日志,db2inst1.nfy通告日志。那四个必要经常检查
36)DMS表空间的结余查询是用,db2 list tablespaces show detail
,SMS表空间对应的容器用操作系统查看剩余空间df -k 
37)DB2有很多工具用于监察和控制数据库和实例活动 比方:snapshot monitors/sql
snapshot函数 ; event monitor ; sysibmadm动态品质试图
38) db2 list utilities show detail 能够监督 LOAD ,BACKUP ,RESTORE,
RUNSTATS

================================================================================================================
第十二章 数据库常用工具
1)db2cfexp ,db2cfimp 实例配置音讯导入导出
2)db2exfmt,db2expln是用来查看已搜聚并写入解释表(explain_instance)的体贴入妙解释多少
3)visual explain查看特定SQL语句选拔的拜谒安排的图形化表示GUI解释工具
4)timeron是db2优化器使用的一种基金衡量单位,用于总括查询完全实践所需的光阴和能源数量
5)访谈陈设是db2用于推行db2语句的门路和步子,那是有所可用解释工具显示的音讯
6)syscat.packages是用来存储数据库中的以程序包的样式的访谈安顿
7)查看静态SQL,动态SQL用 db2expln
8)db2exfmt是一贯管理已搜聚并村混在分利水中的两全解释多少或表明快速照相数据,输出是依附文本的告知
9)db2advis索引设计工具,测量检验如若成立了目录,SQL实行费用能够增长多少,
10)使用db2advis第一步是要搜聚和描述提要求Design advisor的劳作负荷
11)db2batch
是一种规格测量试验工具,是以一组sql和xquery语句作为输入,动态的备选语句的施行时间,并重返结果集
12)db2dart
数据库一致性检查工具和修补工具,那么些实用程序会直接从硬盘中读取数据库的数码和元数据开展比较,由此无法对富有运动一而再的数据库运维该工具
13) db2look
能够领取数据库定义语言DDL;生成缓冲池,表空间和数据库分区组音信 ;
成立数量定义语言DDL
;采撷数据库子集的计算数据和DDL。以及用db2look来创设立模型拟测验数据库

蒙受搭建

(1)DB2Client

DB2 客户端:DB2 v9.1

安装完毕后,能够经过cmd命令行查看 DB2Client 相关新闻:

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

在上马一直运营 db2cmd 来运营 db2cmd.exe 运维 db2命令行程序,试行 db2:

图片 1

后来,能够举办连接数据库、访谈数据等操作。

db2命令行连接数据库

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

再凭 顾客名和登陆密码 就可以访问数据库了。个中,DB2 数据库暗中认可端口是
伍仟0。

connect to calldb_My user 用户名 using 密码

(2)Quest
Central

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

至于注册码

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

设置之后,运维碰着如下难点:

图片 2

化解方法:程序上点击鼠标右键–>属性–>包容性;勾选以协作情势运转这么些程序(包容windowsXP);勾选以管理人身份运行程序,就可以消除。

具体操作

通过 db2发令 连接到数据后,在 Quest Central
首页会呈现已接连的相应数据库的总是结点。

除 Quest Central 外,还应该有另外 DB2可视化学工业具,可扩大学习。

14)

第十三章 v10.1的新特征 

基本功运用

事先多是用 SQLServer,初次操作 DB2
数据库,虽说语法好多类似,依然各样不顺手。

有关DB2,相关资料和书籍推荐:

  • 牛新庄
    -《安份守己DB2》《深远深入分析DB2》《DB2质量调度与优化》
  • 《DB2 Express-C 急忙入门》

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

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

多少个注意事项

  • SQL 语句必要求以 ; 结尾
  • declare 定义变量不要带 @,那是与 SQL Server 的区分
  • SQLSTATE 和 SQLCODE 能够提供 SQL 命令的运作情形
  • 积攒过程调用:call ProcedureName(inVal, …, inVal, ?, … ,
    ?);,在那之中,? 是出口参数占位符
  • NULL
    对于完整性约束和查询带来负效应,提出表中最佳尚未空值,在建表时加上非空约束
  • 表存储在表数据空间,索引存款和储蓄在目录数据空间
  • 分区提升系统品质

常用命令

(1)查询

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

(2)删除

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

(3)重命名

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

在那之中,表 oldTabName 不要有外键约束和视图援引。其它,尽量防止字段重命名。

建表

已知存在表 tabSqh,创造 tabSqh 的别本 tabSqh_Copy:

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

只顾,该形式只复制表结商谈表数据,tabSqh_Copy
未有相关的表约束,须求手动增添:

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

别的连锁约束加多方法如是之。

SELECT 高档用法

那边介绍 select 在 DB2 中的 3 种尖端用法:

(1)复制表结构

CREATE TABLE new_table_name LIKE table_name; 

(2)创设结果表

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

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

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

物化表SELECT语句看似二个询问,未有真的产生表,类型突显为Query,但它完全能够当表来用。 

删表

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

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

(3)全表数据删除

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

(4)直接删除表

DROP TABLE tabName;

临时表

DB2的有时表基于会话(session),且会话之间互相隔开分离。当会话截止时,不时表的数额被剔除,一时表也会被剔除。

有时表的效应:

  • 保留中间结果集,以便义务的接续管理
  • 幸免复杂的SQL语句,将一条较为复杂的SQL语句分解成多条轻巧的SQL语句,升高运营功能

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

中间,NOT LOGGED 代表不记录日志,WITH REPLACE
表示若已存在一时表则替换之,ON COMMIT PRESE途达VE ROWS
表示commit后照旧保留表中的数据。之后,一时表可以用作是普通表,查询、联表均可。

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

有关session一时表调整选项 ON COMMIT PRESE库罗德VE
ROWS的分解:http://www.db2china.net/Article/9916

注意,全局临时表允许创立索引、但不允许创建主键和独一约束。创设的临时表同原表有同样的表结构,可是相关列的质量(主键、外键、独一约束、索引等)新闻是从未有过的。

别的消息可参看:DECLARE GLOBAL TEMPORARY TABLE –
IBM

DGTT 与 CGTT

上述有时表均为 DGTT(已扬言的大局有的时候表),DB 9.7 伊始援救CGTT(已创设的全局有的时候表)。

共同点:

  •  帮衬基于会话的数目
  •  匡助索引,但不协助独一约束或主键

双面都支持基于会话的数据。

CGTT 优点:

  •  长久化的,在系统装置时优先成立、供未来分享之,而 DGTT
    是在某三回答中宣称、仅供该会话使用;
  •  防止在各客户会话开端时声称一时表的渴求;
  •  选用与平日表相同的方式准绳,而 DGTT 必需是固定的情势 SESSION;

创建 CGTT:

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

其余详细消息可参看:DB2 临时表 – DGTT 和
CGTT

索引

目录是稳步键值的成团,每一个键值指向表的一行。

目录是一把双刃剑,当表的目录过多时,数据删除、插入和换代频率会下落,当索引过少大概陈设不客观时会影响多少的询问效能。尽量不要在含蓄
null 值的字段上树立(单列)索引,因为索引不会蕴藏该条记录的音信。

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

优点:

  •  加快查询速度
  •  幸免不须要的表扫描 或 排序操作
  •  收缩死锁的发出
  •  独一性索引保险数据的独一性

缺点:

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

计算音信

数据库对象的总结参数音信,如表的数据量大小、占用的页数、表的行数、索引的事态和内地的分区意况等。

四个SQL在写完并运维之后,我们只是告诉DB2去做什么,并不是如何去做。具体如何是好,取决于优化器。优化器为了转换最优的实施陈设,需求驾驭当前的种类信息、目录中的总结消息等。runstats
命令便是用来搜集数据库对象的境况新闻,对优化器生成最优的实行陈设第一。

对数据表频仍的insert,
update,会产生数据仓库储存款和储蓄中冒出物理碎片,runstats能够对数据库进行数据整合,有利于数据块再三再四化、提升数据存取的效能,原理类似于OS中的磁盘碎片整理。

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

1)

试行布署

在关系型数据库调优进程中,SQL语句是涉嫌质量难点的严重性缘由,而实施安插则是分解SQL语句实行进度的语言。

  •  分裂数据库之间对于实行陈设的象征方法各区别
  •  每便导入存款和储蓄进程,生成的积攒进程进行安插不料定一模一样,受当前的数据库参数、总括音讯的影响

SQL语句的实行进程一共富含多少个关键环节:

  •  数据读取方式(scan):表扫描
    or 索引围观
  •  表之间什么进展三翻五次(join):包蕴Nest
    Loop 、Merge Join、Hash join及半再而三等、多表间的接连各样接纳

至于多表间连接的次第采纳主题材料:

不管在长期以来条SQL语句中包含了稍稍张表连接,同不平时刻独有两张表展开一而再,但多表间的连日种种也是决定品质的最主因。数据库对于表的相继的挑三拣四,依据几个表之间总是后得出的行数举行排序,假诺计算音讯与事实上意况不是非常的大,有希望会招致由于一而再种种不当而致使的属性难题。

连锁消息请参谋:DB2实施计划浅析

对此某些复杂的SQL,提议使用
Quest Central 中的 SQL Turning 成效,相比较直观。

SQL语句实施布置的另外查看方法:

(1)db2expln

db2expln实行布署分为三片段:

  •  当前采撷实行陈设的言语
  •  推行安排详细信息
  •  试行布署图:从下往上,从左往右,遵照号码从大到小的各样进行阅读

在cmd命令行运营 db2expln
命令,能够查阅该命令的利用支持。

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

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

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

对上述命令的分解:

  • -t:输出到终点,-o:输出到文件
  • -q:实行二个SQL语句,-f:实施有个别保存了多条SQL语句的文本
  • -g:图形化呈现
  • -z:钦赐SQL语句间的相间符

参考:行使 db2expln 的 DB2
SQL品质优化示例

(2)db2exfmt

该方式必要在DB2安装目录 …\IBM\SQLLIB\MISC\ 下有 explain.dll
文件,有待于进一步读书。

关于查看存款和储蓄进度的施行布置

先是,获取存款和储蓄过程绝对应的包

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

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

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

瞩目,上述代码获取存款和储蓄进度对应的包,有个别情形下询问不到音讯,至于怎么还不知晓,再提供另一种方法

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

小结之,鉴于数据库存款和储蓄进程试行陈设的多变性,提议:

  •  runstats + rebind
  •  删除重新营造 

runstats
命令参见上述总结音讯部分,下边给出别的常用命令

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

留意,runstats
仅是翻新试行安插的一派(对动态SQL生效、但对存款和储蓄进度无效),另一方面还需
rebind 包(相持异存款和储蓄过程进行布置才有效)。

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

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

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

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

 
1)CLI JDBC ODBC
是应用程序是用来db2服务器调换的驱动,当一个言辞被驱动后,会打成二个互联网包发送给数据库

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

3)查看db2版本下有哪些实例: db2ilist

4)假诺db2stop
force不只怕甘休实力,db2start不能够运维,能够试试db2_kill强制终止全部分区实行的进度,然后实行ipclean ,重新开动数据库时,做崩溃苏醒

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

6)db2 list db directory /catalog databse
观看编指标是/sqllib/sqldbdir/sqldbdir这么些文件 ,那些和node
是一致的(node要创设才有)

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

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

9)表空间容器的相干新闻能够经过list tablespace containers for tbspid show
detail

10)用db2pd -d <dbname> -tablespaces直观展现表空间的布署音信

11)list tablespaces相比较,get snapshot for
tablespaces消息要完美,举例自动储存和表空间map信息

12)SMS表空间不辅助容器大小,只支持更换路线;DMS能够支撑容器大小改换,ADD,DROP,(add和drop会重新平衡rebalance)
EXTEND,REDUCE,RESIZE;自动积攒管理表空间(这几个表空间是db在开登时暗许选项或是内定了automatic
storage
yes)景况下私下认可的选项,不能够在表空间级更动表空间尺寸,只好在数码库级扩充add
storage on 选项为数据库加多新的存放路线(db2 alter database dbname add
storage on dbpath),这里有有个别要验证:
9.7
从前新加的路子不会被表空间霎时使用,唯有已有囤积路线文件系统满了,才会利用新增的门径,而且只可以扩充无法去除。9.7过后就足以对电动积累表空间实行rebalance操作就能够立即使用这几个蕴藏路径

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

14) DMS中央银行使begin neww stripe set
选项是当已有容器已用完后,再利用新扩张的器皿,于add容器分歧,该选项不会rebalance,但会产生数据偏移

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

16)在数量库级扩充存款和储蓄路线应当要在实例目录上面建构才行:db2 “alter
database tomdb add storage on ‘/home/db2inst1/testdbpath/’ “
DB20000I  The SQL command completed successfully ,qa ?

17)对哪些表做rebalance ,哪个表就有新增加的门径咯

18)能够从DMS改成机动管理表空间(呈现的用上选项alter tablespace tbname
managed by automatic storage)

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

20)quiesce能够对表空间锁定,幸免其余顾客对表空间的表数据实行改换db2
quiesce tablespaces for table db2inst1.t1 share /【reset】

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

22)SYSIBM.SYSCAT,SYSIBMADM,SYSSTAT那多少个种类形式对有关对象开展分组

23)syscat.schemata这么些视图用来查阅数据库创设了什么格局

24)decimal(p,s)p是数字的总位数,s是小数位
;借使不钦命准确的位数就遵照decima(5,0)来表示

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

26)constraint只是封锁名称 ,其中外键约束必要名称,检查约束供给名称

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

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

29)在sysibmadm.admintabinfo里面查看表体积,已经裁减之后的容量

30)在根节点上找到差不离对应的数值范围,然后通过这几个界定指针知道叶节点对应的数值,然后在数值通过帕杰罗ID偏移找到呼应的行消息

31)唯一索引:当在表上创造了主键或独一键的时候,表会自动创制独一索引:db2
create unique index indexname on tablename(column)

32)只有创设了独一索引技能应用include这么些选项进行八个字段的查询

33)db2 describe indexes for table tablename show detail
命令查看二个表是不是有目录,在哪些字段上创设了目录,以及索引的连串,也得以透过syscat.indexes选用字段查看索引

34)怎么样更换默许使用的表空间? qa

35)有三个艺术解决系列独一:generate_unique , identity , sequence

36)唯一系列号:generate_unique函数是db2最初选拔在表中生成唯一值的措施(bit
data)

db2 create table tablename(columnname char(13) for bit
data,columnname….),个中12个字节的数额串富含的是timestamp和表分区,举个例子:
[db2inst1@oc6162546036 ~]$ db2 “select * from customers”

CUSTNO                        CUSTNAME        


x’20140402203636696427000000′ tom             
x’20140402203636696544000000′ sam             

  2 record(s) selected.

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

CUSTNO                     CUSTNAME        


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

  2 record(s) selected.

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

ID          NAME            


          1 tom             
          2 sam             

  2 record(s) selected.

37)indentity自增字段
,于sequence的分别在于,indentity只可以在表中某一列使用,功效范围是一个表。而sequence是db2对象,于表毫无干系,能够在全体数据库总使用

###############################################################################################################################################################################################
 
积累进度(stored procedure),函数,LOB,tirgger,自增字段(indentity)
这么些未有学
###############################################################################################################################################################################################

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

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

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

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

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

44)load跟import不平等,import依然进行insert,update,delete操作,须求表达约束和触发器,通过作业日志记录变化。而load不是一行行的导入,而是格式化数据,不必验证约束和触发器,日志也相当少,适合多量多少导入。

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

46)
load除了是非独一键的表唯有load装载那么些操作,只假诺有独一键的表(独一索引)就要开展营造,删除,索引复制别的3个阶段,可通过db2diag.log查看各种阶段步骤

47)load在剔除重复值阶段,只会检查独一键,不会检查评定check和完整性(主键和外键),在第四个装载阶段不切合表定义的输入数据不会棉被服装载到表中

48)含独一键的load进度:load(不通过db2引擎将文件分析成物理存款和储蓄情势,无效数据可以献身转储文件)
> build(假若有目录就能够凭借load搜集的键创设索引) >
delete(检查测验独一键,创制丰富表) > index copy(内定了allow read
access/use ts选项会将build的目录数据从temporary sp里面copy到index
sp(索引表空间))
    
49)LOAD例子:
[db2inst1@oc6162546036 ~]$ db2 “alter table t1_exp add column ts
timestamp add column msg clob(32k)”
《《《《《《创制充足表,加上timestamp 和 大对象
[db2inst1@oc6162546036 ~]$ db2 “load from t1load.del of del modified
by dumpfile=/home/tomzhao/t1.dmp messages msg.t1 insert into t1load for
exception t1_exp” 《《《《《《load过程

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

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

ID          NAME       SEQNO       TS                         MSG     
 



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

  2 record(s) selected.

装载完今后,要反省错误音信(msg.t1),非凡表(t1_exp),转储文件(t1.dmp) 

50)在其实中只要能有限支撑独一键未有重复值的话,能够不用创制丰盛表

51)用load query检查表load状态

52)load有个copy选项用来备份load,因为有相当的大也许开展数据库或表空间的回复,那时前滚要求copy的表空间备份复苏被数据库复苏删掉的load数据
(copy no 缺省,copy之对归档日志有效)

53)copy
no会是归档日志load的时候处于backup-peding状态,那个时候供给backup
db/ts来撤废那一个意况

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

                                 Rollforward Status

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

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

DB20000I  The ROLLFORWARD command completed successfully.
[db2inst1@oc6162546036 ~]$ db2 “select * from
t3”                                                    
《《《《《《表在restore / rollforward后 和后面包车型客车均等
          6 record(s) selected.

                              

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

56)除了copy yes, copy no 还或许有一种load 选项 nonrecoverable
,那个选项能够在load之后不备份表空间,马上能够使用表,不过这几个表在后头内需备份前滚的时候无法被恢复生机(时间点在nonrecoverable那几个动作之后),尽管急需还原将要重新建立表或对数据库进行load点之后的备份

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

58)对于load装载阶段会将不吻合表定义的输入数据归入转存文件,将违反独一约束放入至极表,那么违反完整约束和check约束,load会将其设置为set
intergrity (SQL0668n ,reason code “1” )

59)set intergrity 有两种选拔:set intergrity no 暗中认可
db2 set integrtiy for T1
   set intergrity immediate checked 

   set intergrity unimmediate checked

60)和违反独一键同样,也要创立充足表把违反完整约束和check约束记录下来

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


AAA        A         

  1 record(s) selected.

62)对于数据酒馆来讲,有广大表供给检讨,那么能够利用表字典查看什么表处于set
integrity pending状态:db2 select
tabname,status,access_mode,substr(const_checked,1,1) as
fk_checked,substr(const_checked,2,1) as cc_checked from syscat.tables
where status=’c’

63)表d>c>b>a,当C做完load处于set integrity
pending状态的时候,别的表不会处于此情状,不过对C表施行set
integrity那个动作之后,a和b表都会处于set integrity
pending的动静,像这种情景主外键约束比相当多的气象,大概要施行数十次set
integrity命令   

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

65)db2 set integrity for t1 off no access cascade immediate
《《《《《《对表t1安装为set integrity
pending状态,不容许访谈,同不时常间他的注重性表也高居set integrity pending状态

66)db2 set integrity for manager foregin key, employee check immediate
unchecked
《《《《《《对表manager的外键和employee的反省约束检查,并将该表脱离set
integrity pending状态(确定保证未有背离约束的处境下能够这么用unchecked)

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

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

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

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

70)modified by
有成都百货上千修饰选项来修饰格式,如:decimal小数会有”aaa”,+00023.40那中状态,能够行使decplusblank
striplzeros去除+号和零 0 ;能够这么设定日期timestampformate=”YYYY/MM/DD
HH:MM:SS.uuuuuu”

71)要导入的多少比表中的字段多怎么做:DEL格式的能够运用
import,load的method p选项,对于ASC格式,method L ,对于IXF格式,用method
N选项 :db2 “import from t4.del of del method p(1,3) insert into
t4”,在那之中p(1,3)代表截取导入数据的1列和3列 

72)要导入的数据比表中的字段少,和字段多一致,DEL的格式用method
P(1,99,2),利用99成立叁个null值就能够了

72)qa :为何时有时的会TS 会backup-pending

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

ID          NAME                


          1 aaa                 
          2 bbb                 
          3 ccc                     

[db2inst1@oc6162546036 ~]$ db2 “select max(id) as counter from
test2″《《《《《《那是重中之重,设置最终断点 select max(id) as counter from
table

COUNTER    

          3

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

ID          NAME                


         14 bbbbb               
          1 aaa                 
          2 bbb                 
          3 ccc                 

  4 record(s) selected.
 
74)IXF格式一般会融洽调换不会并发乱码,DEL则会有乱码的难点。当load的时候乱码,能够采取modified by codepage=1208/1386/819来改造数据库钦命的格式,私下认可是1208 
[db2inst1@oc6162546036 ~]$ db2 get db cfg for sample |grep -i code
来查看,db2set db2codepage=1386来更改

75)表空间之间的表迁移,标准的做法是,t1原表export出来,在另个表空间创制同样和t1表一样t2,把t1export出来的多寡import进t2,删除或rename
t1,把t2改成t1

76)能够选取存储进程admin_move_table来扩充表空间之间的搬迁,这种在线的搬迁格局维持原表持续访问

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

78)db2move适用于db2move程序用来在五个数据库间的搬迁,适合不相同平台,表数据量比非常多,是import,export,load命令的包裹,将数据导出为pc/ixf格式

79)db2look能为目的表产生表,视图,索引,函数,trigger,存款和储蓄进程等指标定义语句,db2look也能够收取表的对象定义消息,以及表空间结构

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

81)查看缓冲池大小:
    SELECT BPNAME,NPAGES,PAGESIZE FROM SYSCAT.BUFFERPOOLS
修改缓冲池大小:
    ALTER BUFFERPOOL <bp_name> SIZE <number_of_pages>
创办缓冲池时钦点大小:
    CREATE BUFFERPOOL <bp_name> SIZE <number_of_pages>
PAGESIZE <integer K>

82)db2look+ db2move数据库数据里面垮平台迁移手续,比如linux 到 window :
1)db2look 导出表和表空间对象的概念 db2look.ddl 
                                                                
2)db2move 导出全方位数据库表数据到四个索引下 
                                                                 3)FTP
到window, 修改db2look.ddl中的内容,例如路线,实施db2 -tvf db2lool.ddl
加载定义
                                                                
4)通过db2move导入 db2move sample load   

83)db2dart 功用非常精锐能够导出数据,

84)ixf是二进制自带结构的,del是独有数据

81) qa 借使4k页面,什么动静下表创立不了 行大小超过了4k 。。。。
############################################################################################################################################################################################### 
identity数据导入,lob数据导入,换行导入没学
############################################################################################################################################################################################### 

82)二种情状的卷土而来:恢复+前滚 ;
苏醒专门的职业日志和崩溃复苏(数据保持一致性)

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

84)崩溃苏醒:redo提交到内部存款和储蓄器缓冲池还没写进磁盘,undo还没交给的,缺省景况下崩溃苏醒是机动推行无需人工干预,

85)日志是数据库一种苏醒机制,用于操作数据在没写入存款和储蓄系统在此之前的世代记录

86)db2接纳写日记优先算法,先写日记,再写多少,写多少的历程是异步的。日志是不开展别的不是情理数据更新操作的,比方查询就不需求记录到日志内,以及日志只记录操作产生地点,时间点和内外的数目变动,比方无需记录sql语句和发命令的客户account 

87)数据流二种艺术总括,那三种能够自由调换
    LSN(log sequence
number)记录所在日记文件在磁盘中的真实的职责,用十六进制表示
    LSO(logical stream
offset)记录真正的数量,不含有日志文件的各样头新闻

88)外界的日记命令和操纵文件都常见利用LSN记录数据流的职分

89)pageLSN会有限支持日志文件在复苏的时候不把写进磁盘的数额拿来还原,每一个数据页头都记录了LSN,当苏醒的时候读到LSN,会跟pageLSN比较,借使LSN更老,pageLSN更新的话,那么就不会去苏醒那个老的LSN,pageLSN是用来和LSN相比用的

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

91)非活动日志是在复苏源点之前的日记,活动正是之后

92)全部主要的LSN都会记录到 SQLOGCTL.LFH那几个调控文件内,backup
pending,rollforwarding pending 都以由那一个文件掌握控制

93)db2日志原理,写日记的早期算法,先写日记,在写多少,当崩溃或前滚苏醒时候,须求将日志文件写回到数据盘,保险db2数据库的一致性,db2日志最后都设有日志文件中,在内部结构上,每种日志文件由一些日志构成,种种日志也包行一些日志记录,每一种日志记录同LSN记录,但苏醒时,db2须求精晓从十三分LSN先导,这就是min(MinfuffLSN,LowtranLSN),以及运动日志一定毫无删除,否则会down机
一致性正是苏醒前滚到一个时间点,那些时间点会将付出的多寡写入磁盘,未有付诸或曾经回滚的时候都被撤除

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

95)
收获 DB2 数据库大小和其最大容积音信的办法
db2 “call GET_DBSIZE_INFO (?,?,?,0)”
赢得表空间攻克大小的秘籍
DMS能够直接查看容器大小,假若想查看里面包车型客车数量也,db2 list tablespaces
show detail
SMS由于种种对象都占有二个文本,能够测算SMS表空间容器汉语件的总大小
DMS自动储存处理表空间,只要自动储存路线有充分的上空,满了现在会自扩
得到表/索引占用空间的格局
三种方式:
db2pd -tcbstats;datasize*页数(这种格局只限于被访谈过的表)
admin_get_tab_info 表函数;
和sysibmadm.admintabinfo系统管理视图

96)获取职业日志大小:(logprimary+logsencond)*logfilesiz*4k 
设置为数据库大小10-60%属性最棒(用kbyte来计算比例),logprimary+logsecond不可能超过255,日志空间尺寸不能够赶过256GB.
对logprimary和logfilsiz参数的转移供给断开链接技能见效。而logsecond的修改会应声生效,logsecond日志文件使用完后不会立马删除,而是在颇具连接都断开并再一次连接的时候才会去除

97)日志满:SQL0946C ,事务会回滚

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

99)借使急需对创立日志镜像文件
,能够透过mirrorlogpath设置日志镜像文件,将日志存在八个任务

100)循环日志,主日志用完工作提交到磁盘,能够再一次使用这几个日志,当主日志全体分配出去,并且都没交给到磁盘,则运用分配协助日志来延续日志,支持日志分配完没交给到磁盘,系统报错SQL09460C

101)
归档日志,日志一旦写满就归档(不管是否commit恐怕写入磁盘,归档日志还足以是移动日志,满含没交给的数量),系统会复制写满的日志实行重新利用(如若日志是活动的那么会用援助日志,假使是非活动,那么就能够复制)

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

103)创造数据库暗许是循环日志,更动成归档日志供给离线完全备份,不然会报backup-pending状态

104)循环日志多用来OLAP
数据存款和储蓄的询问,并发,多维,帮助rollback,崩溃复苏,backup/restore,但不恐怕保存日志,不扶助前滚
    归档日志多用于OLTP 交易系统,能够在出现难点时,第临时间复苏

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

    DDL(data definition
language)是数据定义语言:DDL比DML要多,主要的吩咐有CREATE、ALTE冠道、DROP等,DDL首假使用在概念或退换表(TABLE)的布局,数据类型,表之间的链接和平左券束等早先化专业上,他们大都在创造表时使用。

   
DCL(DataControlLanguage)是数据库调控语言:是用来安装或更动数据库顾客或角色权限的言语,包涵(grant,deny,revoke等)语句。

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

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

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

108)事务日志满的景况(SQL09460N) :
事务太大,能够加大logsecond大小,logprimary大小
logfilsiz大小。能够虚构用load from /dev/null of del replace into
tbname(这种方法可以不用记录日志)
                               
事务小但没交给:使用快速照相查看最先事务应用程序(appl id holding the oldest
transaction),抓取应用快速照相:db2 get snapshot for application agentid
228

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

111)在线备份中的include
logs是把日记一同装进在备份介质,是为着在另一台机器方便借尸还魂前滚,当中在线备份中的include
logs是可选,但一般意况下都以加上那个选项 
例如:
db2 backup db sample online include logs 在A机器上做在线备份
db2 restore db sample from /data1 taken at timestamp logtarget
/data/logs 把介质传到B机器上做通过logtarget将日志恢复生机到二个钦命的目录
d2b “rollforward db sample at the end of logs and stop overflow log
path(/data/logs) 在B机器上经过overflow log path复苏的日记做前滚恢复生机
只要不想过来数据库只想重操旧业日志使用logtarget:db2 restore db sample logs
from /data1 logtarget /data/logs

112)可以查阅恢复生机实践顺序:db2ckrst -d sample -t timestamp -r database

113)假使要接纳增量备份:db2 update db cfg for sample using trackmod on

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

115)db2ckbkp -h image(介质)查看备份介质正确性

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

117)暗中认可情形下崩溃复苏是暗中认可(autorestart on),没有必要人工干预

118) db2各类备份介质就是二个版本(image),所以版本复苏就是选用介质恢复生机

119)重定向恢复生机:db2 restore db sample redirect generate script
redirect.ddl
              db2 -tvf redirect.ddl
重定向苏醒不帮忙 自动积攒表空间,能够在回复命令中经过 on path-list 
内定期存款款和储蓄路线,重定向复苏要前滚恢复,对于源端和对象段表空间容器不匹配的意况特地吻合

120)前滚恢复三个挑选:时间
                   end of logs and stop (最大程度苏醒)
                   end of backup and stop
(最小时间回复,backup中蕴藏了在线备份的log)

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

122)表空间的一丝一毫时间回复点=表空间的系统目录表或内部表的最后二回立异操作的时间点,唯有前滚到细微复苏时间过后能力担保系统表和数据库对象

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

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

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

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

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

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

 DDL: CREATE TABLE “DB2INST1”.”T3″ ( “ID” INTEGER , “NAME” CHAR(10) ) 
IN “IBMDB2SAMPLEREL” ;     
[db2inst1@oc6162546036 ~]$ db2 “restore db sample
tablespace(IBMDB2SAMPLEREL) taken at
二零一六0413153752″《《《《《《表空间恢复生机
[db2inst1@oc6162546036 ~]$ mkdir droppedtablerecoverytest
[db2inst1@oc6162546036 ~]$ db2 “rollforward database sample to end of
logs tablespace(IBMDB2SAMPLEREL) recover dropped table
000000000000534三千5000a to
/home/db2inst1/droppedtablerecoverytest”《《《《《《利用历史文件的表定义,能够查看到backup
id ,和动用的tablesapce .在前滚的进程准将表数据导出到八个索引里
[db2inst1@oc6162546036 NODE0000]$ cat data《《《《《《
10,”tom       “
[db2inst1@oc6162546036 ~]$ cat
creatt3.ddl《《《《《《创设一个本子,DDL语句能够在历史记录里查看到
CREATE TABLE “DB2INST1”.”T3″ ( “ID” INTEGER , “NAME” CHAR(10) )  IN
“IBMDB2SAMPLEREL” ;
[db2inst1@oc6162546036 ~]$ db2 -tvf creatt3.ddl《《《《《《
[db2inst1@oc6162546036 ~]$ db2 “import from
/home/db2inst1/droppedtablerecoverytest/NODE0000/data of del insert into
t3″《《《《《《
[db2inst1@oc6162546036 ~]$ db2 “select * from t3″《《《《《《
ID          NAME      


         10 tom       

  1 record(s) selected.

124)前滚复苏一旦形成就能生成新的日志链,之后时间的日志将永恒的不可能被还原,被剔除了曾经
例如:
 
125)前滚恢复生机有多少个选用:timestamp某些时间点
                     end of logs and stop 最大恢复生机时间
             end of backup最小复苏时间

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

1                         

2014-04-14-04.50.13.452212

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

###############################################################################################################################################################################################
周围备份复苏境况及蒙受的难点 
###############################################################################################################################################################################################

128)自动表空间设置有几个挑选要同期设置才会活动处理空间:创造的表空间的是automatic
storage yes ;autoresize yes,  autoresize yes技巧兑现automatic storage 

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

130)runstats 使用distrubution
参数搜聚数据布满(一种是frequency,一种是quantile)

131)[db2inst1@oc6162546036 ~]$ db2 “select tabname,stats_time from
syscat.tables where stats_time is null”
《《《《《《查看是还是不是搜集过总计音讯 

132)runstats只好对单一表举行推行,无法对总体数据库做运转总括,须求脚本来收罗一切数据库的总括音讯

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

134)假使出现表和目录总结音信不平等,runstats将会报警,此时就要同期对表和目录举办总括消息
db2 runstats on table db2inst1.t1 and detailed indexes all

135)要是进行大数据量的总括音信采摘时,会冒出sql2310n
使用程序无法生成计算音讯,那是足以行使抽样计算

136)runstats计算的结果是保留在sysstat.tables 和sysstat,indexs,
不建议修改

137)db2look -d sample -m > db2look_stat.out保存总计新闻

138)runstats使用举办:

*当表数据量发生巨大变化的时候,如通过load加载大批量数量或reorg后,或扩张的新的目录,提出runstats
*有空的时候实施runstats
*表异常的大,或表数据频仍退换,能够设想在少数字段上runstats,并非百分百字段,
*表相当的大,统计时间非常长,能够虚构抽样总结
*提升能够用性,能够默许使用allow wirte access
*系统表也要常常做runstats
*为削减音讯不等同的状态,考虑同不时候在表和目录上还要开展计算消息采撷
*计算完音讯要发出commit
以自由锁。对于静态语句,还要求对package重新绑定,一便生成新的访谈安排

139)reorg磁盘碎片整理工科具

140)但出现难题时,reorg表或者会大大提升品质

*设若表中有那多少个剔除的行,也许稍微表已经是空表,那么reorg能够是表占用的空中大大收缩
*假设产生overflow行溢出,首要产生在变长字段varchar更新之后,记录的尺寸会跨页,增大了
I/O,reorg表数据足以另行组织数据的存放顺序
*根据有个别索引重新协会表数据的依次物理,即cluster
index集中索引的定义,表数据在大意上的积累顺序于索引顺序相匹配。
*但表数据压缩是,能够经过reorg创立字典,并对表数据开展削减

141)当然 reorg不是万能的,有望依据索引增添页数,DBA 比较关系
reorg推行时间,频率 和对利用的影响
 
142)判定是还是不是需求reorg 三个选择:reorgchk和sysibmadm.snaptab处理视图
db2 reorgchk on schema db2admin
如果F1,F2,F3标记 *,则须求重组表,若是索引总计结果 F4-F8 有*
标识,则须求对索引重组 

143)推断某一张表是或不是须要整合,能够应用视图sysibmadm.snaptab处理视图,overflow_accesses于rows_read比例高于3%,就需求对表进行组合
[db2inst1@oc6162546036 ~]$ db2 “select substr(tabname,1,18) as
tabname,rows_read,overflow_accesses from sysibmadm.snaptab where
(rows_read > 999) and ((overflow_accesses *100) / (rows_read +1)
>3 )”

TABNAME            ROWS_READ            OVERFLOW_ACCESSES   


  0 record(s) selected.

144)对索引重组的自己商量依旧必要reorgchk

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

离线重组 采纳shoadow copy的办法,创设一份原始数据别本保持原表可读(allow
read access),reorg进程中会记录日志,可以在十三分的事态下进行依照日志恢复生机
对此离线重组。能够根据实际的目录进行结合index indexname ,如下:
[db2inst1@oc6162546036 ~]$ db2 reorg table db2inst1.t3 index il allow
read access use tempts1
DB20000I  The REORG command completed successfully.

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

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

147)在线reorg表比离线reorg慢非常多,因为在线不会创建数量副本,分批次重组,每便只有一对数量

148)在线reorg表也叫inplace reorg(
原定reorg),reorg可每十10日运转和甘休,为了有限支撑苏醒性,在线reorg会记录多量的日记,须求在日记空间正视于活动的行数,表上索引的个数和索引键大小,因而或许是表大小的数倍

db2 reorg table db2inst1.t3 inplace allow write access

149)在线reorg表是后台异步,固然我们看看命令成功再次回到,实际上仍旧在后台实行。假如在线结合的表比很多,那么恐怕引致I/O
cpu财富占用相当多,而且或然会损耗全数的位移日志,影响系统寻常运行,那么能够采取脚本调整八个表在线reorg施行顺序:db2
list applicaitons show detail |grep -i db2rerog剖断,假使有 reorg
正在实行,则等待该 reorg 试行完结,不然实践脚本里的下叁个表重组
,在那之中db2reorg是二个应用进程,可以断开

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

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

152)对于在线重组,要维持丰硕的日记空间,同期要确认保证 util_heap_sz
数据库参数的值丰富大

153)bind(绑定),是将C程序中的DB2 SQL
语句经过编译(prep)绑定到db2的package中,package中含有了各种SQL语句的探问安插,未来实施那些C程序时,就能够依据保存的package的拜访安顿实行SQL语句
那正是说rebind就是重复绑定更新实行安排。rebind一般都对静态sql
(事先已经在package里面)绑定,存款和储蓄进程也是在package里面,所以rebind也一致适合

154)逻辑空间大概低于物理空间(物理空间是分配过并没有自由的,实际占用的空间是逻辑空间),计算表空间尺寸的时候是用物理空间),reorg能够取消这种情景

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

156)默许等第的CS能够在程序级,语句级,事务级设置

157)4中隔开等级:
UTiguan(uncommited read):读的时候不加锁,能够读到未提交的数码
CS(cusror stability):读到哪行,哪行就加锁,读完未来就释放锁
RubiconS(read stability):把询问的结果行,全体都加锁
Tiguan冠道(repeatable stablility):把读过的行,全部都加锁

157)表锁在私下认可景况下db2不会实行强锁(s u x z ),唯有通过lock table 或
产生锁进级的时候才会在表上压实项目锁格局,弱类型锁首如果协作行锁使用,在获得行锁此前必供给有表锁(IN,IX,IS,SIX)
    
158)db2pd是锁的督察好工具,因为无需锁定引擎财富,对系统开销小,格式上也相比较直观

159)加Z锁,是当create,alter,drop,表或create.drop索引时必要要。用db2pd
-d sample
-locks观望,开掘出了mode上面有Z锁外还会有其它锁,这是因为drop属于DDL语句,DDL定义会存到catalog
table 中,所以系统表上会加行锁和表锁

160)list tables for schema <schema name>
     list tables for all 
     list tables 查看当前客户做为方式名的表和视图
     syscat.tables系统视图查看表的概念,所属的表空间
 
161)U锁是在于 S 和 X锁中间的锁,一般用于”select….for update
“,目标是为着保证和s锁的非凡,但四个u锁是不相称的。防止连个S锁之间晋级到X锁
所爆发的死锁
宪章如下:

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

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

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

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

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

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

163)W 和 NW行锁
是有目录的时候才会用到,S和NS是见仁见智隔开等第下读锁的格局,在CS 和
景逸SUVS隔断品级下是NS锁,在奇骏Sportage隔开分离等第下是S锁

164)在取得行锁从前,要赢得那几个行所在表的最低表锁,如若要查询有些行,那么正是对表有读的意向,须求先的到表的意向读(IS),假诺是增加和删除改某行,正是有意图写(IX)

165) 行锁的s和x模拟: 
锁窗口的体察能够看到,有贰个IS表锁和NS行锁,但NS行锁是W状态,表示锁等

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

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

Locks:
Address            TranHdl    Lockname                   Type       Mode
Sts Owner      Dur HoldCount  Att        ReleaseFlg rrIID
0x00007F9B55C72300 3          04000A00080000000000000052 RowLock    ..X 
G   3          1   0          0x00200008 0x40000000 0     
0x00007F9B55C76100 14         04000A00080000000000000052 RowLock    .NS 
W   3          0   0          0x00000000 0x00000000 0     
0x00007F9B55C76200 14         010000000100000001006057D6 VarLock    ..S 
G   14         1   0          0x00000000 0x40000000 0     
0x00007F9B55C71980 3          41414141415649626B457D1AC1 PlanLock   ..S 
G   3          1   0          0x00000000 0x40000000 0     
0x00007F9B55C76300 14         41414141415649626B457D1AC1 PlanLock   ..S 
G   14         1   0          0x00000000 0x40000000 0     
0x00007F9B55C71B80 3          04000A00000000000000000054 TableLock  .IX 
G   3          1   0          0x00202000 0x40000000 0     
0x00007F9B55C76180 14         04000A00000000000000000054 TableLock  .IS 
G   14         1   0          0x00003000 0x40000000 0 
166)锁等
     锁超时 locktimeout=-1 是最棒等待的情致
     死锁
     锁进级(lock escation),便是由行锁替换为表锁,释放内部存款和储蓄器财富的历程
(行锁晋级为表锁),能够选择db2diag.log查看
     锁转变(lock conversion)是锁的格局转黄,譬喻NS锁转为X锁
(弱型的锁转向强类型的锁)

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

168)决断锁的主题材料应际而生:
*系统响应慢,吞吐量低,cpu使用率低,磁盘空闲
*应用程序重回错误 SQL911
*通过常备监察和控制工具,如快速照相监察和控制和事件监察和控制 ,那或多或少是最棒源点db2 get
snapshot for db on sample |more

169)锁是瞬间的,某一每十30日可能监察和控制到相当多锁等,而另一整天或然早已刑满释放,所以供给通过脚本实行多次(find_lickwait.sh
脚本用于抓取超越2min的采取)

170)db2pd -d sample -locks showlocks wait -tra -app -dyn >db2pd.out
那是db2pd常用的通令组合
我们能够依赖db2pd
-locks选项定位锁音讯,找到持有锁和锁等的事情句柄(TranHdl)>>依据db2pd
-tra找到那多少个业务句柄所属的选拔句柄(AppHandl)>>接着依照db2pd
-app找到那一个句柄刚推行的或正在推行的sql句柄(通过Anchid和Stmtid识别>>最后根据db2pd
-dyn找到sql句柄所代表的sql语句,在事实上条件中,能够依据要求写一个剧本,定期调整和抓取锁的音信

171)对锁的监督,固然锁快速照相也得以博得锁的消息,但大家依然提出用db2pd,锁列表能够直达几百m
,并且锁快速照晤面对db2内部数据结构加上中间锁,以管教自个儿独享内部存款和储蓄器,而db2pd没有须要占用内部锁

172)db2pd具备一定的局限性,无法担保一定能抓取到引起锁等的SQL语句,db2pd只可以抓取到现行反革命和上贰个的实行语句(C-AnchID/C-StmtID)(L-AnchID/L-StmtID),即便三个业务增加和删除改操作之后,又开展了累累读的操作,那是db2pd抓取的结果就不是真正据有锁的SQL

173)9.5本子假设选用db2pd不能够抓取到引起锁等的SQL,那么能够locktimout的值间隔设置小一些,然后用v9.5提供的db2_capture_locktimeout注册变量来抓取

174)9.5从此 借使想要用+C 那么些选项,首先要翻看这些布局参数(CU奥迪Q3_COMMIT)
= disabled [on , off]
[db2inst1@oc6162546036 ~]$ db2 get db cfg for sample|grep -i
‘commit’
 All committed transactions have been written to disk    = NO
 Currently Committed                        (CUR_COMMIT) = ON
时下以落实这么些参数用来支配currently commited
机制,CC是CS暗中同意品级的新完毕,目标是防备写操作阻碍读操作(wirte blocks
read),减弱锁等而提升并发性,,即叁个事务做update
delete从前的数量无需等待,贰个事情做insert但未提交,另个事情读取是会忽略新插入的数码,不供给等待。这种体制是经过其里面包车型客车日记来保证专业一致性,即在行锁上边扩大一个标记(no
information ; uncommited insert identifier ; log information )

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

Number of Threshold Violations             = 0      
Locks held currently                       = 0
Lock waits                                 = 1  
《《《在快速照相弹指间产生锁的次数
Time database waited on locks (ms)         = Not Collected
《《《锁等的时日总和 (除以lock waits
即没个锁等的日子,这一个小时十分的大,将要查处引起锁等的SQL语句,db2pd -d
sample -locks showlocks wait -tra -app -dyn)
Lock list memory in use (Bytes)            = 19200  
Deadlocks detected                         = 0   
《《《多少个死锁被检查实验到
Lock escalations                           = 0    《《《多少个锁发生进级(db2diag.log查看)
Exclusive lock escalations                 = 0     
Agents currently waiting on locks          = 0
Lock Timeouts                              = 1   
《《《爆发锁超时的次数
Number of indoubt transactions             = 0    
《《《正在等待锁的运用

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

176)锁超时
因为db2pd抓取SQL语句的技术有限,所以大家可以用这些注册变量:db2_capture_locktimeout来有效的抓取死锁和锁超时,还需协作创造deadlock
event monitor本事科学完好的抓取锁超时的连锁音讯(适用于9.5上述)
[db2inst1@oc6162546036 ~]$ db2set -lr|grep -i ‘capture’
《《《注册变量
DB2_CAPTURE_LOCKTIMEOUT

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

ID          NAME      


         20 may       

  1 record(s) selected.
[db2inst1@oc6162546036 ~]$ db2 +c “select * from t3 where id=20”
SQL0911N  The current transaction has been rolled back because of a
deadlock 
or timeout.  Reason code “68”.  SQLSTATE=40001
[db2inst1@oc6162546036 db2dump]$ ll |grep -i ‘lock’
查看db2dump里素不相识成的db2locktimout文件,这些文件包括八个部分,几个局地是申请锁类型,锁超时的语句,别的贰个为锁具有者相关音信,富含了最近形式,和近日业务实行的有所SQL
-rw-r—–. 1 db2inst1 db2iadm1    3160 Apr 17 23:23
db2locktimeout.0.40.2014-04-17-23-23-55
[db2inst1@oc6162546036 db2dump]$ cat
db2locktimeout.0.40.2014-04-17-23-23-55
Lock Requestor: 
.
.
 Lock mode requested:     .NS  《《《乞求锁的类型
Context of Lock Request: 
.
.
    Statement:              select * from t3 where id=20 
《《《产生锁超时的主人语句
Lock Owner (Representative): 
.
.
 Lock mode held:          ..X 《《《锁持有方式

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

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

死锁监察和控制器event monitor只可以用二回 

178)为了退换锁等 锁超时
死锁都亟待用不相同工具去检查评定,9.7使用统一抓取锁超时,锁等 和
死锁,那正是creat event monitor for locking 语句
[db2inst1@oc6162546036 deadlock]$ db2 get db cfg for sample
 Lock timeout events                   (MON_LOCKTIMEOUT) = NONE
 Deadlock events                          (MON_DEADLOCK) =
WITHOUT_HIST
 Lock wait events                         (MON_LOCKWAIT) = NONE
 Lock wait event threshold               (MON_LW_THRESH) = 5000000
可以把前3个参数改成hist_values,将mon_LW_thresh改成10000(10秒)

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

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

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

182)如若不能够从使用范围改换隔绝品级(U景逸SUV>CS>ENVISIONS>大切诺基大切诺基,隔断级越低,并发越好),能够通过sql语句级通过with设置隔开等第:select….from…with
UHaval 表示经过U福睿斯隔断等级查询数据

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

DB2_EVALUNCOMMITTED:验证未提交数据,暗许情况下决定某行数据是或不是知足查询条件前,如若满足就加锁,假如不满意,则不加锁
DB2_SKIPDELETED:跳过插入行,在CS或福特ExplorerS隔绝品级下,假如插入的行并未有交给,那么其余二个应用程序扫描时会处于锁等,但假设用了那么些参数,则忽略未提交的新插入数据
DB2_SKIPINSERTED:跳过删除行,在CS或冠道S隔断品级下,假如除去的行并未有交给,那么别的八个应用程序扫描时会处于锁等,但假使用了这一个参数,则若是那数据尚未去除

末端多个参数其实在某种情势方面是脏读,要当心使用

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

184)db2 提供了许多监察和控制工具,主要分为:实时监督和追踪监督

185)实时监察和控制记录数据库某二个成天的快照音信:snapshot,db2pd,db2top和9.7本子的in-memory
metrics等工具,仿佛相机
     追踪监察和控制提供了更详实的数据库活动:事件监察和控制器和9.7版本的activity
monitor,事件监察和控制器恐怕会产生非常的大的数据量

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

187)snapshot监察和控制命令相比较轻巧,深入分析结果才难,监察和控制的结果是由局地监察成分构成:
计数器(counter)用来存款和储蓄累计值,举个例子自运维以来发出的总排序次数(total
sorts)死锁个数(dead locks)读的行数(rows read)
计量/弹指时值(gauge):记录某些监察和控制成分的当前值。比方当前时有爆发的次数(active
sorts),当前锁的个数(locks).
高水位(high water
mark),记录叁个监督检查成分在开荒监察和控制器开关最大的值或纤维值。
习感觉常需求打开数十次的抓取来深入分析一段时间内的数据库活动,能够用脚本

188)为了越来越直观的查阅snapshot的剖释结果,v9之后方可用snapshot管理视图查看,这一个视图与snapshot命令行是应和的
[db2inst1@oc6162546036 ~]$ db2 list tables for schema sysibmadm|grep
-i ‘snap*’可查看
静心:snapshot处理视图供给将实例监察和控制开关打开,不然不可能抓取全数快速照相,在会话级设置无效。db2
reset monitor all 命令只对snapshot命令生效,对管理视图不起成效

189)db2pd没有须求db2内部锁(latches)和引擎能源重临监察和控制数据,因而进度更加快,质量更加好。db2pd直接调用shmat链接到数据库与实例的分享内部存款和储蓄器,不许要创立到数据库的链接,db2pd基本不会对系统产生刚强的震慑

190)db2pd工具包涵大气当面与未公开的参数,假若供给越来越多音讯,能够应用db2pd-everything获得许多当着的音讯

191)db2pd在分区数据库能够行使dbp参数来钦点分区:db2pd -db -sample -dbp
3

192)db2pd常用参数:

db2pd -db sample -appl,该参数列出数据库中当前连连,那部分音讯一样db2
list applications show detail的输出
db2pd -edus ,EDU列表,即引擎管理单元(engine dispathched unit)
,用来监察和控制edu的cpu总消耗量,假设必要动用该命令检查测量试验特定时期内的cpu消耗,则须要做差,给定时期的开头和停止计算差量
db2pd -edus
interval=3,仍可以应用interval参数来博取时间段内的cpu消耗量,user delta
和 sys delta
列是客户cpu和系统cpu对于该线程的消耗cpu时间差,那样就无需手动总结
db2pd -osinfo,操作系统消息
db2pd -bufferpool,缓冲池消息,该参数要开采bufferpool监察和控制器按钮,
db2pd -db sample -logs,日志音讯
db2pd -db sample -tablesapces,表空间消息
db2pd -db sample -locks,锁信息
db2pd -db sample -agents,代理新闻
db2pd -db sample -static |more ,查看系统中留存的静态语句包音信
db2pd -db sample -dynamic,该音信包含数据库的包缓存中颇具动态sql,
db2pd -db sample -tcbstats,表景况音讯

193)db2top的准则就是在后台每种一段时间搜集一回快速照相,然后通过计算其与这段时间三回快速照相此前的多寡差别于经过的时刻,总括出一部分列总计数据胡
db2top重要有多个职能:
实例检验系统
捕捉历史快速照相音信,
其实db2top对品质更是在分区数据库上会影响系能,因为未有一点点名的话,会对全局做快速照相,占用内部存储器
相持于db2pd, db2top是抓取快速照相音讯,所以要求张开监察和控制开关,db2pd
是从内部存款和储蓄器结构中抓取,不需求监察和控制开关

194)db2top -d sample

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

195)dba完成数据库安全铺排:身份验证(authentication);权限(authorizaiton);特权(privilege)

196)db2 server
数据库服务器是数据库实际所在机器(在分区数据库系统上或然是多台机械)
    db2 client
数据库客商机是对服务器上的数码施行查询的机器,这个顾客能够是地点的(驻留在与数据库服务器同样的物理机械上),也足以是长距离的(驻留在单独的机器上)

197)authentication决定了db2顾客在怎样地点进行身份验证

198)v9能够根据分歧须要来设定认证机制,例如是实施实例连接和实例级操作,仍旧只是接连数据库都有两样的参数钦赐
[db2inst1@oc6162546036 ~]$ db2 get dbm cfg |grep -i ‘authentication’
 Server Connection Authentication          (SRVCON_AUTH) = KERBEROS 
《《《廉洁数据库的求证
 Database manager authentication        (AUTHENTICATION) = SELANDVEEnclave  
《《《连接实例的证实
那七个参数表明:客户在连接实例会用SECR-VVE纳瓦拉,不过在连接数据库时会用kerberos身份验证,假诺在服务器上一向不科学最初化kerberos,不过提供了实用的userid和passwd,那么允许那些客户连接实例,可是不允许连接数据库。

199)服务器上各种实例仅允许一连串型的身价,也便是说,设置适用于该实例下全数的数据库
    客商机上编目标各个数据库具备自身的身份认证项目,用catalog database
命令中的authentication参数钦命:db2 catalog db test as test2 at node
db2inst1 authentication server 

200)authentication是
sever的时候,在本地连接的话没有需求证实,假若是长距离连接的话,须要将服务器上的db2user和db2passwd通过网络发送给服务端
    authentication是
client的时候,允许客户在客商机上进行身份验证,即能登录到顾客机,便足以接连数据库,无需再度提供口令
    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) = 

9.7之后sysadm的权能中对数据库对象的访问以及数据库对象上的管理权限分离给了数据库管理员(dbadm)和安全管理员(secadm).
dbadm也分为了dataacess和acessctrl
sysctrl 不可能访谈数据库中的任何数据唯有赋予特定的权能
sysmaint 也不可能访谈数据库中的任何数据,以及不能够去除创造数据库和表空间
     

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

203)db2 create db sample 《《《 
sample上边的dbadm将隐式的给予发此命令的顾客
     db2 grant dbm on database to user tom 《《《那是体现
     db2 grant dbadm with dataaccess without accessctrl on database to
user tom 《《《注意这里应当要已经连上钦命的数据库
     db2 grant dbadm on database to group db2grp1
《《《也得以给二个组,同样这些命令只有secadm客商发生

204)只有secadm和accessctrl权限顾客本领grant/revoke
客户/客商组的load权限,以及对象的control特权,

205)特权轮廓上分三种:数据库特权(针对数据库中具有目的)和目的级特权(与一定指标相关联)
表空间特权:use(允许客商在钦定表空间中创立表)(除了syscatspace或其余系统有时表空间)
格局特权:createin;alterin;dropin
表和视图特权:control;alter;delete;index;insert;references;select;update;
索引特权:control(允许客商删除索引)
包特权:control;bind;execute
例程:execute
队列特权:usage;alter

206)于实例级权限相似,能够运用命令语法grant/revoke :db2 grant insert on
table test to user tom ;db2 grant select on table test to group
db2grp1

207)从 DB2 V9.1 初步,CREATE DATABASE 命令语法扩展了 RESTKoleosICTIVE
选项。要是该命令中富含了 RESTWranglerICTIVE 选项,那么会变成 REST奥迪Q3ICT_ACCESS
数据库配置参数被设置为 YES,同期不自行赋予 PUBLIC 任何特权。如若马虎了
RESTSportageICTIVE 选项,那么 RESTTiguanICT_ACCESS 数据库配置参数棉被服装置为
NO,前述全部特权都将自行赋予 PUBLIC。
[db2inst1@oc6162546036 Security]$ db2 get db cfg for sample |grep -i
‘access’
 Restrict access                                         = NO

208)with grant option并不适用全部grant语句
,control特权也只能有secadm和accessctrl来予以,系统一编写目表也只可以由这四个顾客授予。而且在予以数据库级权限,索引权限,表权限或视图的control权限是,with
grant option字句无效
撤除dbadm权限,必供给有secadm权限

209)展现grant connect sample的权力给 tomzhhao

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

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

   Database Connection Information

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

210)显示赋予select 特权在table db2inst.t3

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

ID          NAME      


         15 tom       
         16 tim       
         17 tim       
         17 tim       

  4 record(s) selected.

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

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

212)隐式的授予权力:
创办数据库的时候,将dbadm,secadm权限以及bindadd.connect.createtab.create_external_rounte等授权于创制者
赋予dbadm权限的时候,将bindadd.connect.createtab.implict_schema.load.quiesce_connect等授权于被赋予dbadm权限者
来得创立情势的时候,将createin,alterin,dropin授予创造方式者
隐式创造格局的时候,将createin授予public
创制对象(表,索引,包),将control授予对象创立者
创制视图,将装有视图定义基础表视图小名control权限赋予control权限 

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

214)db2将有关特权的新闻存款和储蓄在7个系统一编写目视图里:
syscat.dbauth
syscat.colauth
syscat.indexauth
syscat.packageauth
syscat.schemaauth
syscat.tabauth
syscat.tbspaceatuh

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

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

2)打补丁之前要做的备选专门的学问
       :备份数据库配置新闻和实例新闻:db2support . -d sample -cl 0 (-cl
0收罗数据库系统目录,数据库和实例配置参数,db2
注册参数变量,那个都会卷入到db2support.zip)
         备份packages :db2 list packages for all show detail >
packages.txt
         备份数据库的ddl语句 :db2look -d sample -e -l -x -o sample.ddl
         备份数据库本身数据:db2 backup db sample 
  补丁之后的劳作
         使用补丁的新特点进级数据库:db2updv10 -d sample
        
对工具举办绑定,path是绑定文件目录:比方:/home/db2inst1/sqllib/bnd (db2
bind path..)
         重新绑定packages:dbrbind dbname -l logfile all

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

4)db2在读写数据的时候,是跨容器按梯次写的,以管教读写功能,数据均匀遍及

5)容器可以是目录,文件 和裸设备,其普通话件就好比是DMS的容器file ‘/’
,当中目录路线就好比SMS的器皿 ‘/’ 

6)db2 create database dbname automatice storage yes on /dbauto dbpath on
/database,在那之中数据库表空间数据的路线是足以内定的(比如个中的电动表空间路线/dbauto),数据库路线也是足以钦赐的.
除非钦赐了automatic storage yes 技术钦命自动积攒管理表空间路线/dbauto

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

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

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

9)要是用户不想记录日志能够应用那几个选项:alter table tbname activate not
logged initially 

10)SUBSTCR-V 第叁个参数是 字符串, 第贰个参数 开端地方,  第多少个参数  长度
假定首个参数未有,默许到底

相关文章