您现在的位置:首页 > 知识库 > 计算机与软件 >数据库技术专题 Oracle数据库性能优化 2005
数据库技术专题 Oracle数据库性能优化 2005

数据库技术专题 Oracle数据库性能优化 2005

资料大小: 102.73 MB
文档格式: PDF文档
资料语言: 简体中文
资料类别: 计算机与软件
更新日期: 2023-02-23
下载说明:
推荐信息: 数据库   性能   优化   Oracle   2005

本地下载(10点)  备用下载(10点)

内容简介
数据库技术专题 Oracle数据库性能优化
作者:盖国强等编著
出版时间:2005
丛编项: 数据库技术专题
内容简介
  本书面向实际应用,从多个角度出发,对Oracle优化中的很多 关键问题进行了深入全面的探讨,涵盖了Oracle优化的各个技术层面,从内存优化、IO规划及优化,到SQL优化调整,以较为完整的体系阐述了Oracle的优化技术。本书给出了大量取自实际工作现场的实例。在分析实例的过程中,兼顾深度与广度,不仅对实际问题的现象、产生原因和相关的原理进行了深入浅出的讲解,更主要的是,结合实际应用环境,提供了一系列解决问题的思路和方法,包括详细的操作步骤,具有很强的实战性和可操作性,满足面向实际应用的读者需求。【本书卖点】 续《Oracle数据库DBA专题技术精粹》一书的热卖,国内著名Oracle技术论坛ITPUB(www.itpub.net)再次集中ITPUB的技术优势,历时一年多的精心准备,以集体创作的形式组织编写了本书──《Oracle数据库性能优化》。 本书集各家之所长的编写形式使得本书的内容非同一般,作者都是来自于电信、银行、电子商务、证券、政府、纺织等各行各业的资深数据库管理人员,具有丰富的实践经验,并由ITPUB四大技术版主盖国强、冯春培、叶梁和冯大辉担当主编,进一步保证了本书在技术和内容上的品质。 本书对Oracle优化中的很多关键问题进行了深入的探讨,其探索程度及实用性在目前市场上的同类书籍中还是比较罕见的。不管是一个初学者还是想深入学习Oracle优化技术的专业人士,都能在这本书中找到自己感兴趣的部分。 本书内容全面实用,收集了几十个与优化有关的案例,还特别收入Richard J. Niemiec大师的一篇文章“Statspack高级调整”。【本书面向读者】 本书适用于具有一定数据库基础的数据库从业人员,尤其适用于Oracle数据库管理和开发人员,也可以作为各大中专院校相关专业的教学辅导和参考用书,或相关培训机构的培训教材。
