db2笔记

第七章节:数据库备份与还原
(恢复的定义,db2日称,数据库及表空间的备份,数据库和表空间的还原,数据库与表空间的前滚,recover使用程序,数据库重建,监控备份恢复和回复,优化备份恢复与死灰复燃)
1) Redo
是凭db记录了好的操作commite之后只是从不立马的形容副硬盘,这个时候开机数据库会活动开写副硬盘的操作
2)崩溃恢复(crash
recovery)是数据库的一个效益,使数据库及平等的状态,能够回滚未提交的数额,重开既在内存提交的多少。选项:autorestart
on ,以及可以下db2 list utilites show detail或db2pd -until查看过程。
3)脱机是赖在倒恢复的时刻表空间有误
4)灾难恢复(disaster recovery),用HADR功能来还原,原理
是将源数据复制到目标数据库防止
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 20140317130324 用表空间备份重建数据库(归档日志)
38)用表空间重建后如果前滚表空间,如果没相应的备份映像都能够在历史文件中找到才会RF,其中日志文件一定要是可用,如果未以数据库参数的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)可复原数据重建可以用其他备份,不可恢复数据库只能用数据库备份

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)BPHR缓冲池命中率应该超过90%(可以使用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 ,说明工作负荷限定在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)联机表重组会创建一个.OLR的二进制的文书记录重组时只要为此的音信,如: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来构建模拟测试数据库

14)

第十三段 v10.1之初特色 

1)

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

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

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

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

 
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 0x4000

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)在根本节点上找到大概对应之数值范围,然后经此界定指针知道叶节点对应之数值,然后在数值通过RID偏移找到呼应之履信息

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….),其中13单字节的数量出错包含的是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凡凭借
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
20140404143751                               《《《《《《恢复数据库
[db2inst1@oc6162546036 ~]$ db2 connect to sample
SQL1117N  A connection to or activation of database “SAMPLE” cannot be
made 
because of ROLL-FORWARD PENDING.  SQLSTATE=57019               
[db2inst1@oc6162546036 ~]$ db2 rollforward db sample to end of logs
and stop                           《《《《《《前滚数据库

                                 Rollforward Status

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

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

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

                              

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

56)除了copy yes, copy no 还有平等栽load 选项 nonrecoverable
,这个选项可以在load之后不备份表空间,立即可以应用说明,但是是发明在后来用备份前滚的上不能够吃恢复(时间点于nonrecoverable这个动作下),如果急需还原就要重建表或针对数据库进行load点之后的备份

57)copy no 会使表空间处于backup-pending
    copy yes 会如表空间处于增长日子等
    nonrecoverable 会使表不可恢复,但是速度快速

58)对于load装载阶段会将不抱表定义的输入数据放入转存文件,将违唯一约束放入大表,那么违反完整约束和check约束,load会将该设置也set
intergrity (SQL0668n ,reason code “1” )

59)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-20%特性最佳(用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久命令是因此来对数据库里之多少开展操作的语言。

    DDL(data definition
language)是数码定义语言:DDL比DML要多,主要的授命有CREATE、ALTER、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
20140413153752″《《《《《《表空间恢复
[db2inst1@oc6162546036 ~]$ mkdir droppedtablerecoverytest
[db2inst1@oc6162546036 ~]$ db2 “rollforward database sample to end of
logs tablespace(IBMDB2SAMPLEREL) recover dropped table
00000000000053430004000a to
/home/db2inst1/droppedtablerecoverytest”《《《《《《利用历史文件之表定义,可以查到backup
id ,和动用的tablesapce .在前滚的过程中将表数据导出到一个目录里
[db2inst1@oc6162546036 NODE0000]$ cat data《《《《《《
10,”tom       “
[db2inst1@oc6162546036 ~]$ cat
creatt3.ddl《《《《《《创建一个剧本,DDL语句可以以历史记录里翻到
CREATE TABLE “DB2INST1”.”T3″ ( “ID” INTEGER , “NAME” CHAR(10) )  IN
“IBMDB2SAMPLEREL” ;
[db2inst1@oc6162546036 ~]$ db2 -tvf creatt3.ddl《《《《《《
[db2inst1@oc6162546036 ~]$ db2 “import from
/home/db2inst1/droppedtablerecoverytest/NODE0000/data of del insert into
t3″《《《《《《
[db2inst1@oc6162546036 ~]$ db2 “select * from t3″《《《《《《
ID          NAME      


         10 tom       

  1 record(s) selected.

124)前滚恢复如成功就见面转新的日志链,之后时间之日记将永生永世的不可知被还原,被删去了已
例如:
 
125)前滚恢复来三个选项:timestamp某个时间点
                     end of logs and stop 最深恢复时间
             end of backup最小恢复日

126)db2 “values current timestamp” 
这个得记下时精准的工夫及前滚时候要之格式
[db2inst1@oc6162546036 ~]$ db2 “values current timestamp”

1                         

2014-04-14-04.50.13.452212

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

###############################################################################################################################################################################################
广泛备份恢复状况和遇到的题目 
###############################################################################################################################################################################################

128)自动表空间设置有三三两两单选择要而装才会自行管理空间:创建的表空间的是automatic
storage yes ;autoresize yes,  autoresize yes才能够实现automatic storage 

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

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

131)[db2inst1@oc6162546036 ~]$ db2 “select tabname,stats_time from
syscat.tables where stats_time is null”
《《《《《《查看是否收集了统计信息 

