书籍详情

Oracle数据库存储管理与性能优化

Oracle数据库存储管理与性能优化

作者:甘长春,张建军 著

出版社:中国铁道出版社

出版时间:2020-09-01

ISBN:9787113270339

定价:¥89.00

购买这本书可以去
内容简介
  本书以Oracle 11g为蓝本,在某些实践应用中也讲到了12c版本,全面系统地介绍了大型对象关系型数据库服务器Oracle性能优化方面的大部分内容,包括看懂SQL执行计划、Oracle存储管理、Oracle内存管理、Oracle性能指标及追踪、Oracle性能报告、Oracle实战案例等内容
作者简介
  甘长春老师毕业于北京交通大学电气工程及自动化专业,目前供职于中国铁路北京局集团公司。自从参加工作以来,先后参与了多个铁路应用项目的开发工作,同时也与多家IT企业合作研发数据库架构设计及开发项目。通过这些项目的开发,积累了一定的实践经验,并从中获取了一些数据库开发运维的心得。 除此之外,自2014年起,甘长春老师一直在天津大学软件学院从事兼职教学工作,所授课程为Oracle和PHP,教学经验的积累也让他更清晰地明白了如何把一个知识点讲解更清楚,力求引领读者尽快掌握书中所讲内容。 张建军,毕业于天津师范大学计算机科学与技术专业 ,现任天津市融创软通科技股份有限公司副总经理,教育培训事业部技术总监 ,高级工程师;Oracle认证专家,RedHad(红帽)认证专家, 截至目前有近20年的软件开发、项目管理及教育培训工作经验。
