《Oracle Database 11gR2性能调整与优化》PDF下载

  • 购买积分:25 如何计算积分?
  • 作  者:(美)RichardNiemiec著;杨中,朱波,吕学勇译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2014
  • ISBN:9787302339052
  • 页数:996 页
图书介绍:本书介绍了使用经过验证的调优方法来维持高性能的Oracle Database 11g环境的最佳途径。Niemiec提供了数百个用以提高系统性能的重要技巧,和大量用于说明最佳实践内幕的真实范例。全书着重介绍如何使用Oracle Database 11g和11g R2中新增的优化选项。帮助中到高级的数据库管理员和开发人员编写更快、更干净的代码,并从根本上建立更高效、安全、耐用的系统。

第1章 11g R1&R2新特性介绍(针对DBA和开发者) 1

1.1 轮到Exadata出场了! 3

1.2 高级压缩 6

1.3 自动诊断信息库(Automatic Diagnostic Repository,ADR) 7

1.4 自动共享内存管理(Automatic Shared Memory Management,ASMM)的改进 8

1.5 ASM的改进 9

1.5.1 从ASM首选镜像读取 10

1.5.2 滚动升级/打补丁 10

1.5.3 更快的重新平衡 11

1.5.4 ASM磁盘组兼容性 11

1.5.5 ASMCMD命令扩展 12

1.6 自动SQL优化 12

1.7 数据卫士的增强 13

1.7.1 快照备用(Snapshot Standby) 14

1.7.2 活动数据卫士 14

1.7.3 混合平台支持 15

1.7.4 高级压缩支持逻辑备用数据库(11gR2) 15

1.7.5 透明数据加密支持逻辑备用数据库 15

1.7.6 增强的数据泵压缩 15

1.7.7 数据泵加密Dump文件集 16

1.7.8 数据泵的传统模式 16

1.8 增强了的统计信息 16

1.8.1 增强了的I/O统计信息 16

1.8.2 减少收集分区对象的统计信息 16

1.8.3 待定统计信息 17

1.8.4 多列统计信息 17

1.8.5 表达式统计信息 17

1.9 闪回数据归档(Flashback Data Archive,FBDA) 18

1.10 健康监控器(Health Monitor) 18

1.11 事件打包服务(Incident Packaging Service,IPS) 21

1.12 不可视索引(invisible index) 22

1.13 分区新特性 22

1.13.1 区间分区 23

1.13.2 REF分区 23

1.13.3 系统分区 25

1.13.4 虚拟列分区 26

1.13.5 分区顾问 26

1.14 只读表 26

1.15 RAC One Node和RAC Patching 27

1.16 真正应用测试(Real Application Testing,RAT) 28

1.17 SQL性能分析器(SQL Performance Analyzer,SPA) 29

1.18 结果集缓存(Result Cache) 29

1.19 RMAN的新特性 30

1.19.1 备份的优化 30

1.19.2 长期备份处理的改进 30

1.19.3 并行备份巨大的数据文件 30

1.19.4 更快的备份压缩(改进的压缩) 31

1.19.5 活动数据库复制(Active Database Duplication) 31

1.19.6 更好的恢复目录管理 32

1.19.7 增强的归档日志删除策略 32

1.19.8 数据恢复顾问(Data Recovery Advisor) 32

1.19.9 虚拟专用目录 35

1.19.1 0主动的健康检查 36

1.19.1 1块恢复(闪回日志) 37

1.19.1 2块恢复(物理备用) 37

1.20 安全文件 37

1.20.1 压缩 38

1.20.2 加密 38

1.20.3 重复数据删除 38

1.21 流(GoldenGate是流的未来)的增强 40

1.21.1 XStream In 40

1.21.2 XStream Out 40

1.21.3 流支持高级压缩(11gR2) 40

1.22 临时表空间的收缩 40

1.23 透明数据加密(TDE)的改进 41

1.24 11g新的后台进程 41

1.25 版本对照表 42

1.26 新特性回顾 47

1.27 参考文献 48

第2章 索引基本原理(针对DBA和初级开发人员) 49

2.1 索引基本概念 50

2.2 不可视索引 52

2.3 组合索引 55

2.4 索引抑制 56

2.4.1 使用不等于运算符(?、!=) 56

2.4.2 使用IS NULL或ISNOT NULL 57

2.4.3 使用LIKE 58

2.4.4 使用函数 59

2.4.5 比较不匹配的数据类型 59

2.5 选择性 60

2.6 集群因子 60

