DB2数据库管理培训教程
11
db2pd常用方法
用途一 抓取锁信息,进行分析 db2pd –d dbname –app –tran –agent –dyn –locks wait>db2pd.out 分析db2pd.out
第一步 --sts列 W表示等待 G代表被授权获得锁
12
第二步 由第一步输出中的TranHdl对应到应用的AppHandl。 得到TranHdl 2和6 分别对应到应用的AppHandl 30和34
第三步获得应用程序的更多信息
C-AnchID/C-StmtUID 和L-AnchID/L-StmtUID 上。“C” 代表当前 (current),“L” 代表最近(last)的语句 UID
13
第四步检查动态语句缓存的内容
经分析得出锁等待的语句为 UPDATE EMPLOYEE SET SALARY = SALARY * 0.02 拥有锁的APP的语句为 UPDATE EMPLOYEE SET BONUS = SALARY * 0.1 WHERE JOB = 'MANAGER'
29
崩溃恢复
从数据库日志控制文件中获取不一致起点信息,并根据日志内容对所有在 不一致起点后成功提交事务进行再应用,而对其他未完成的事务进行回滚,从 而把数据库带回可用、一致状态。
1.自动 - 数据库参数AUTORESTART=ON(缺省) 2.手动 - 数据库参数AUTORESTART=OFF。使用db2 restart database
2. 当前APP锁等待的APP
显示当前APP正在哪个APP执行,信息包括被等待的APP的所名称及级 别,持有锁的AGENT ID,根据AGENT ID可以得到被等待锁的APP所 对应的SQL,考虑进行SQL优化或表优化等相关操作
以上功能为较为常用及实用的监控功能,该工具在管
理及维护方便也较为方便安全。
17
2.2 监控要点
日常监控 数据库状态 表空间状态、使用率 applications状态 锁情况 性能指标 常用性能指标 读有效性rows_read/rows_selected 寻找性能较差的动态SQL Buffpool命中率
18
日常监控 数据库状态 db2 get snapshot for db on dbname 表空间状态及占用率 db2 get snapshot for tablespaces on dbname db2pd –d dbname –tab db2top –d dbname 出现界面后按t 缓冲池命中率 db2pd –d dbname –buf db2top –d dbname 出现界面后按b 是否有锁等待 db2pd –d dbname –locks wait db2top –d dbname 出现界面后按U
19
常用性能指标 读有效性rows_read/rows_selected
db2 get snapshot for db on dbname:Rows read /Rows selected 管理视图查询:select rows_read/rows_selected from sysibmadm.snapdb; 对于OLTP,最好小于20 对于OLAP,最好小于100 当读有效性值较高时,表示可能在发生表扫描,可通过索引等手段进行优化
26
3
备份与恢复
3.1 目的 3.2 基本概念 3.3 备份恢复 3.4 适用场景
27
3.1 目的
数据库备份和恢复的目的
从故障中恢复数据库系统,有效保护数据。
故障场景
系统崩溃(掉电、硬件故障、OS失败、数据库实例失败等) 事务失败(语句失败、进程失败等) 人为错误(误操作等) 存储媒介故障(存储器物理损坏等) 灾难(自然灾害等)
db2pd
不需要建立与数据库的连接,基本不会对系统造成影响 常用参数,以下参数常组合使用,导出文件进行分析 -appl 应用程序 -bufferpool 缓冲池信息 -logs 日志信息 -tablespaces 表空间信息 -locks 锁信息 -agents 代理信息 -dynamic 动态sql信息 -tcbstats 表状态信息
create event monitor lockevmon for locking write to unformatted
event table (table locks)
Call sysproc.EVMON_FORMAT_UE_TO_TABLES('LOCKING',NUL L,NULL,NULL,NULL,NULL,'RECREATE_FORCE',-1,'SELECT * FROM locks ORDER BY event_timestamp') 只需用一个事件监控器就可捕获死锁、锁超时、锁等的语句
述了各个对象在
DB2中的关系。
8
2
监控与维护
2.1 监控工具 2.2 监控要点 2.3 第三方监控工具
9
2.1 监控工具
即时监控工具
--snapshot --db2pd --db2top 事件监控工具 – Event monitor – 新事件监控工具(9.7)
10
snapshot
需要打开实例级监控器开关,有一定性能损耗 --snapshot命令行监控 --snapshot管理视图(DB2V9后) 管理视图较容易分析,通常用于查找存在性能问题的动态sql
16
9.7新的锁事件监控
Lock timeout events (MON_LOCKTIMEOUT) = hist_and_values Deadlock events (MON_DEADLOCK) = hist_and_values Lock wait events (MON_LOCKWAIT) = hist_and_values Lock wait event threshold (MON_LW_THRESH) = 10000
DB2数据库管理
浪潮软件
2018/10/19
母版题样式
2
目录
1 2
3 4
基本概念
监控与维护 备份与恢复 性能优化 常见问题处理
5
3
1
基本概念
1.1 DB2数据库对象 1.2 对象层次关系
4
1.1 DB2数据库对象
DB2数据库体系
系统
实例
数据库
数据库对象
表、视图、索引、模式、存储过程、程序包等 缓冲池、日志文件、表空间 物理存储、表空间容器、目录、文件系统或裸设备
28
3.2 基本概念
事务
(事务=工作单元) 事务是组合在一起的一个或多个 SQL 操作序列,也被称为一个工作单 元,用来保证数据的完整性和一致性。
特性如下:
A 原子性–操作序列不可分割,或全部成功或全部失败。
C 一致性–事务执行前后数据库都处于一致性状态。 I 隔离性–并发事务相互隔离,互不影响。 D 持久性–事务被成功提交后,对数据库的更新被持久化,不会丢失。
找到性能较差的dynamic SQL语句
通过Sysibmadm.snapdyn_sql视图,根据不同字段进行排序,找到性能较差的SQL 语句
排序较多的sql
select num_executions,sort_overflows,total_sort_time,stmt_text from sysibmadm.snapdyn_sql order by sort_overflows desc fetch first 10 rows only; 执行耗时最长的sql ·select num_executions,total_exec_time,stmt_text from sysibmadm.snapdyn_sql order by total_exec_time desc fetch first 10 rows only;
31
前滚恢复
前滚恢复=时间点恢复,恢复数据到一个指定的时间点。
归档日志模式下执行,有数据库完整备份,必须保留备份后到特定时间点之间所有的日志文件。 数据库前滚恢复必须离线进行。 在执行不带without rolling forward选项的DB2命令restore后,执行前滚恢复命令rollforward 将使数据库恢复至备份后的某一特定时间点或者日志末尾。
14
用途二 查看表重组进度 db2pd –d dbname –reorg
用途四 查看HADR同步状态
15
db2top
db2top 监视实用程序快速高效地监视复杂的DB2环境。它结合来自所有数 据库分区的 DB2 快照信息,使用基于文本的用户界面提供正在运行的 DB2 系统的动态实时视图。
db2top不支持上下滚屏,一般用于了解表空间状态,缓冲池命中率,app执 行 sql,了解处于锁等待状态的应用。进而用db2pd等工具分析 示例:db2top –d dbname
21
2.3 第三方监控工具
常用第三方监控工具QuestCentral.exe
22
常用第三方监控工具QuestCentral.exe
23
1. APP状态:
UOW EXECUTING:正在执行 Wait for uow:等待执行 Wait for lock:锁等待
2.执行成本:
该sql执行成本,数值越大,成本越高,执行越慢。如有多条成本较高的相同
32
部分恢复
部分恢复,恢复数据库一部分数据和结构,工作原理同前滚恢复,区别是
备份和恢复的对象是表空间 。
主要特点
相对数据库备份,表空间备份和恢复在时间上占有优势,并且方法灵活。
系统编目表空间的备份和恢复必须离线进行,并且必须前滚至日志的末尾。而其他的表空间都 可在线进行,并且可以前滚至某个特定时间点。 通过设定注册表变量DB2_COLLECT_TS_REC_INFO=ON,前滚命令将跳过不需要的日志