目录
第1章 Oracle体系结构概述 1
1.1 Oracle数据库进程结构 2
1.2 Oracle数据库逻辑结构 3
1.3 Oracle数据库物理结构 5
1.4 Oracle数据库逻辑结构与物理结构的耦合关系 6
1.5 本章小结 8
第2章 SQL执行计划 9
2.1 看懂SQL执行计划前需要掌握的概念 9
2.2 SQL*Plus的执行计划设置 12
2.2.1 设置Autotrace(自动跟踪)参数 12
2.2.2 在SQL*Plus中显示SQL执行计划 13
2.3 使用TOAD、SQL Developer工具 21
2.3.1 TOAD分析工具 21
2.3.2 SQL Developer分析工具 22
2.4 SQL解析 24
2.4.1 Oracle SQL的硬解析和软解析 27
2.4.2 动态分析采样 28
2.5 关于RBO与CBO 28
2.6 关于执行计划中的索引访问方法 30
2.6.1 索引唯一扫描(INDEX UNIQUE SCAN) 31
2.6.2 索引范围扫描(INDEX RANGE SCAN) 32
2.6.3 索引跳跃扫描(INDEX SKIP SCAN) 33
2.6.4 索引快速全扫描(INDEX FAST FULL SCAN) 34
2.7 通过DBMS_XPLAN包查看以往SQL的执行计划 35
2.8 常用Hints(提示) 36
2.8.1 与优化器模式相关的Hint 37
2.8.2 与表访问相关的Hint 40
2.8.3 与索引访问相关的Hint 40
2.8.4 与表连接顺序相关的Hint 47
2.9 实践案例:位图索引对性能的影响 48
2.10 实践案例:分区索引对性能的影响 52
2.10.1 关于分区索引的说明 52
2.10.2 分区索引实验 54
2.11 如何更好地判断SQL效率 71
2.12 本章小结 72
第3章 Oracle数据库存储结构 73
3.1 逻辑存储结构 73
3.1.1 块(Block) 73
3.1.2 区(Extent) 74
3.1.3 段(Segment) 75
3.1.4 表空间(Tablespace) 75
3.1.5 4种逻辑存储结构的关系 76
3.2 Oracle物理存储结构 76
3.3 本章小结 77
第4章 Oracle表空间 78
4.1 表空间管理 78
4.1.1 表空间(TABLESPACE)的类型 79
4.1.2 表空间(TABLESPACE)的管理 80
4.1.3 表空间(TABLESPACE)的创建 82
4.2 表空间的查看 88
4.2.1 表空间固定信息的查看 89
4.2.2 表空间动态信息的查看 90
4.3 表空间管理准则 91
4.4 创建表空间应遵循的一般原则 92
4.5 表空间创建模板及其删除应用场景分析 94
4.5.1 表空间创建模板语句 95
4.5.2 表空间删除的4种方式及其应用场景分析 96
4.6 关于表空间创建的数据文件DATAFILE参数 98
4.6.1 SIZE子句 99
4.6.2 EXTENT分区分配方案 99
4.6.3 关于REUSE(重复使用)的说明 99
4.7 关于表空间参数的其他说明 101
1.段Segment管理策略 101
2.Table/Segment/Extent/Block之间的关系 101
3.TABLESPACE和DATAFILE之间的关系 101
4.8 回收表空间中浪费的空间 101
4.8.1 查看表空间碎片率 102
4.8.2 得到表空间的DDL(创建)语句 103
4.8.3 表空间属性PCTINCREASE(百分比)参数的修改 105
4.8.4 回收表空间碎片 105
4.8.5 Oracle移动索引到其他表空间 112
4.9 TABLE的碎片回收 113
4.9.1 与回收TABLE碎片有关的两个存储过程 113
4.9.2 表碎片回收处理 118
4.10 Oracle 11g undo_retention(撤销保留时间) 120
4.10.1 关于undo 的参数 121
4.10.2 undo_retention(撤销保留时间)状态说明及参数调整 122
4.11 本章小结 123
第5章 自动存储管理(ASM) 125
5.1 ASM概述 125
5.1.1 ASM冗余 125
5.1.2 ASM进程 126
5.1.3 ASM实例和数据库实例对应关系 127
5.1.4 Cluster(集群) ASM 架构 127
5.2 ASM实例搭建 128
5.2.1 环境介绍 128
5.2.2 创建裸设备以及创建ASM磁盘组 129
5.2.3 安装Oracle 网络基础架构win64_11gR2_grid组件 133
5.2.4 后续处理 134
5.3 ASM实例管理 136
5.3.1 查看可用分区 137
5.3.2 加入ASM磁盘 138
5.3.3 开启CSS服务 139
5.3.4 新建ASM DiskGroup给数据库使用 139
5.4 磁盘组的管理 143
5.4.1 磁盘组的创建与删除 144
5.4.2 ASM磁盘的添加和删除 147
5.4.3 磁盘组信息的查询 149
5.4.4 磁盘组的重新平衡 150
5.4.5 磁盘组的加载和卸载 150
5.4.6 目录管理 151
5.4.7 别名管理 152
5.5 如何使用ASM磁盘组 153
5.5.1 创建数据文件 153
5.5.2 添加重做日志文件 157
5.5.3 创建数据库 159
5.6 本章小结 159
第6章 Oracle的内存结构 160
6.1 Oracle内存结构 160
6.1.1 SGA(系统全局区) 161
6.1.2 PGA(程序全局区) 163
6.1.3 UGA(用户全局区) 165
6.2 SGA组件介绍 165
6.2.1 固定SGA(Fixed SGA) 166
6.2.2 块缓冲区(Database Buffer Cache) 166
6.2.3 数据高速缓存的工作原理过程 167
6.2.4 重做日志缓冲区(Redo Log Buffer) 168
6.2.5 共享池(Shared Pool) 169
6.2.6 大池(Large Pool) 170
6.2.7 Java池(Java Pool) 170
6.2.8 流池(Stream Pool) 170
6.3 PGA结构 171
6.3.1 Private SQL Area(私有SQL区) 171
6.3.2 Work Area(工作区) 172
6.3.3 Session Memory 173
6.3.4 自动PGA管理 174
6.4 Oracle 11g系统进程介绍 175
6.4.1 数据库写进程(DBWn) 177
6.4.2 日志文件写进程(LGWR) 178
6.4.3 检查点进程(CKPT) 179
6.4.4 系统监控进程(SMON) 180
6.4.5 进程监控进程(PMON) 180
6.4.6 恢复进程(RECO) 180
6.4.7 作业队列进程(CJQn) 181
6.4.8 归档进程(ARCn) 181
6.4.9 队列监控进程(QMNn) 182
6.4.10 调度进程(Dnnn) 182
6.4.11 内存管理进程(MMAN) 182
6.4.12 恢复写入进程 (RVWR) 182
6.4.13 内存管理进程(MMON) 183
6.4.14 其他后台进程 183
6.5 自动共享内存管理(ASMM) 183
6.6 关于11g与12c内存管理 185
6.6.1 Orodo内存管理形式 186
6.6.2 11g下的AMM内存管理 187
6.7 本章小结 188
第7章 Oracle的内存分析与调整 189
7.1 Oracle 内存工作机制 189
7.2 内存使用情况分析 190
7.2.1 剩余内存 190
7.2.2 内存击中率 190
7.3 SQL效率及其他指标查看分析 193
7.3.1 检查占用CPU时间比较长的SQL语句 193
7.3.2 执行效率最差的SQL语句 194
7.3.3 识别低效率执行的语句 195
7.3.4 V$sqlarea视图提供的执行细节 196
7.3.5 查看数据库db_cache_size及各类pool_size值 198
7.4 Oracle内存调整——系统全局区SGA 199
7.5 Oracle内存调整——共享池(Shared Pool) 201
7.5.1 共享池(Shared Pool)相关视图 201
7.5.2 共享池(Shared Pool) 207
7.5.3 库高速缓存(Library Cache) 208
7.5.4 数据缓冲区(Buffer Cache) 215
7.5.5 重做日志缓冲区(Redo Log Buffer) 221
7.5.6 大池 222
7.5.7 Java池 222
7.5.8 流池 223
7.6 本章小结 223
第8章 Oracle动态性能指标 224
8.1 主要与Oracle动态性能指标相关的基础概念 224
8.2 从v$sysstat视图获取负载间档 228
8.2.1 Buffer Cache Hit Ratio(DB缓存命中率) 229
8.2.2 Soft Parse Ratio(软解析比率) 229
8.2.3 In-Memory Sort Ratio(内存排序率) 230
8.2.4 Parse To Execute Ratio(SQL解析执行比率) 230
8.2.5 Parse CPU To Total CPU Ratio(CPU花费比率) 230
8.2.6 Parse Time CPU To Parse Time Elapsed(锁竞争比率) 230
8.3 其他计算统计以衡量负载方式 231
8.3.1 Blocks Changed For Each Read(每次读引起的块改变) 231
8.3.2 Rows For Each Sort(每个排序引发的排序行量) 232
8.3.3 Oracle获取当前数据库负载情况信息 232
8.4 本章小结 234
第9章 Oracle的索引与性能 235
9.1 Oracle数据库索引类型 235
9.1.1 B*tree索引 235
9.1.2 位图索引(Bitmap Index) 236
9.1.3 位图连接索引(Bitmap Join Index) 237
9.1.4 基于函数的索引(Function-Based Index) 237
9.1.5 应用域索引(Application Domain Index) 239
9.1.6 Hash索引 242
9.1.7 分区索引 242
9.2 索引典型操作 243
9.2.1 典型创建操作 243
9.2.2 典型删除操作 243
9.2.3 典型移动操作 244
9.2.4 得到创建索引的SQL语句 244
9.2.5 查看数据库中的索引及跳过设置 246
9.2.6 通用索引删除脚本 246
9.3 有无索引及不同类型索引对查询效率高低影响实验 247
9.4 关于索引的建议 251
9.5 普通表转分区表实验及分区表相关信息查询 254
9.5.1 普通表转分区表实验环境搭建 254
9.5.2 普通表转分区表 255
9.5.3 查看Oracle都有哪些分区表 258
9.5.4 表分区查询 259
9.6 本章小结 259
第10章 Oracle性能实验 260
10.1 信息收集、库加压处理 260
10.1.1 信息收集处理 260
10.1.2 给数据库加压处理及瓶颈解决过程 270
10.1.3 存储过程使用绑定 272
10.1.4 将UPDATE命令加载到共享池并以并行方式执行 273
10.1.5 通过并发给数据库加压 273
10.1.6 查找SESSION ID及serial# 274
10.1.7 杀掉SESSION ID 275
10.1.8 通过merge命令加压 275
10.1.9 批量数据加压处理 277
10.2 信息查看跟踪SQL语句 278
10.2.1 比率相关 278
10.2.2 等待、锁及阻塞相关 286
10.2.3 获取SQL语句相关 302
10.2.4 资源消耗相关 310
10.2.5 游标相关 313
10.3 日常需要记录的监控点以及监控语句 315
10.4 关于Oracle的I/O 318
10.5 实验结论 319
10.5.1 调优过程 319
10.5.2 调优前后SPFILE参数文件对比 323
10.5.3 实验总结 326
10.6 本章小结 326
第11章 AWR报告 327
11.1 AWR报告综述 327
11.2 什么情况下会用到AWR 332
11.3 如何生成AWR报告 333
11.4 分析AWR报告 336
11.4.1 AWR报告头 336
11.4.2 Cache Sizes报告 337
11.4.3 Load Profile报告 337
11.4.4 Instance Efficiency Percentages报告 339
11.4.5 Shared Pool Statistics报告 341
11.4.6 Top 5 Timed Foreground Events(前5个严重等待事件)报告 341
11.4.7 SQL ordered by Elapsed Time报告 347
11.4.8 SQL ordered by CPU Time报告 348
11.5 使用脚本自动生成AWR报告 349
11.5.1 查快照snap_ID 349
11.5.2 建立脚本并执行 350
11.6 本章小结 351
第12章 Oracle的ADDM报告 352
12.1 Oracle性能调优综述 352
12.2 Oracle ADDM报告概述 353
12.2.1 使用addmrpt.sql来创建ADDM报告 353
12.2.2 使用DBMS_ADVISOR程序包来创建ADDM报告 354
12.3 ADDM报告实验 358
12.3.1 负荷环境搭建 358
12.3.2 第1次采集快照并施加负荷 359
12.3.3 采集第2次快照 359
12.3.4 创建一个优化任务并执行 360
12.3.5 查询建议结果 361
12.3.6 ADDM报告解释 361
12.4 本章小结 365
第13章 Oracle 11g R2 RAC集群部署实验 367
13.1 总体规划 367
13.1.1 部署环境 367
13.1.2 网络配置 368
13.1.3 Oracle软件组件 368
13.1.4 数据库配置 369
13.1.5 存储组件 369
13.2 服务器规划 370
13.2.1 通过StartWind 6.0虚拟磁盘 370
13.2.2 划分Oracle安装目录DB(F:)和虚拟内存(G:) 370
13.2.3 修改虚拟内存(两个节点都设置) 371
13.2.4 修改winrac1和winrac2的hosts文件 372
13.2.5 修改注册表,禁用媒体感知功能 372
13.3 网络规划 373
13.3.1 修改网卡名(两个节点都设置) 373
13.3.2 修改网卡优先级并配置IP 374
13.3.3 测试两点的连通性 375
13.4 存储规划 376
13.4.1 规划磁盘阵列 376
13.4.2 共享安装目录DB(F:)和C盘 377
13.5 安装Grid软件前的设置和检查 378
13.5.1 服务器时间同步 378
13.5.2 检测节点之间能否相互访问共享 378
13.5.3 检查Grid安装是否符合条件 379
13.6 Grid及数据库软件的安装 382
13.6.1 安装win64 grid 11.2.0.4.0集群管理软件 383
13.6.2 Clusterware安装校验(检查CRS资源状态) 387
13.6.3 安装DATABASE软件 388
13.6.4 创建ASM磁盘组 391
13.6.5 DBCA建立数据库 394
13.7 Oracle RAC集群管理常用操作 398
13.8 本章小结 401
第14章 Oracle特殊问题的解决案例 402
14.1 ORA-00257 archiver error 402
14.2 由于恢复区空间不足导致ORA-03113错误 404
14.3 解决Oracle SYSAUX空间占用严重问题 405
14.3.1 清理SYSAUX下的历史统计信息 406
14.3.2 清理SYAUX表空间中无效的ASH(活动会话历史)信息 407
14.3.3 检查SYSAUX表空间可收缩的数据文件 408
14.3.4 SYSAUX清理后的检查 409
后记 411
猜您喜欢

读书导航