2.7 二元高度(Binary Height) 61

2.8 使用直方图 64

2.9 快速全扫描 65

2.10 跳跃式扫描 66

2.11 索引的类型 67

2.11.1 B树索引 67

2.11.2 位图索引 68

2.11.3 哈希索引 70

2.11.4 索引组织表 71

2.11.5 反键索引 71

2.11.6 基于函数的索引 72

2.11.7 分区索引 73

2.11.8 位图连接索引 75

2.12 快速重建索引 76

2.13 在线重建索引 76

2.14 要诀回顾 77

2.15 参考文献 78

第3章 磁盘安装启用的方法和ASM(针对DBA) 81

3.1 磁盘阵列:必然之选 82

3.1.1 使用磁盘阵列改进性能和可用性 82

3.1.2 所需的磁盘数量 83

3.1.3 可用的RAID级别 83

3.1.4 更新的RAID 5 84

3.2 传统文件系统的安装和维护 85

3.3 在硬件磁盘之间分布关键数据文件 85

3.3.1 分开存储数据和索引文件 86

3.3.2 避免I/O磁盘争用 87

3.3.3 通过移动数据文件来均衡文件I/O 88

3.4 本地管理的表空间 89

3.4.1 创建本地管理的表空间 89

3.4.2 把字典管理的表空间迁移到本地管理的表空间 90

3.4.3 Oracle大文件表空间 90

3.4.4 Oracle管理文件 91

3.5 ASM简介 92

3.5.1 IT部门内各个角色之间的沟通 93

3.5.2 ASM实例 93

3.5.3 ASM初始化参数 95

3.5.4 ASM的安装 95

3.5.5 ASM初始化参数和SGA调整 96

3.5.6 ASM和权限 96

3.5.7 ASM磁盘 97

3.5.8 ASM和多路径 99

3.5.9 ASM磁盘组 99

3.5.10 ASM磁盘组和数据库 101

3.5.11 ASM冗余和故障组 102

3.5.12 新的空间相关列 103

3.5.13 集群同步服务 104

3.5.14 数据库实例和ASM 105

3.5.15 使用ASM进行数据库整合和集群化 105

3.5.16 支持ASM的数据库进程 106

3.5.17 大文件和ASM 106

3.5.18 支持ASM的数据库初始化参数 107

3.5.19 ASM和数据库部署最佳实践 107

3.5.20 ASM存储管理和分配 108

3.5.21 ASM重新平衡和重新分布 108

3.6 使用分区来避免磁盘争用 110

3.6.1 获得关于分区的更多信息 112

3.6.2 其他类型的分区 112

3.6.3 Oracle 11gR2的新分区选项 115

3.6.4 其他分区选项 117

3.7 使用索引分区 119

3.8 导出分区 120

3.9 消除碎片 120

3.9.1 使用正确的区大小 121

3.9.2 创建新的表空间并把数据移到其中 121

3.9.3 导出和重新导入表 123

3.9.4 正确设定PCTFREE以避免链化(Chaining)现象 123

3.9.5 重建数据库 125

3.10 增加日志文件尺寸和LOG_CHECKPOINT_INTERVAL以提高速度 125

3.10.1 确定重做日志文件的大小是否存在问题 126

3.10.2 确定日志文件的大小和检查点的时间间隔 126

3.11 快速恢复区(Fast Recovery Area,FRA) 128

3.12 增加恢复的可能性:在每次批处理后提交 129

3.12.1 把大的事务隔离到它们自己的回滚段上 129

3.12.2 使用UNDO表空间 130

3.12.3 监控UNDO空间 131

3.12.4 结束有问题的会话 131

3.13 在不同磁盘和控制器上存放多个控制文件 132

3.14 磁盘I/O的其他注意事项和提示 133

3.15 设计阶段需要注意的问题 133

3.16 要诀回顾 134

3.17 参考文献 135

第4章 通过初始化参数调优数据库(针对DBA) 137

4.1 升级到Oracle 11gR2之后 138

4.2 识别重要的初始化参数 141

4.3 在不重启数据库的情况下修改初始化参数 143

4.4 通过Oracle实用程序洞察初始化参数 149

4.5 用企业管理器查看初始化参数 150

4.6 优化DB_CACHE_SIZE来提高性能 151

4.6.1 使用V$DB_CACHE_ADVICE优化DB_CACHE_SIZE 153

4.6.2 保持数据缓存命中率超过95% 153

4.6.3 监控V$SQLAREA视图以查找较慢的查询 153