132)runstats只能对单一表进行实施,无法对全数据库做运行统计,需要脚本来收集一切数据库的统计信息

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

134)如果出现表及目录统计信息不平等,runstats将会报警,此时将要以对表和目录进行统计信息
db2 runstats on table db2inst1.t1 and detailed indexes all

135)如果履行好数据量的统计信息收集时,会并发sql2310n
使用程序不可知杀成统计信息,这是可动用抽样统计

136)runstats统计的结果是保存于sysstat.tables 和sysstat,indexs,
不建议修改

137)db2look -d sample -m > db2look_stat.out保存统计信息

138)runstats使用实行:

*当表数据量发生巨大变化的时节,如通过load加载大量多少要reorg后,或追加的初的目录,建议runstats
*悠闲之时光执行runstats
*说明很特别,或说明数据频繁转移,可以设想在少数字段上runstats,而休是任何字段,
*发明很可怜,统计时大丰富,可以考虑抽样统计
*提高得用性,可以默认使用allow wirte access
*系统表也只要常常做runstats
*呢削减信息不等同的状,考虑而于表及目录上又开展统计信息收集
*统计了信息如果发出commit
以释放锁。对于静态语句,还需针对package重新绑定,一便生成新的造访计划

139)reorg磁盘碎片整理工具

140)但出现问题常常,reorg表可能会见大大提高性能

*而表中产生过多勾的行,或者有些表已是空表,那么reorg可以是说明占用的空间大大降低
*一经来overflow行溢起,主要有在转移长字段varchar更新之后,记录之长短会跨页,增大了
I/O,reorg表数据可以再组织数据的贮存顺序
*论有索引重新组织表数据的逐一物理,即cluster
index聚集索引的概念,表数据以情理上的存储顺序为索引顺序相配合。
*然表数据压缩是,可以通过reorg建立字典,并对表数据进行压缩

141)当然 reorg不是全能的,有或仍索引增加页数,DBA 比较关系
reorg执行时,频率 和指向应用之熏陶
 
142)判定是否用reorg 两只挑选:reorgchk和sysibmadm.snaptab管理视图
db2 reorgchk on schema db2admin
如果F1,F2,F3标记 *,则用重组表,如果搜索引统计结果 F4-F8 有*
标记,则要对索引重组 

143)判断有平张表是否需要结合,可以使用视图sysibmadm.snaptab管理视图,overflow_accesses于rows_read比例过3%,就用对表进行重组
[db2inst1@oc6162546036 ~]$ db2 “select substr(tabname,1,18) as
tabname,rows_read,overflow_accesses from sysibmadm.snaptab where
(rows_read > 999) and ((overflow_accesses *100) / (rows_read +1)
>3 )”

TABNAME            ROWS_READ            OVERFLOW_ACCESSES   


  0 record(s) selected.

144)对索引重组的检讨仍需要reorgchk

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

离线重组 采用shoadow copy的法,创建同卖原始数据副本保持原表可读(allow
read access),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可天天启动和平息,为了保险恢复性,在线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惨遭隔离级别:
UR(uncommited read):读之时段不加锁,可以读到非提交的数额
CS(cusror stability):读到哪行,哪行就加锁,读了事后虽自由锁
RS(read stability):把询问的结果实施,全部还加锁
RR(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 和
RS隔离级别下是NS锁,在RR隔离级别下是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)锁是一下子之,某一样时时或者监控到深多锁等,而另外一样随时或者已放出,所以需要经过脚本执行多次(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 这个选项,首先使翻此布局参数(CUR_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)如果未可知于下规模改变隔离级别(UR>CS>RS>RR,隔离级越低,并作越好),可以经过sql语句级通过with设置隔离级别:select….from…with
UR 表示通过UR隔离级别查询数据

183)有这般三只锁参数可以减掉锁的行数,提高并发
[db2inst1@oc6162546036 ~]$ db2set -lr |grep -i ‘db2_eva*’
DB2_EVALUNCOMMITTED
[db2inst1@oc6162546036 ~]$ db2set -lr |grep -i ‘db2_skip*’
DB2_SKIPDELETED
DB2_SKIPINSERTED

DB2_EVALUNCOMMITTED:验证不提交数据,默认情况下决定某行数据是否满足查询条件面前,如果满足就加锁,如果未饱,则非加锁
DB2_SKIPDELETED:跳了插入行,在CS或RS隔离级别下,如果插入的实行没有交,那么另外一个应用程序扫描时会处在锁相等,但万一因此了是参数,则忽略不提交的新栽数据
DB2_SKIPINSERTED:跳了删除行,在CS或RS隔离级别下,如果剔除的尽并未交到,那么另外一个应用程序扫描时会处于锁相等,但假如因此了这参数,则假要即多少尚未去除

末尾两独参数其实在某种形式方面是浑浊读,要小心使用

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

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) = SERVER  
《《《连接实例的征
随即简单单参数说明:用户以连年实例会为此SERVER,但是当一连数据库时见面就此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)
作用范围来区分,db2中共包括个别好像权限:实例权限和数据库权限。
     实例权限: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 命令语法增加了 RESTRICTIVE
选项。如果该令中连了 RESTRICTIVE 选项,那么会招致 RESTRICT_ACCESS
数据库配置参数为装也 YES,同时不自行致 PUBLIC 任何特权。如果疏忽了
RESTRICTIVE 选项,那么 RESTRICT_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)SUBSTR 第一只参数是 字符串, 第二个参数 开始位置,  第三单参数  长度
而第3独参数没有,默认到底

相关文章