目录
第一篇 优化工具篇
第1章 DBA优化之路 3
1.1 学习的建议 3
1.2 工具推荐 4
1.3 关于操作系统方面的建议 4
1.4 关于Oracle初始化参数的调整 5
1.5 关于Statspack的若干建议 6
1.6 关于logmnr在调优中的运用 7
1.7 关于materialized view在调优中的运用 8
1.8 关于Stored Outline在SQL优化中的运用 8
1.9 用dbms_profiler调优存储过程 8
1.10 优化前的准备工作 9
1.11 如何对SQL进行调整及优化10
1.12 表结构优化实例 12
1.13 如何对session进行跟踪 12
1.14 基于等待事件的性能诊断方法13
1.15 基于资源限制的性能诊断方法14
1.16 如何减少共享池的碎片 15
1.17 监控表及索引的意义 17
1.18 通过优化SQL消除temp表空间膨胀 17
1.19 理解compress选项在优化上的作用 19
1.20 关于在线重定义table的建议 19
1.21 关于分区表在数据库设计时的建议 20
1.22 关于DataGuard在高可用方面的建议 20
第2章 Statspack高级调整 23
2.1 Statspack高级调整译文 24
2.1.1 Top 5 Wait Events 24
2.1.2 等待时间快捷参考 26
2.2 关于Latch 27
第3章 Statspack使用的几个误区 33
3.1 以命中率为主衡量性能问题 33
3.2 快照的采样时间间隔问题 35
3.3 以偏概全 36
3.4 关于TIMED_STATISTICS参数的设定36
3.5 你成了泄密者 37
第4章 TKPROF工具使用简介 39
4.1 TKPROF工具简介 39
4.2 TKPROF工具的使用步骤 40
4.3 TKPROF工具如何分析trace文件 41
第5章 使用Oracle的等待事件检测性能瓶颈 45
5.1 判断等待事件的相关视图 46
5.1.1 系统级统计信息v$system_event46
5.1.2 会话级统计信息v$session_event48
5.1.3 会话详细性能信息 v$session_wait 48
5.1.4 会话等待事件的相关视图之间的关系 50
5.2 应该怎么考虑进行优化 50
5.3 主要等待事件 51
5.4 案例分析 54
5.5 小结 59
5.6 附录 59
第6章 使用SQL_TRACE/10046事件进行数据库诊断 63
6.1 SQL_TRACE及10046事件的基础介绍63
6.1.1 SQL_TRACE说明 63
6.1.2 10046事件说明 67
6.1.3 获取跟踪文件 68
6.1.4 读取当前session设置的参数68
6.2 案例分析之一 69
6.2.1 问题描述 69
6.2.2 检查并跟踪数据库进程 69
6.2.3 检查trace文件 70
6.2.4 登录数据库检查相应表结构71
6.2.5 解决方法 72
6.2.6 小结 73
6.3 案例分析之二 73
6.3.1 问题描述 73
6.3.2 drop user出现问题 74
6.3.3 跟踪问题 74
6.3.4 问题定位 76
6.3.5 实际处理 77
6.3.6 小结 78
6.4 10046与等待事件 78
6.4.1 10046事件的使用 78
6.4.2 10046 与db_file_multiblock_read_count80
6.4.3 10046与执行计划的选择 82
6.4.4 db_file_multiblock_read_count与系统的IO能力 83
6.4.5 小结 85
第二篇 存储优化篇
第7章 表空间的存储管理与优化技术89
7.1 表空间的作用与分类 89
7.2 字典管理表空间 90
7.2.1 字典管理表空间的特性 90
7.2.2 字典管理表空间的缺点 91
7.2.3 字典管理表空间的优化 92
7.3 本地管理表空间 92
7.3.1 本地管理表空间的特性 92
7.3.2 管理位图块的内部结构 94
7.3.3 本地管理表空间的优点 94
7.4 段自动管理表空间 95
7.4.1 段自动管理表空间的特性95
7.4.2 位图管理段内部结构 96
7.4.3 段自动管理表空间的优化98
7.5 9i对表空间的管理优化 98
7.5.1 自动undo管理的表空间 98
7.5.2 完全本地的临时表空间 99
7.6 Oracle 10g对表空间的优化99
7.7 小结 99
7.8 附录 99
第8章 关于Oracle数据库中行迁移/行链接的问题 101
8.1 行迁移/行链接的简介 101
8.2 行迁移/行链接的检测方法 106
8.3 行迁移/行链接的清除方法 108
第9章 HWM与数据库性能的探讨 121
9.1 什么是HWM 121
9.2 初始创建的table中HWM的不同情况122
9.3 insert数据时HWM的移动 128
9.4 HWM对性能的影响 131
9.5 何时应该降低HWM 135
9.5.1 对于LMT下的FLM 135
9.5.2 对于ASSM 136
9.6 如何降低HWM 137
9.6.1 Move 137
9.6.2 DBMS_REDEFINITION 142
9.6.3 Shrink 143
9.6.4 小结 148
9.7 其他几种会移动HWM的操作 148
9.7.1 Insert Append 148
9.7.2 Truncate 152
第10章 调整I/O相关的等待 153
10.1 Oracle数据库I/O相关竞争等待简介153
10.2 Oracle数据库I/O相关竞争等待的处理方法 154
10.3 Oracle数据库I/O相关的等待事件和相应的解决方法 157
10.3.1 数据文件相关的I/O等待事件158
10.3.2 控制文件相关I/O等待事件163
10.3.3 重做日志文件相关的等待事件164
10.3.4 高速缓存区相关的I/O等待事件166
10.4 小结 169
第11章 Oracle在Solaris的 VxFS上的异步I/O问题 171
11.1 VxFS文件系统的简介 171
11.2 VxFS文件系统上如何启用异步I/O171
11.3 如何检测在VxFS文件系统上是否支持异步I/O 172
11.4 如何查看VxFS文件系统上异步I/O的性能 173
11.5 如何转换VxFS文件系统上数据文件为支持异步I/O的
数据文件 174
第12章 关于Freelists和 Freelist roups的研究 177
12.1 什么是Freelists 177
12.2 Freelists是否已经过时 178
12.3 Freelists存储在哪里 178
12.4 有多少种free list 180
12.5 进程请求空闲块的过程 182
12.6 块在free list间的移动 184
12.7 关于free list将导致大量空间浪费的误解 186
12.8 对于Freelists和Freelist Groups的一个比喻 186
12.9 与Freelists和Freelist Groups相关的等待事件 186
第三篇 内存调整篇
第13章 自动PGA管理──原理及优化193
13.1 什么是PGA内存自动管理 193
13.2 PGA Advice功能 199
13.3 自动PGA内存管理相关初始化参数201
第14章 32bit Oracle SGA扩展原理和 SGAPGA的制约
关系 203
14.1 如何识别32bit的Oracle 203
14.2 为何存在1.7GB的限制 204
14.3 32bit下SGA与PGA之间的制约关系207
第15章 KEEP池和RECYCLE池 213
15.1 Oracle的数据缓冲池 213
15.2 KEEP池和RECYCLE池 214
15.2.1 KEEP池 215
15.2.2 RECYCLE池 219
15.3 小结 221
第16章 深度分析数据库的热点块问题223
16.1 热点块的定义 223
16.2 数据缓冲区的结构 223
16.3 如何确定热点对象 224
16.4 热点问题的解决 228
16.5 热点块的其他相关症状 230
16.6 小结 231
第17章 Shared Pool原理及性能分析232
17.1 Shared Pool的基本原理 232
17.2 Shared Pool的设置说明 232
17.2.1 基本知识 233
17.2.2 Shared Pool的Free List管理234
17.2.3 了解X$KSMSP视图 239
17.3 诊断和解决ORA-04031错误243
17.3.1 什么是ORA-04031错误 243
17.3.2 内存泄露 244
17.3.3 绑定变量和cursor_sharing245
17.3.4 使用Flush Shared Pool缓解共享池问题 246
17.3.5 shared_pool_reserved_size参数的设置及作用 246
17.3.6 其他 248
17.3.7 模拟ORA-04031错误 248
17.4 Library Cache Pin及Library ache Lock分析 251
17.4.1 Library Cache Pin等待事件252
17.4.2 Library Cache Lock等待事件257
17.5 诊断案例一 258
17.6 诊断案例二 266
17.7 小结 268
第四篇 诊断案例篇
第18章 一次性能调整过程总结 273
18.1 系统环境 273
18.2 基本的调优过程 273
18.2.1 db file scattered read273
18.2.2 db file sequential read274
18.2.3 Enqueue 275
18.2.4 Latch Free 275
18.3 小结 281
第19章 电信业Oracle优化手记 283
19.1 一条SQL语句要运行2年怎么办283
19.2 优化的传统定律和新时尚 285
19.2.1 index和表同一个表空间(过时)86
19.2.2 定期重建索引(过时) 287
19.2.3 裸设备应该取代文件系统(过时)287
19.2.4 初始参数设置cursor_sharing=similar(不一定有效) 288
19.2.5 初始参数设置fast=true(有效) 289
19.3 联机重做日志的优化 289
19.3.1 联机重做日志组内创建多个成员 289
19.3.2 加大redo log的容量 290
第20章 一次诊断和解决CPU利用率高的问题分析 291
20.1 问题的具体描述 291
20.2 问题的详细诊断解决过程 292
20.3 小结 296
第21章 一次异常内存消耗问题的诊断及解决 297
21.1 问题发现 297
21.2 解决过程 297
21.2.1 环境介绍 297
21.2.2 问题现象 297
21.2.3 对比分析 299
21.2.4 假设和分析 300
21.2.5 找到根源 302
21.2.6 解决问题 303
21.3 小结 305
第22章 如何捕获问题SQL解决过度CPU消耗问题 307
22.1 检查当前情况 307
22.2 使用Top工具辅助诊断 308
22.3 检查进程数量 309
22.4 登录数据库 309
22.5 捕获相关SQL 311
22.6 创建新的索引以消除全表扫描313
22.7 观察系统状况 314
22.8 性能何以提高 315
22.9 小结 317
第23章 一条SQL导致数据库整体性能下降的诊断及解决 319
23.1 现象 319
23.2 诊断与解决 319
第24章 Library Cache Lock成因和解决方法的探讨 327
24.1 几个相关的概念 327
24.1.1 什么是库高速缓存(Library Cache) 327
24.1.2 一个SQL语句的处理流程327
24.1.3 硬分析(Hard Parse) 328
24.1.4 软分析(Soft Parse) 328
24.1.5 分析树 328
24.1.6 执行计划 329
24.2 了解Library Cache Lock329
24.2.1 几种容易引起Library Cache Lock的情况 329
24.2.2 几种防患的方法 330
24.3 解决问题的方法 330
24.3.1 使用X$KGLLK和systemstate事件解决问题 331
24.3.2 使用v$session和systemstate事件解决问题 341
24.4 小结 348
第五篇 SQL优化及其他
第25章 Oracle数据库优化之索引(Index)简介 351
25.1 索引的作用 352
25.2 索引管理的常见问题 353
25.3 索引的管理 360
25.4 一些索引管理的脚本 363
第26章 CBO成本计算初探 367
26.1 建立测试数据 367
26.2 CBO计算成本原理初探 369
26.3 初始化参数以及优化器模式对执行计划的影响 371
26.3.1 初始化参数db_file_multiblock_read_count371
26.3.2 初始化参数ptimizer_index_cost_adj 373
26.3.3 优化器模式FIRST_ROWS对执行计划的影响 374
26.4 小结 375
第27章 Bitmap索引 377
27.1 Bitmap索引的概念 377
27.2 建立测试例子 378
27.3 Bitmap索引的特点 380
27.3.1 Bitmap索引比B树索引要节省空间380
27.3.2 Bitmap索引建立的速度比较快382
27.3.3 基于规则的优化器无法使用Bitmap索引 382
27.3.4 Bitmap索引存储NULL值 384
27.3.5 通过Bitmap索引访问表记录385
27.3.6 Bitmap索引对批量DML操作只需要索引一次 390
27.3.7 Bitmap索引的锁机制 390
27.4 Bitmap索引的适用范围 390
27.5 Bitmap索引的使用限制 391
27.6 Bitmap Join索引简介 391
第28章 翻页SQL优化实例 395
28.1 系统环境 395
28.2 优化效果 395
第29章 使用物化视图进行翻页性能调整405
29.1 系统环境 405
29.2 问题描述 405
29.3 捕获排序SQL语句 406
29.4 确定典型问题SQL 407
29.5 选择解决办法 409
29.6 进一步的调整优化 410
29.7 小结 412
第30章 如何给Large Delete 操作提速近千倍 413
30.1 背景描述 413
30.1.1 任务描述 413
30.1.2 数量级统计和描述 413
30.2 背景知识——Bulk Binding414
30.2.1 什么是Bulk Binding 414
30.2.2 Bulk Binding的优点是什么415
30.2.3 如何进行批量绑定(Bulk Binds)415
30.3 优化过程详解 420
30.3.1 第一次优化——处理庞大的IN-LIST操作 420
30.3.2 第二次优化——分段操作422
30.3.3 第三次优化——拆分DELETE操作423
30.3.4 第四次优化——使用FORALL处理批量作业 424
30.3.5 第五次优化——使用FORALL+原子级操作 426
30.4 小结 430
第31章 Web分页与优化技术 431
31.1 什么是Web分页 431
31.2 表数据普通查询分页 431
31.3 FIRST_ROWS对分页的影响 434
31.4 带排序需求的分页 439
31.5 分页的速度优化 445
31.6 分页中的注意事项 450
31.6.1 真实案例──表中存在union all的视图时,可能选择错误的执行计划 450
31.6.2 真实案例──ROWID分页中,执行计划的错误选择与处理 452
31.6.3 真实案例──使用rownum得到意想不到的结果 455
31.7 小结 456
第32章 Oracle数据封锁机制研究 457
32.1 数据库锁的基本概念 457
32.2 Oracle多粒度封锁机制介绍457
32.2.1 Oracle的TX锁(事务锁、行级锁) 458
32.2.2 TM锁(表级锁) 459
32.3 Oracle 多粒度封锁机制的监控461
32.3.1 系统视图介绍 461
32.3.2 监控脚本 462
32.4 Oracle 多粒度封锁机制示例463
32.4.1 操作同一行数据引发的锁阻塞463
32.4.2 实体完整性引发的锁阻塞465
32.4.3 参照完整性引发的锁阻塞466
32.4.4 外键未加索引引发的锁阻塞468
32.4.5 部分回滚对锁的影响 470
32.4.6 锁的排队机制 472
32.4.7 ITL Slot不足引发的锁阻塞474
32.4.8 Bitmap索引引发的锁阻塞475
32.4.9 死锁分析 475
32.4.10 表级锁的使能 476
32.4.11 row_locking参数 478
32.5 Oracle 多粒度封锁机制总结 478