4.7 设定DB_BLOCK_SIZE来反映数据读的大小 156

4.8 把SGA_MAX_SIZE设置为主内存大小的25%到50% 157

4.9 优化SHARED_POOL_SIZE以获取最佳性能 158

4.9.1 使用存储过程来优化共享SQL区域的使用 158

4.9.2 设定足够大的SHARED_POOL_SIZE以保证充分利用DB_CACHE_SIZE 160

4.9.3 保证数据字典缓存命中率至少为95% 160

4.9.4 保证库缓存的重载率为0,并使命中率在95%以上 161

4.9.5 使用可用内存来判断SHARED_POOL_SIZE是否设置正确 164

4.9.6 使用X$KSMSP表详细观察共享池 164

4.9.7 关于缓存大小需要记住的要点 165

4.9.8 与初始化参数相关的等待 166

4.10 在Oracle中使用多个缓冲池 167

4.10.1 与DB_CACHE_SIZE相关并为数据分配内存的池 167

4.10.2 修改LRU算法 168

4.10.3 与SHARED_POOL_SIZE相关并为语句分配内存的池 168

4.11 调整PGA_AGGREGATE_TARGET以优化内存的使用 169

4.12 修改SGA大小以避免换页(Paging)和交换(Swapping) 170

4.13 了解Oracle优化器 170

4.14 创建足够的调度程序(Dispatcher) 171

4.14.1 足够的打开的游标(OPEN_CURSORS) 172

4.14.2 不要让DDL语句失败(使用DDL锁超时机制) 172

4.15 两个重要的Exadata初始化参数(仅针对Exadata) 172

4.16 25个需要深思熟虑的重要初始化参数 173

4.16.1 历年的初始化参数 175

4.16.2 查找未公开的初始化参数 176

4.17 理解典型的服务器 176

4.17.1 典型服务器的建模 177

4.17.2 Oracle Application数据库选型 178

4.18 要诀回顾 179

4.19 参考文献 180

第5章 企业管理器和网格控制器(针对DBA和开发人员) 183

5.1 企业管理器(EM)基础 185

5.2 从AllTargets和其他分组开始 187

5.3 SQL性能分析器(SPA) 188

5.4 ADDM 191

5.4.1 “数据库实例服务器”选项卡和“数据库管理”选项卡 196

5.4.2 “数据库实例服务器”选项卡:表空间 197

5.4.3 “数据库实例服务器”选项卡:聚焦实例级别 198

5.4.4 “数据库实例服务器”选项卡:所有初始化参数 199

5.4.5 “数据库实例服务器”选项卡:管理优化器统计 200

5.4.6 “数据库实例服务器”选项卡:资源管理器(消费者组) 202

5.4.7 “数据库维护”选项卡 203

5.4.8 “数据库拓扑”选项卡 203

5.4.9 “数据库性能”选项卡 204

5.5 监控主机 211

5.6 监控应用服务器 213

5.7 监控Web应用程序 216

5.8 SQL顾问(SQL Advisors) 218

5.9 Deployments选项卡(补丁选项) 219

5.10 调度中心和Jobs选项卡 220

5.11 Reports选项卡 221

5.12 ASM(自动存储管理)的性能 223

5.13 真正应用测试(数据库回放) 225

5.14 Exadata的企业管理器 226

5.15 小结 227

5.16 要诀回顾 228

5.17 参考文献 228

第6章 使用EXPLAIN PLAN和SQL计划管理(针对开发人员和DBA) 229

6.1 Oracle的SQL跟踪(SQL Trace)实用工具 230

6.1.1 对简单查询使用SQL跟踪的简单步骤 230

6.1.2 TRACE输出部分 234

6.1.3 深入探讨TKPROF输出 236

6.2 使用DBMS_MONITOR 238

6.3 单独使用EXPLAIN PLAN 242

6.3.1 EXPLAIN PLAN——自顶而下还是从下往上读 245

6.3.2 EXPLAIN PLAN的另一种输出方法:构建树结构 250

6.3.3 使用执行树的另一个例子 251

6.3.4 在开发者产品中利用跟踪/EXPLAIN发现有问题的查询 254

6.3.5 PLAN_TABLE表中的重要列 254

6.3.6 未公开的跟踪初始化参数 255

6.4 使用STORED OUTLINES(存储纲要) 257

6.5 使用SPM(11g新特性) 259

6.6 要诀回顾 267

6.7 参考文献 269

第7章 基本的提示语法(针对开发人员和DBA) 271

