定 价:¥168.00
作 者: | [美] 理查德·尼米克(Richard Niemiec) 著 |
出版社: | 清华大学出版社 |
丛编项: | |
标 签: | 暂缺 |
ISBN: | 9787302522027 | 出版时间: | 2019-04-01 | 包装: | 平装 |
开本: | 16 | 页数: | 884 | 字数: |
第1章 Oracle Database 12cR1和12cR2新特性介绍(针对DBA和开发人员) 1
1.1 Oracle Database 12cR1(12.1.0.1) 4
1.1.1 VARCHAR2和NVARCHAR2的大小限制增加到32K 4
1.1.2 局部索引 4
1.1.3 不可视列 5
1.1.4 相同列上的多个索引 5
1.1.5 获取前x行 6
1.1.6 可插拔数据库(PDB) 7
1.1.7 Oracle数据库云服务(数据库即服务) 9
1.1.8 PDB级别:MEMORY_LIMIT和MEMORY_MINIMUM(12cR2) 14
1.1.9 在导入时改变压缩方式 14
1.1.10 自适应查询优化 15
1.1.11 PGA_AGGREGATE_LIMIT 15
1.1.12 UNION / UNION ALL的并发执行 16
1.1.13 调用者权限函数可以做结果集缓存 16
1.1.14 新的DBMS_UTILITY.EXPAND_SQL_TEXT包 16
1.1.15 列的默认值可以基于序列 16
1.1.16 用于智能闪存的多个SSD设备 16
1.1.17 基于成本的优化器统计信息的并发收集 16
1.1.18 增强的系统统计信息 17
1.1.19 用于可能失控的查询的资源管理器 17
1.1.20 自动数据优化(ADO) 17
1.1.21 全局索引维护:DROP和TRUNCATE分区操作 18
1.1.22 ASM磁盘清理 18
1.1.23 在线操作能力的提升 18
1.1.24 数据卫士的改进 19
1.1.25 RMAN改进 19
1.2 Oracle Database 12cR1(12.1.0.2) 19
1.2.1 IM内存数据库 19
1.2.2 高级索引压缩 22
1.2.3 自动大表缓存 22
1.2.4 FDA对容器数据库的支持 22
1.2.5 全数据库缓存 22
1.2.6 JSON支持 22
1.2.7 FIPS 140加密参数 22
1.2.8 PDB子集克隆 22
1.2.9 快速Home目录创建:创建“黄金映像” 22
1.3 Oracle Database 12cR2(12.2) 23
1.3.1 应用开发 23
1.3.2 降低迁移到Oracle的成本和问题的增强功能 23
1.3.3 可用性 24
1.3.4 大数据 25
1.3.5 压缩和存档 26
1.3.6 Oracle RAC和GI 26
1.3.7 安全 27
1.4 Oracle 12c中新的后台进程 27
1.5 Exadata——新版本X6! 27
1.6 版本对比 28
1.7 新特性回顾 31
第2章 索引的基本原理(针对DBA和初级开发人员) 33
2.1 索引的基本概念 34
2.2 不可视索引 36
2.3 相同列上的多个索引 38
2.4 复合索引 41
2.5 索引抑制 42
2.5.1 使用不等于运算符(<>、!=) 43
2.5.2 使用IS NULL或IS NOT NULL 43
2.5.3 使用LIKE 44
2.5.4 使用函数 45
2.5.5 比较不匹配的数据类型 45
2.6 选择性 46
2.7 聚簇因子 46
2.8 二元高度 47
2.9 使用直方图 50
2.10 快速全扫描 51
2.11 跳跃式扫描 51
2.12 索引的类型 52
2.12.1 B树索引 52
2.12.2 位图索引 53
2.12.3 哈希索引 55
2.12.4 索引组织表 56
2.12.5 反向键索引 56
2.12.6 基于函数的索引 56
2.12.7 分区索引 57
2.12.8 12cR2中分区索引的新特性 59
2.12.9 位图连接索引 60
2.13 快速重建索引 60
2.14 在线重建索引 60
2.15 要诀回顾 61
第3章 可插拔数据库、磁盘实施方法和ASM(针对DBA) 63
3.1 可插拔数据库(Oracle 12c新增) 64
3.1.1 CDB或PDB创建的对象 65
3.1.2 创建PDB的多种方法 66
3.1.3 可插拔数据库的一些强大命令 66
3.1.4 在PDB中使用ALTER SYSTEM和其他一些命令 70
3.1.5 在可插拔数据库中使用In-Memory(IM) 71
3.1.6 可插拔数据库在12cR2中的其他新特性 71
3.1.7 子集备库(12cR2新增特性) 71
3.2 磁盘阵列 72
3.2.1 使用磁盘阵列改进性能和可用性 72
3.2.2 所需的磁盘数量 72
3.2.3 可用的RAID级别 73
3.2.4 更新的RAID 5 73
3.2.5 SSD固态硬盘 74
3.2.6 ASM存储管理(条带/镜像) 74
3.3 传统文件系统的安装和维护 75
3.3.1 考虑成本 75
3.3.2 分开存储数据和索引文件 75
3.3.3 避免I/O磁盘争用 76
3.4 Oracle 12c热图和自动数据优化(ADO) 77
3.5 Oracle 12c I/O性能跟踪视图(Outliers) 78
3.6 Oracle大文件表空间 78
3.7 ASM简介 79
3.7.1 IT部门内各个角色之间的沟通 80
3.7.2 ASM实例 80
3.7.3 ASM初始化参数 81
3.7.4 12c版本中ASM的安装 82
3.7.5 srvctl命令增强 88
3.7.6 ASM磁盘清洗(scrubbing) 91
3.7.7 ASM再平衡增强 92
3.7.8 ASM快速镜像再同步 94
3.7.9 ASM过滤驱动器(Filter Driver) 94
3.7.10 ASM和权限 101
3.7.11 ASM和多路径 103
3.7.12 大文件和ASM 104
3.8 使用分区来避免磁盘争用 104
3.8.1 获得关于分区的更多信息 106
3.8.2 其他类型的分区 106
3.8.3 (本地)分区索引 109
3.8.4 部分索引 109
3.8.5 全局索引维护:删除或截断分区操作 111
3.8.6 其他分区选项 111
3.8.7 使用索引分区 113
3.8.8 导出分区 113
3.9 消除碎片(按需操作——小心使用!) 114
3.9.1 使用正确的区块大小 114
3.9.2 正确设定PCTFREE以避免链化(Chaining)现象 115
3.9.3 使用自动段空间管理(ASSM) 115
3.10 增加日志文件尺寸和LOG_CHECKPOINT_INTERVAL以提高速度 116
3.11 确定重做日志文件的大小是否存在问题 116
3.11.1 确定日志文件的大小和检查点的时间间隔 117
3.11.2 其他有帮助的重做日志命令 117
3.12 在不同的磁盘和控制器上存放多个控制文件 118
3.13 磁盘I/O的其他注意事项和提示 119
3.14 设计阶段需要注意的问题 119
3.15 要诀回顾 120
第4章 通过初始化参数调优数据库(针对DBA) 123
4.1 升级到Oracle 12c之后 124
4.2 使用SEC_CASE_SENSITIVE_LOGON 125
4.3 与性能相关的重要的内存初始化参数 126
4.4 PDB级:MEMORY_LIMIT和MEMORY_MINIMUM 128
4.5 内存数据库(INMEMORY_SIZE) 129
4.6 在不重启数据库的情况下修改初始化参数 133
4.7 修改PDB级别的初始化参数 136
4.8 通过Oracle实用程序洞察初始化参数 137
4.9 用企业管理器查看初始化参数 137
4.10 优化DB_CACHE_SIZE来提高性能 138
4.11 使用V$DB_CACHE_ADVICE优化DB_CACHE_SIZE 140
4.12 设定DB_BLOCK_SIZE来反映数据读的大小 143
4.13 把SGA_MAX_SIZE设置为主内存大小的25%~50% 144
4.14 优化SHARED_POOL_SIZE以获取最佳性能 144
4.14.1 使用存储过程来优化共享SQL区域的使用 145
4.14.2 设定足够大的SHARED_POOL_SIZE以保证充分利用DB_CACHE_SIZE 146
4.14.3 保证数据字典缓存能够缓存足够对象 146
4.14.4 保证库缓存的重载率为0,并使命中率在95%以上 147
4.14.5 使用可用内存来判断SHARED_POOL_SIZE是否设置正确 149
4.14.6 使用X$KSMSP表详细观察共享池 150
4.14.7 关于缓存大小需要记住的要点 151
4.14.8 与初始化参数相关的等待 151
4.15 在Oracle中使用多个缓冲池 152
4.15.1 与DB_CACHE_SIZE相关并为数据分配内存的池 152
4.15.2 修改LRU算法 153
4.15.3 与SHARED_POOL_SIZE相关并为语句分配内存的池 153
4.16 调整PGA_AGGREGATE_TARGET以优化内存的使用 154
4.17 修改SGA大小以避免换页(Paging)和交换(Swapping) 155
4.18 了解Oracle优化器 155
4.19 创建足够的调度程序(Dispatcher) 156
4.19.1 要有足够的打开游标(OPEN_CURSORS) 157
4.19.2 不要让DDL语句失败(使用DDL锁超时机制) 157
4.20 两个重要的Exadata初始化参数(仅针对Exadata) 157
4.21 25个需要深思熟虑的重要初始化参数 157
4.21.1 历年的初始化参数 159
4.21.2 查找未公开的初始化参数 160
4.22 理解典型的服务器 161
4.22.1 典型服务器的建模 161
4.22.2 Oracle Application数据库选型 162
4.23 要诀回顾 166
第5章 Oracle企业管理器云控制器(针对DBA和开发人员) 169
5.1 Oracle企业管理器(EM)基础和通过Oracle云访问OEM 170
5.2 从All Targets和其他分组开始 173
5.3 使用OEM的Performance菜单进行监控和优化 175
5.3.1 Performance选项卡:Top Activity 175
5.3.2 Performance选项卡:SQL | SQL
Performance Analyzer 176
5.3.3 Performance选项卡:Real-Time ADDM 178
5.3.4 Performance选项卡:SQL | Access Advisor 181
5.3.5 Performance选项卡:管理Optimizer Statistics 182
5.3.6 Performance选项卡:AWR | AWR Administration 182
5.3.7 Performance选项卡:ASH Analytics 184
5.4 使用OEM Administration菜单进行监控和优化 185
5.4.1 Database Administration选项卡:Storage | Tablespaces 185
5.4.2 Database Administration选项卡:In-Memory Central和Initialization Parameters 187
5.4.3 Database Administration选项卡:全部初始化参数 188
5.4.4 Database Administration选项卡:Resource Manager (Consumer Groups) 188
5.5 使用OEM Database或Cluster Database菜单进行监控和优化 189
5.5.1 Database选项卡:Job Activity 189
5.5.2 Cluster Database选项卡:Configuration | Database Topology 190
5.6 监控主机 190
5.7 监控应用服务器和Web应用 191
5.8 真正应用测试(数据库回放) 193
5.9 小结 194
5.10 要诀回顾 194
第6章 使用EXPLAIN PLAN、TRACE和SQL计划管理(针对开发人员和DBA) 195
6.1 Oracle的SQL跟踪(SQL TRACE)实用工具 196
6.1.1 对简单查询使用SQL跟踪的简单步骤 196
6.1.2 TRACE输出部分 200
6.1.3 深入探讨TKPROF输出 201
6.2 使用DBMS_MONITOR 203
6.3 单独使用EXPLAIN PLAN 207
6.3.1 对简单查询使用的另一个EXPLAIN示例 208
6.3.2 EXPLAIN PLAN—— 自顶而下还是从下往上读取 209
6.3.3 在开发者产品中利用跟踪/EXPLAIN发现有问题的查询 213
6.3.4 PLAN_TABLE表中的重要列 214
6.3.5 使用DBMS_XPLAN 215
6.3.6 未公开的TRACE初始化参数 216
6.4 使用STORED OUTLINES(存储纲要) 217
6.5 使用SQL计划管理(SPM)和SPM示例 218
6.5.1 SPM术语 218
6.5.2 使用SPM 219
6.5.3 使用固定的SQL计划基线 223
6.5.4 从STORED OUTLINES移植到SQL计划管理 223
6.5.5 自适应计划(Oracle 12c新特性)和SPM 225
6.6 要诀回顾 231
第7章 基本的提示语法(针对开发人员和DBA) 235
7.1 最常用的提示 236
7.1.1 慎用提示 237
7.1.2 首先修正设计方案 237
7.2 可用提示及归类 238
7.2.1 执行路径提示 238
7.2.2 访问方法提示 238
7.2.3 查询转换提示 239
7.2.4 连接操作提示 239
7.2.5 并行执行提示 239
7.2.6 其他提示 240
7.3 指定提示 240
7.4 指定多个提示 241
7.5 使用别名时,提示别名而非表名 241
7.6 提示 242
7.6.1 Oracle的演示样板:HR方案 242
7.6.2 FIRST_ROWS提示 242
7.6.3 ALL_ROWS提示 243
7.6.4 FULL提示 243
7.6.5 INDEX提示 244
7.6.6 NO_INDEX提示 245
7.6.7 INDEX_JOIN提示 246
7.6.8 INDEX_COMBINE提示 246
7.6.9 INDEX_ASC提示 246
7.6.10 INDEX_DESC提示 247
7.6.11 INDEX_FFS提示 247
7.6.12 ORDERED提示 248
7.6.13 LEADING提示 249
7.6.14 NO_EXPAND提示 249
7.6.15 DRIVING_SITE提示 250
7.6.16 USE_MERGE提示 250
7.6.17 USE_NL提示 251
7.6.18 USE_HASH提示 252
7.6.19 QB_NAME提示 253
7.6.20 PUSH_SUBQ提示 253
7.6.21 PARALLEL提示 254
7.6.22 NO_PARALLEL提示 255
7.6.23 PARALLEL_INDEX提示 255
7.6.24 APPEND提示 255
7.6.25 NOAPPEND提示 256
7.6.26 CACHE提示 256
7.6.27 NOCACHE提示 257
7.6.28 RESULT_CACHE提示 257
7.6.29 CURSOR_SHARING_EXACT提示 258
7.6.30 INMEMORY、NO_INMEMORY及其他IM提示 258
7.6.31 USE_INVISIBLE_INDEXES提示 259
7.6.32 CONTAINERS提示 260
7.6.33 WITH_PLSQL提示 260
7.7 杂项提示及注意事项 260
7.7.1 未公开的提示 262
7.7.2 如何在视图中使用提示 263
7.7.3 关于提示和STORED OUTLINES(或SPM)的注意事项 263
7.8 提示为什么不起作用 263
7.9 提示一览 264
7.10 要诀回顾 265
第8章 查询优化(针对开发人员和初级DBA) 267
8.1 应该优化哪些查询?查询V$SQLAREA和V$SQL视图 268
8.1.1 从V$SQLAREA视图中选出最糟糕的查询 268
8.1.2 从V$SQL视图中选出最糟糕的查询 270
8.2 使用Oracle 12c视图定位占用大量资源的会话和查询 271
8.2.1 从V$SESSMETRIC视图中选出当前最占用资源的会话 271
8.2.2 查看可用的AWR快照 272
8.2.3 从DBA_HIST_SQLSTAT视图中发现最糟糕的查询 272
8.3 何时应该使用索引 272
8.3.1 从DBA_HIST_SQLTEXT视图中选择查询文本 273
8.3.2 从DBA_HIST_SQL_PLAN视图中选出查询的EXPLAIN PLAN 274
8.4 忘记了索引怎么办 275
8.4.1 建立索引 275
8.4.2 不可视索引(Invisible Index) 276
8.4.3 查看表上的索引 276
8.4.4 在列上正确建立索引了吗 276
8.5 建立了差的索引怎么办 277
8.6 删除索引时保持谨慎 279
8.7 在SELECT和WHERE子句中的列上建立索引 280
8.8 使用索引快速全扫描 281
8.9 使查询“魔术”般加速 283
8.10 在内存中缓存表 283
8.11 使用结果集缓存(Result Cache) 285
8.12 在多个索引间选择(使用选择性最佳的索引) 285
8.13 索引合并 287
8.14 可能被抑制的索引 289
8.15 基于函数的索引 290
8.16 虚拟列(Virtual Column) 291
8.17 “古怪”的OR 291
8.18 使用EXISTS函数和嵌套子查询 292
8.19 表就是视图 293
8.20 SQL和“大一统”理论 293
8.21 Oracle Database 12c中的优化变化 294
8.21.1 Oracle 12c自适应查询优化 294
8.21.2 自适应统计信息 300
8.21.3 Oracle 12c统计信息收集的更新和两种新的直方图 304
8.21.4 Oracle 12c SQL计划管理的更新 305
8.22 Oracle自动SQL优化 306
8.22.1 保证执行优化操作的用户能访问API 307
8.22.2 创建优化任务 307
8.22.3 确定从顾问日志中可以查看到任务 307
8.22.4 执行SQL优化任务 307
8.22.5 查看优化任务的状态 308
8.22.6 显示SQL优化顾问生成的报告 308
8.22.7 检查报告输出 308
8.23 使用SQL优化顾问自动优化SQL语句 310
8.23.1 启用自动SQL优化顾问 310
8.23.2 配置自动SQL优化顾问 310
8.23.3 查看自动SQL优化的结果 311
8.24 使用SQL性能分析器(SPA) 314
8.25 要诀回顾 319
第9章 表连接和其他高级优化(针对高级DBA和开发人员) 321
9.1 数据库回放(捕获/回放) 322
9.1.1 设置源数据库,为数据库回放捕获负载 323
9.1.2 准备捕获负载 323
9.1.3 捕获负载 323
9.1.4 准备负载以回放 324
9.1.5 为回放处理负载 325
9.1.6 准备回放负载 325
9.1.7 执行负载回放 325
9.2 SQL性能分析器(SPA) 327
9.2.1 创建SQL优化集 327
9.2.2 创建分析任务 328
9.2.3 执行分析任务 328
9.2.4 查询性能分析的顾问任务 329
9.2.5 取消正在执行的SPA分析任务 329
9.2.6 删除SPA分析任务 329
9.2.7 确定活动的SQL优化集 330
9.2.8 移除SQL优化集引用 330
9.2.9 删除SQL优化集 330
9.3 连接方法 331
9.3.1 嵌套循环连接 331
9.3.2 排序合并连接 332
9.3.3 聚簇连接 333
9.3.4 哈希连接 333
9.3.5 索引合并连接 334
9.4 表连接相关的初始化参数 336
9.5 双表连接:等尺寸表(基于成本) 337
9.6 双表索引连接:等尺寸表(基于成本) 340
9.7 强制使用特定的连接方法 343
9.8 排除多表连接中的连接记录(候选行) 345
9.9 大小不同的表间的双表连接 346
9.10 三表连接:不那么有趣 349
9.11 位图连接索引 350
9.11.1 位图索引 351
9.11.2 位图连接索引 352
9.11.3 位图连接索引的最佳应用 353
9.12 第三方产品性能优化 355
9.13 优化分布式查询 359
9.14 一切就绪 360
9.15 其他优化技术 361
9.15.1 外部表 361
9.15.2 数据快照太旧(Snapshot Too Old):开发人员的编程问题 364
9.15.3 设置事件以转储每次等待 365
9.15.4 从14小时到30秒—— EXISTS操作符 366
9.16 在块级别进行优化(高级内容) 367
9.16.1 数据块转储中的关键部分 370
9.16.2 索引块转储简介 376
9.17 使用简单的数学方法进行优化 378
9.17.1 传统的数学分析 378
9.17.2 七步方法论 378
9.17.3 性能推导公式 379
9.17.4 模式分析 383
9.17.5 数学方法总结 387
9.18 要诀回顾 387