7.1 最常用的提示 272

7.1.1 慎用提示 273

7.1.2 首先修正设计方案 273

7.2 可用提示及归类 274

7.2.1 执行路径提示 274

7.2.2 访问方法提示 275

7.2.3 查询转换提示 275

7.2.4 连接操作提示 275

7.2.5 并行执行提示 276

7.2.6 其他提示 276

7.3 指定提示 276

7.4 指定多个提示 278

7.5 使用别名时,提示别名而非表名 278

7.6 提示 278

7.6.1 Oracle的演示样板:HR方案 279

7.6.2 FIRST_ROWS提示 279

7.6.3 ALL_ROWS提示 280

7.6.4 FULL提示 280

7.6.5 INDEX提示 281

7.6.6 NO_INDEX提示 282

7.6.7 INDEX_JOIN提示 283

7.6.8 INDEX_COMBINE提示 284

7.6.9 INDEX_ASC提示 284

7.6.10 INDEX_DESC提示 285

7.6.11 INDEX_FFS提示 285

7.6.12 ORDERED提示 286

7.6.13 LEADING提示 287

7.6.14 NO_EXPAND提示 287

7.6.15 DRIVING_SITE提示 288

7.6.16 USE_MERGE提示 289

7.6.17 USE_NL提示 290

7.6.18 USE_HASH提示 291

7.6.19 QB_NAME提示 292

7.6.20 PUSH_SUBQ提示 292

7.6.21 PARALLEL提示 293

7.6.22 NO_PARALLEL提示 294

7.6.23 PARALLEL_INDEX提示 294

7.6.24 PQ_DISTRIBUTE提示 295

7.6.25 APPEND提示 296

7.6.26 NOAPPEND提示 296

7.6.27 CACHE提示 297

7.6.28 NOCACHE提示 297

7.6.29 RESULT_CACHE提示 298

7.6.30 CURSOR_SHARING_EXACT提示 298

7.7 杂项提示及注意事项 299

7.7.1 未公开的提示 300

7.7.2 如何在视图中使用提示 301

7.7.3 关于提示和STORED OUTLINES(11g中的SPM)的注意事项 301

7.8 提示为什么不起作用 302

7.9 提示一览 302

7.10 要诀回顾 303

7.11 参考文献 305

第8章 查询优化(针对开发人员和初级DBA) 307

8.1 应该优化哪些查询?查询V$SQLAREA和V$SQL视图 308

8.1.1 从V$SQLAREA视图中选出最糟糕的查询 308

8.1.2 从V$SQL视图中选出最糟糕的查询 310

8.2 使用Oracle 11g视图定位占用大量资源的会话和查询 311

8.2.1 从V$SESSMETRIC视图中选出当前最占用资源的会话 311

8.2.2 查看可用的AWR快照 312

8.2.3 从DBA_HIST_SQLSTAT视图中发现最糟糕的查询 312

8.2.4 从DBA_HIST_SQLSTAT视图中选择查询文本 313

8.2.5 从DBA_HIST_SQL_PLAN视图中选出查询EXPLAIN PLAN 314

8.3 何时应该使用索引 315

8.4 忘记了索引怎么办 316

8.4.1 建立索引 316

8.4.2 不可视索引(invisible index) 317

8.4.3 查看表上的索引 317

8.4.4 在列上正确建立索引了吗? 318

8.5 建立了差的索引怎么办 318

8.6 删除索引时保持谨慎 321

8.7 在SELECT和WHERE子句中的列上建立索引 321

8.8 使用索引快速全扫描 323

8.9 使查询“魔术”般加速 325

8.10 在内存中缓存表 326

8.11 使用11g新引入的结果集缓存(Result Cache) 327

8.12 在多个索引间选择(使用选择性最佳的索引) 328

8.13 索引合并 329

8.14 可能被抑制的索引 331

8.15 基于函数的索引 333

8.16 虚拟列(Virtual Column) 334

8.17 “古怪”的OR 334

8.18 使用EXISTS函数和嵌套子查询 336

8.19 表就是视图 337

8.20 SQL和“大一统”理论 337

8.21 Oracle Database 11g中的优化变化 337

8.22 Oracle 11g自动SQL优化 338

8.22.1 保证执行优化操作的用户能访问API 338

8.22.2 创建优化任务 338

8.22.3 确定从顾问日志中可以查看到任务 339

8.22.4 执行SQL优化任务 339

8.22.5 查看优化任务的状态 339

8.22.6 显示SQL优化顾问生成的报告 340

8.22.7 检查报告输出 340

8.23 使用SQL优化顾问自动优化SQL语句 342

8.23.1 启用自动SQL优化顾问 342

8.23.2 配置自动SQL优化顾问 343

8.23.3 查看自动SQL优化的结果 343

8.24 使用SPA 347

8.25 要诀回顾 352

8.26 参考文献 353

第9章 表连接和其他高级优化(针对高级DBA和开发人员) 355

9.1 RAT 357

9.2 SPA 362

9.2.1 创建SQL优化集 363

9.2.2 创建分析任务 363

9.2.3 执行分析任务 364

9.2.4 查询性能分析的顾问任务 365

9.2.5 取消正在执行的SPA分析任务 365

9.2.6 删除SPA分析任务 365

9.2.7 确定活动的SQL优化集 365

9.2.8 删除SQL优化集引用 366

9.2.9 删除SQL优化集 366

9.3 连接方法 367

9.3.1 嵌套循环连接 367

9.3.2 排序合并连接 368

9.3.3 集群连接 369

9.3.4 哈希连接 369

9.3.5 索引合并连接 371

9.4 表连接相关的初始化参数 373

9.5 双表连接:等尺寸表(基于成本) 374

9.6 双表索引连接:等尺寸表(基于成本) 377

9.7 强制使用特定的连接方法 381

9.8 排除多表连接中的连接记录(候选行) 383

9.9 大小不同的表间的双表连接 384

9.10 三表连接:不那么有趣 387

9.11 位图连接索引 389

9.11.1 位图索引 389

9.11.2 位图连接索引 390

9.11.3 位图连接索引的最佳应用 392

9.12 第三方产品性能优化 395

9.13 优化分布式查询 398

9.14 一切就绪 400

9.15 其他优化技术 401

9.15.1 外部表 401

9.15.2 数据快照太旧(Snapshot Too Old):开发人员的编程问题 405

9.15.3 设置事件以转储每次等待 406

9.15.4 从14小时到30秒——EXISTS操作符 407

9.16 在块级别进行优化(高级内容) 409

9.16.1 数据块转储中的关键部分 412

9.16.2 索引块转储简介 418

9.17 使用简单的数学方法进行优化 420

9.17.1 传统的数学分析 421

9.17.2 7步方法论 421

9.17.3 模式分析 426

9.17.4 数学方法总结 431

9.18 连接优化:关系模型与对象关系模型的性能对比 431

9.18.1 使用的模型 433

9.18.2 结果 433

9.18.3 总结 441

9.19 要诀回顾 443

9.20 参考文献 444

第10章 使用PL/SQL提升性能(针对开发人员和DBA) 447

10.1 利用PL/SQL函数结果集缓存提升性能(11g新特性) 449

10.2 直接在PL/SQL表达式中引用序列(11g新特性) 458

10.3 在SQL函数调用中使用命名参数(11g新特性) 461

10.4 使用CONTINUE语句简化循环(11g新特性) 463

10.5 利用编译时警告捕捉编程错误(11g增强特性) 466

10.6 使用表触发器(11g增强特性) 468

10.7 使用本地编译提升性能(11g增强特性) 473

10.8 使用优化的编译器使性能最优(11g增强特性) 476

10.9 使用DBMS_APPLICATION_INFO包进行实时监控 481

10.10 在数据库表中记录计时信息 483

10.11 减少PL/SQL程序的单元迭代数量和迭代时间 485

10.12 使用ROWID进行迭代处理 488

10.13 将数据类型、IF条件排序和PLS_INTEGER标准化 490

10.13.1 确保比较运算中的数据类型相同 490

10.13.2 根据条件出现的频率来排序IF条件 492

10.13.3 使用PL/SQL数据类型PLS_INTEGER进行整数运算 492

10.14 减少对SYSDATE的调用 493

10.15 减少MOD函数的使用 495

10.16 通过固定PL/SQL对象提升共享池的使用 496

10.16.1 将PL/SQL对象语句固定(缓存)到内存中 497

10.16.2 固定所有的包 497

10.17 识别需要固定的PL/SQL对象 498

10.18 使用和修改DBMS_SHARED_POOL.SIZES 498

10.19 从DBA_OBJECT_SIZE中获取详细的对象信息 500

10.20 发现无效对象 500

10.21 发现已禁用的触发器 502

10.22 将PL/SQL关联数组用于快速参考表查询 503

10.23 查找和优化所使用对象的SQL 506

10.24 在处理DATE数据类型时使用时间组件 508

10.25 使用PL/SQL优化PL/SQL 511

10.26 理解PL/SQL对象定位的含义 511

10.27 使用回滚段打开大型游标 512

10.28 使用数据库临时表提高性能 514

10.29 限制动态SQL的使用 515

10.30 使用管道表函数建立复杂的结果集 515

10.31 别管调试命令 520

10.32 “跟着感觉走”:为初学者准备的例子 525

10.32.1 PL/SQL示例 526

10.32.2 创建过程的例子 526

10.32.3 从PL/SQL中执行过程的例子 527

10.32.4 创建函数的例子 527

10.32.5 在SQL中执行get_cust_name函数 527

10.32.6 创建程序包 527

10.32.7 在数据库触发器中使用PL/SQL 528

10.33 要诀回顾 528

10.34 参考文献 530

第11章 Exadata、RAC调优和并行特性的使用 531

11.1 Exadata术语和基础知识 533

11.2 Exadata详细信息 534

11.3 Exadata存储扩展柜简介 536

11.4 Exalogic简介 536

11.5 智能扫描(Smart Scan) 537

11.6 闪存(Flash Cache) 537

11.7 存储索引(Storage Indexes) 540

11.8 混合列压缩(11.2 新特性) 541

11.9 IORM 542

11.10 在Exadata中使用所有的Oracle安全优势 542

11.11 最佳实践 542

11.12 小结:Exadata=根本性改变! 543

11.13 Oracle Database Appliance 544

11.14 SPARC SuperCluster 544

11.15 Oracle Exalytics商业智能一体机 545

11.16 其他可以考虑的Oracle硬件 546

11.16.1 Oracle大数据设备 546

11.16.2 ZFS存储服务器 546

11.16.3 Pillar存储系统 546

11.16.4 StorageTek模块化磁带库系统 546

11.17 Oracle公共云和Oracle社交网络 547

11.18 并行数据库 547

11.19 RAC 548

11.20 RAC性能优化概述 552

11.20.1 RAC集群互连的性能 553

11.20.2 寻找RAC等待事件——会话等待 553

11.20.3 RAC等待事件和互联统计信息 554

11.20.4 集群互连优化——硬件层 560

11.20.5 使用企业管理器网格控制器优化RAC 565

11.21 并行操作的基本概念 570

11.22 并行DML语句和操作 572

11.23 管理并行服务器资源和并行语句排队 573

11.24 并行度和分区 573

11.25 操作内并行和操作间并行 574

11.26 使用并行操作创建表和索引的示例 576

11.27 并行DML语句和示例 578

11.27.1 并行DML的约束条件 578

11.27.2 并行DML语句示例 579

11.28 通过V$视图监控并行操作 580

11.28.1 V$PQ_TQSTAT视图 580

11.28.2 V$PQ_SYSSTAT视图 581

11.28.3 V$PQ_SESSTAT视图 584

11.29 在并行操作中使用EXPLAIN PLAN和AUTOTRACE 585

11.30 优化并行执行和初始化参数 589

11.31 并行加载 592

11.32 性能比较和监控并行操作 593

11.33 优化RAC中的并行操作 595

11.33.1 并行操作的目标 595

11.33.2 RAC并行使用模型 595

11.33.3 init.ora参数 596

11.33.4 查看并行统计数据的V$视图 596

11.33.5 并行配置和相关基线测试 596

11.33.6 并行查询测试示例 597

11.33.7 Create TableAs 599

11.33.8 建立索引 599

11.33.9 性能注意事项和小结 600

11.34 其他的并行操作注意事项 600

11.35 Oracle的联机文档 600

11.36 要诀回顾 601

11.37 参考文献 602

第12章 V$视图(针对开发人员和DBA) 605

12.1 创建和授权访问V$视图 606

12.2 获取构建V$视图的X$脚本列表 610

12.3 使用有帮助的V$脚本 614

12.3.1 基本的数据库信息 614

12.3.2 AWR(自动负载资料库)的基本信息 615

12.3.3 基本的版权信息 616

12.3.4 数据库中已安装的选项 617

12.4 内存分配概要(V$SGA) 619

12.4.1 AMM(自动内存管理)与MEMORY_TARGET参数 619

12.4.2 详尽的内存分配(V$SGASTAT) 621

12.5 在V$PARAMETER视图里找出spfile.ora/init.ora参数设置 622

12.6 判定数据的命中(VSYSSTAT和V$SYSMETRIC) 623

12.7 判定数据字典的命中率(V$ROWCACHE) 625

12.8 判定共享SQL和PL/SQL的命中率(V$LIBRARYCACHE) 625

12.9 确定需要保留在内存中(固定住)的PL/SQL对象 629

12.10 监控V$SESSION_LONGOPS视图以定位有问题的查询 630

12.11 通过V$SQLAREA发现有问题的查询 632

12.12 检查用户的当前操作及其使用的资源 633

12.12.1 查找用户正在访问的对象 634

12.12.2 获取详细的用户信息 634

12.13 使用索引 635

12.14 确定锁定问题 637

12.14.1 杀掉有问题的会话 639

12.14.2 找出使用多个会话的用户 640

12.15 找出磁盘I/O问题 641

12.16 发现回滚段的争用 644

12.17 确定是否有足够多的空闲列表 645

12.18 检查权限和角色 647

12.19 等待事件V$视图 649

12.20 一些主要的V$视图类别 652

12.21 要诀回顾 660

12.22 参考文献 661

第13章 X$表(针对高级DBA) 663

13.1 X$表介绍 664

13.1.1 有关X$表的误解 665

13.1.2 授权查看X$表 666

13.2 创建V$视图和X$表 667

13.3 获得所有X$表的列表 669

13.4 获得所有X$索引的列表 670

13.5 对X$表和索引使用的提示 671

13.6 监控共享池的空间分配 672

1 3.7 创建查询脚本来监控共享池 673

13.7.1 ORA-04031错误 673

13.7.2 空间分配过大而引起的争用 674

13.7.3 共享池碎片化 675

13.7.4 共享池和Java池中空闲内存过低 676

13.7.5 库缓存命中率 677

13.7.6 过高的硬解析 679

13.7.7 互斥锁/闩锁等待和休眠 680

13.7.8 其他调整选项 681

13.8 获得重做日志的信息 682

13.9 设置初始化参数 683

13.10 缓冲区缓存/数据块的详细信息 686

13.10.1 缓存状态 687

13.10.2 占用数据块缓存的段 688

13.10.3 热数据块/闩锁争用和等待事件 690

13.11 获得实例/数据库相关的信息 694

13.12 高效使用X$表及相关策略 695

13.13 Oracle内部的相关主题 696

13.13.1 跟踪 696

13.13.2 DBMS_TRACE包 700

13.13.3 事件 701

13.13.4 转储(dump) 702

13.13.5 oradebug命令 702

13.13.6 TRCSESS工具 705

13.14 阅读跟踪文件 705

13.14.1 等待信息和响应时间 708

13.14.2 递归调用 709

13.14.3 模块信息 709

13.14.4 提交 710

13.14.5 UNMAP 710

13.14.6 绑定变量 710

13.14.7 错误 711

13.15 X$表分组 711

13.16 X$表与非V$固定视图的联系 725

13.17 常见的X$表连接 726

13.18 X$表的命名 728

13.19 要诀回顾 736

13.20 参考文献 736

第14章 使用Statspack和AWR报告调优Wait、闩锁(Latch)和互斥锁(Mutex) 739

14.1 11gR2(11.2 )中Statspack和AWR报告的新特性 740

14.2 安装Statspack 741

14.2.1 perfstat账户的安全管理 742

14.2.2 安装之后 742

14.2.3 收集统计数据 743

14.2.4 运行统计数据报告 746

14.3 AWR和AWR报告 747

14.3.1 手动管理AWR 747

14.3.2 AWR自动快照 749

14.3.3 AWR快照报告 749

14.3.4 在Oracle企业管理器网格控制器中运行AWR报告 751

14.4 Statspack和AWR输出解析 754

14.4.1 报告头信息(Header) 754

14.4.2 负载概要 755

14.4.3 实例效率 756

14.4.4 Top等待事件 759

14.4.5 Oracle Bugs 769

14.4.6 Oracle影子进程的生命周期 771

14.4.7 RAC等待事件和互连统计数据 772

14.4.8 TOP SQL语句 773

14.4.9 实例活动统计数据 775

14.4.10 表空间和文件I/O的统计数据 779

14.4.11 段统计数据 782

14.4.12 其他的内存统计数据 783

14.4.13 UNDO统计数据 788

14.4.14 闩锁和互斥锁统计信息 789

14.4.15 在块级别调优和查看(高级) 797

14.4.16 数据字典和库缓存的统计数据 800

14.4.17 SGA内存统计数据 802

14.4.18 非默认的初始化参数 803

14.5 AWR报告和Statspack输出结果中需要首先查看的10项内容 804

14.5.1 管理Statspack数据 805

14.5.2 升级Statspack 806

14.5.3 删除Statspack 806

14.6 新ADDM报告的快速说明 806

14.7 11gR2脚本 810

14.8 要诀回顾 811

14.9 参考文献 812

第15章 施行快速系统审查(针对DBA) 815

15.1 总体绩效指数(TPI) 816

15.2 训练绩效指数(EPI) 816

15.3 系统绩效指数(SPI) 819

15.4 内存绩效指数(MPI) 821

15.4.1 排名前25的“内存滥用”语句是否优化 822

15.4.2 10大“内存滥用”语句在所有语句中所占的比重 823

15.4.3 缓冲区缓存命中率 824

15.4.4 数据字典缓存命中率 826

15.4.5 库缓存命中率 827

15.4.6 PGA内存中排序命中率 827

15.4.7 空闲的数据缓冲区的比例 828

15.4.8 有效地使用结果集缓存 830

15.4.9 固定/缓存对象 830

15.5 磁盘绩效指数(DPI) 831

15.5.1 优化滥用磁盘读操作的前25条语句 832

15.5.2 最滥用磁盘读操作的前10条语句占所有语句磁盘读的比例 833

15.5.3 分离表和索引 834

15.5.4 关键任务表管理 834

15.5.5 分离关键的Oracle文件 835

15.5.6 自动UNDO管理 836

15.5.7 临时段的平衡 839

15.6 总体绩效指数(Total Performance Index,TPI) 840

15.7 系统综合检查的示例 841

15.7.1 评级系统 841

15.7.2 系统审查评级类别的示例 841

15.7.3 需要立即采取行动的问题项 843

15.7.4 其他需要采取行动的问题项 843

15.8 系统信息列表 843

15.8.1 与内存有关的数值 844

15.8.2 与磁盘有关的数值 844

15.8.3 与CPU有关的数值 844

15.8.4 与备份和恢复有关的信息 845

15.8.5 命名约定和/或标准以及安全信息问题 845

15.8.6 DBA知识评级 846

15.9 TPI和系统检查需要考虑的其他项 846

15.10 要诀回顾 847

15.11 参考文献 847

第16章 运用UNIX实用工具来监控系统(针对DBA) 849

16.1 UNIX/Linux实用工具 850

16.2 使用sar命令监控CPU的使用情况 850

16.2.1 sar-u(检查CPU的繁忙程度) 850

16.2.2 sar-d命令(找出I/O问题) 852

16.2.3 sar-b命令(检查缓冲区高速缓存) 855

16.2.4 sar-q命令(检查运行队列和交换队列的长度) 855

16.3 使用sar命令和vmstat命令监控调页/交换 856

16.3.1 使用sar命令的-p选项报告调页活动 856

16.3.2 使用sar命令的-w选项报告交换和切换活动 857

16.3.3 使用sar命令的-r选项报告空闲内存和空闲交换空间 857

16.3.4 使用sar命令的-g选项报告调页活动 858

16.3.5 使用sar-wpgr命令报告内存资源的使用情况 858

16.4 使用top命令找出系统上最差的用户 860

16.5 使用uptime命令监控CPU负载 862

16.6 使用mpstat命令辨认CPU瓶颈 862

16.7 结合使用ps命令和选定的V$视图 863

16.8 使用iostat命令辨认磁盘I/O瓶颈 866

16.8.1 为磁盘驱动器sd15、sd16、sd17和sd18使用iostat的-d选项 867

16.8.2 使用iostat的-D选项 867

16.8.3 使用iostat的-x选项 867

16.8.4 iostat的-x选项与shell脚本中的逻辑相结合 868

16.9 使用ipcs命令测定共享内存 869

16.10 使用vmstat命令监控系统负载 870

16.11 监控磁盘空闲空间 871

16.12 监控网络性能 872

16.12.1 使用spray命令进行监控 875

16.12.2 使用nfsstat-c监控网络性能 876

16.12.3 使用netstat监控网络性能 877

16.12.4 显示可调参数的当前值 878

16.12.5 修改配置信息文件 880

16.12.6 影响性能的其他因素 880

16.13 改善性能的其他途径 881

16.14 要诀回顾 882

16.15 参考文献 882

附录A 重要的初始化参数(针对DBA) 883

附录B VS视图(针对DBA和开发人员) 925

附录C X$表(针对DBA) 979