《Oracle 9i性能调整》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:(美) Richard J. Niemiec著;王海涛,鹿凡译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2004
  • ISBN:7302080372
  • 页数:700 页
图书介绍:本书内容主要包括Oracle 9i 新增特性,Oracle 9i性能调整技巧和提示,init.ora参数设置和V$视图列表。

第1章 Oracle9i——Oracle9i新特性介绍(针对DBA和开发人员) 1

目 录 1

1.1 新的Oracle9i管理特性 2

1.1.1迁移注意事项 2

1.1.2不支持SVRMGRL和Connect Internal 3

1.1.3 DBCA和SYS账户安全性的增强 3

1.1.4服务器参数文件 3

1.1.5 Automatic Undo Management 4

1.1.6可恢复的空间分配 4

1.1.8 Oracle托管的文件 5

1.1.7默认的临时表空间 5

1.1.9动态内存管理 6

1.1.10支持多种数据库块大小 7

1.1.11 游标共享 8

1.1.12自调整的PGA 8

1.1.13联机重定义表 8

1.1.14其他管理特性 8

1.2新的Oracle9i体系结构特性 9

1.2.1新的分区选项和特性 9

1.2.3段空间自动管理 10

14.3.2 更新STATSPACK 5 10

1.2.2对象元数据的提取 10

1.2.4新的索引特性 11

1.3 新的Oracle9i数据仓库特性 12

1.3.1 外部表 12

1.3.2视图约束 12

1.3.3 多表INSERT语句 13

1.4.2 Oracle的CASE语句和表达式 14

1.4 新的Oracle9i SQL和PL/SQL特性 14

1.4.1 关联数组 14

1.4.3 Oracle的MERGE语句 15

1.4.4对ANSI/ISOSQL1999规范的支持 16

1.4.5其他的SQL和PL/SQL特性 16

1.5新的Oracle9i备份和恢复特性 18

1.5.1 快速启动故障恢复(基于时间) 18

1.5.2闪回查询 18

1.5.3 新的RMAN特性 19

1.6.1并行数据库 20

1.5.4新的Log Miner特性 20

1.6 实时应用群集(Real Application Clusters,RAC) 20

1.5.5 Oracle9i Data Guard 20

1.6.2 Oracle的RAC体系结构 21

1.6.3 Oracle RAC系统的内部运行机制 23

1.6.4 SCN处理 25

1.6.5小结 26

1.7技巧回顾 26

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

2.1基本的索引概念 28

2.2 组合索引 30

2.3 Oracle ROWID 31

2.4 限制索引 32

2.4.1 使用不等于操作符(?、!=) 32

2.4.2使用IS NULL或IS NOT NULL 32

10.10 使用和修改DBMS SHARED POO L.SIZES 34

2.4.3使用函数 34

2.4.4 比较不匹配的数据类型 34

2.5 选择性 35

2.6 群集因子(Clustering Factor) 35

2.7二元高度(binary height) 36

2.8使用柱状图 37

2.9快速全局扫描 38

2.10跳跃式扫描 39

2.11索引的类型 40

2.11.2位图索引 41

2.11.1 B-树索引 41

2.11.3 HASH索引 43

2.11.4索引编排表 44

2.11.5反转键索引 45

2.11.6基于函数的索引 45

2.11.7分区索引 47

2.13 技巧回顾 49

2.12快速重建索引 49

第3章 磁盘I/O和碎片(针对DBA) 52

3.1使用磁盘阵列 52

3.1.1 可用的RAID级别 53

3.1.2简化安装和维护 53

3.1.3磁盘阵列是否一直可用 54

3.2在可用的磁盘之间分布关键数据文件 54

3.1.4考虑代价 54

3.2.1分开存储数据和索引文件 55

3.2.2避免I/O磁盘争用 56

3.2.3通过移动数据文件来均衡文件I/O 57

3.3使用本地托管的表空间 58

3.3.1创建本地托管的表空间 58

3.3.2把字典托管的表空间迁移到本地托管的表空间 59

3.3.3使用Enterprise Manager查看文件/表空间的信息 60

3.4使用分区来避免磁盘争用 61

3.4.1 获得关于分区的更多信息 63

3.4.2其他类型的分区 64

3.4.3其他分区选项 67

3.5使用索引分区 69

3.6导出分区 70

3.7 消除碎片 71

3.7.2创建一个新表空间并把数据移到其中 72

3.7.1 使用正确的扩展大小 72

3.7.3导出和重新导入表 74

3.7.4正确设定比例以避免链化现象 75

3.7.5重建数据库 75

3.8使用撤消管理 77

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

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

3.8.3增加恢复的可能:在每次批处理后提交 81

3.9使用回滚段 81

3.9.1避免回滚段之间的争用 81

3.9.2监控回滚段的等待和争用 81

3.9.3增加回滚段 82

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

3.10 更简便的方法:UNDO表空间 83

3.11 结束有问题的会话 84

3.12通过内存排序来减少磁盘I/O 86

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

3.14对写操作频繁的数据使用裸设备来提高I/O 87

3.14.1使用裸设备的好处 87

3.15磁盘I/O的其他注意事项和提示 88

3.16设计阶段需要注意的问题 88

3.14.2使用裸设备的缺点 88

3.17技巧回顾 89

4.1重要的init.ora参数 91

第4章用初始化参数调整数据库(针对DBA) 91

4.2不用重启就修改init.ora文件 92

4.3 用Enterprise Manager查看init.ora参数 93

4.4 调整DB_CACHE_SIZE来提高性能 94

4.4.1 在调整DB_CACHE_SIZE时使用V$DB_CACHE_ADVICE 96

4.4.2保证数据缓存命中率超过95% 97

4.4.3 监控V$SQLAREA视图以查找较慢的查询 97

4.5 设定DB_BLOCK_SIZE来优化数据读取量的大小 100

4.5.1调整SHARED_POOL_SIZE以优化性能 101

4.5.2使用Oracle的多个缓冲池 110

4.5.3 调整PGA_AGGREGATE_TARGET以优化对内存的应用 112

4.5.4修改SGA大小以避免分页和交换 113

4.5.5 了解OPTIMIZER_MODE:基于代价和基于规则的优化 114

4.5.6创建足够的调度程序 115

4.5.7 25个重要的初始化参数 116

4.5.8未记录入档的init.ora参数 117

4.5.9 了解典型的服务器 118

4.5.10典型的服务器模式 118

4.6技巧回顾 119

第5章Enterprise Manager和调整包(针对DBA和开发人员) 122

5.1 Enterprise Manager控制台 123

5.2 Instance文件夹 123

5.2.1实例管理——状态窗口 123

5.2.2实例管理——启动选项 123

5.2.3实例管理——初始化参数 124

5.2.4实例管理——检查单个会话 125

5.2.5实例管理——Memory Advisor 125

5.3 Schema文件夹 126

5.3.1模式管理——检查特定的表 126

5.3.2模式管理——检查特定的索引 127

5.3.3 模式管理——检查SYS信息 128

5.4 Security文件夹 129

5.3.4模式管理——检查包、过程和触发器 129

5.5 Storage文件夹 132

5.6 Oracle SQL Scratchpad和SQL*PLUS表 132

5.7 Performance Manager 133

5.7.1 Performance Manager——Database Health Overview图表 134

5.7.2 Performance Manager——缓冲区缓存命中率 135

5.7.3 PerformanceManager——库缓存命中率 136

5.7.4 Performance Manager——数据字典缓存命中率 137

5.7.5 Performance Manager——SQL区域 137

5.7.6 Performance Manager——内存排序命中率 138

5.7.7 Performance Manager——系统I/O率 138

5.7.8 Performance Manager——数据库实例信息 139

5.7.9 Performance Manager——构建自定义的图表 140

5.7.10 Performance Manager——Top图表和会话 142

5.8 Oracle调整包——SQL Analyze 144

5.8.1 SQLAnalyze——EXPLAIN PLAN 145

5.8.2 SQLAnalyze——执行统计 146

5.8.3 SQLAnalyze——比较不同的计划 147

5.8.4 SQLAnalyze——调整向导 148

5.9索引调整向导 149

5.10 Oracle调整包——Oracle Expert 150

5.10.1 Oracle Expert——模式调整 150

5.10.2 Oracle Expert——为调整会话设定规则 151

5.10.4 Oracle Expert——检查建议 152

5.10.3 OracleExpert——进行修改并测试影响 152

5.10.5 Oracle Expert——了解建议的细节 153

5.10.6 Oracle Expert——所建议的系统范围内的修改 154

5.11 Oracle调整包——表空间映射 154

5.12 Oracle Expert分析报告 155

5.13商务影响报告 155

5.13.1服务级别的报告 156

5.13.2应用程序运行状况评估 156

5.14技巧回顾 158

第6章实用工具简介(针对DBA和开发人员) 160

6.1 Oracle的TRACE实用程序 160

6.1.1 对简单查询使用TRACE的简单步骤 161

6.1.2 TRACE输出部分 165

6.1.3更复杂的TKPROF输出 167

6.1.4深入探讨TKPROF输出 168

6.1.5 单独使用EXPLAIN PLAN 170

6.1.6 EXPLAIN PLAN——从上至下读取和从下至上读取 173

6.1.7阅读EXPLAIN PLAN 174

6.1.8 另一种EXPLAIN PLAN输出方法:构建树结构 178

6.1.9另一个使用树的例子 180

6.1.10在开发产品中利用TRACE/EXPLAIN发现有问题的查询 182

6.1.11 PLAN_TABLE表中的重要列 182

6.1.12 Oracle支持的一些有用的程序包 184

6.1.13适用于未记录入档的TRACE操作的INIT.ORA参数 185

6.1.14使用Stored Outline 186

6.2技巧回顾 193

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

7.1 最常用的提示 196

7.1.1谨慎使用提示 196

7.1.2首先修正设计方案 197

7.2可用的提示和分组 197

7.2.1 改变执行路径 197

7.2.2使用访问方法提示 197

7.2.3使用查询转换提示 198

7.2.4使用连接操作提示 198

7.2.5使用并行执行 198

7.2.6其他提示 198

7.4指定多个提示 199

7.3 指定提示 199

7.5使用别名 200

7.6使用提示 200

7.6.2使用RULE提示 201

7.6.1使用CHOOSE提示 201

7.6.3使用FIRST_ROWS提示 202

7.6.4 使用ALL_ROWS提示 203

7.6.5使用FULL提示 203

7.6.6使用INDEX提示 204

7.6.7使用NO_INDEX提示 205

7.6.8使用INDEX_JOIN提示 206

7.6.9使用AND_EQUAL提示 206

7.6.10使用INDEX_COMBINE提示 207

7.6.11使用INDEX_ASC提示 207

7.6.12使用INDEX_DESC提示 208

7.6.13使用INDEX_FFS提示 208

7.6.14使用ORDERED提示 209

7.6.15使用LEADING提示 210

7.6.16使用ORDERED_PREDICATES提示 210

7.6.17使用ROWID提示 211

7.6.19使用DRIVING_SITE提示 212

7.6.18使用NO_EXPAND提示 212

7.6.20使用USE_MERGE提示 213

7.6.21 使用USE_NL提示 214

7.6.22使用USE_HASH提示 215

7.6.23使用PUSH_SUBQ提示 215

7.6.24使用PARALLEL提示 216

7.6.25使用NOPARALLEL提示 217

7.6.26使用APPEND提示 217

7.6.27使用NOAPPEND提示 218

7.6.28使用CACHE提示 218

7.6.29使用NOCACHE提示 219

7.6.30 使用CLUSTER提示 219

7.6.31 使用HASH提示 220

7.6.32 使用CURSOR_SHARING_EXACT提示 220

7.8提示一览表 221

7.7使用提示可能遇到的问题 221

7.9技巧回顾 222

第8章 调整查询(针对初级DBA和开发人员) 225

8.1.1 在V$SQLAREA视图中选出最占用资源的查询 226

8.1.2在V$SQL视图中选出最占用资源的查询 226

8.1 查询V$SQLAREA和V$SQL 226

8.2确定何时使用索引 227

8.3遗忘索引 228

8.4创建索引 229

8.5查看表上的索引 229

8.6正确当地建立索引 230

8.7修正差的索引 231

8.8 在SELECT和WHERE中使用索引 232

8.10使查询魔术般加速 234

8.9使用快速全局扫描 234

8.11 在内存中缓存表 235

8.12使用多个索引(利用最佳选择性) 237

8.13使用索引合并 238

8.14处理受限制的索引 239

8.15使用基于函数的索引 241

8.16了解“古怪”的OR 241

8.17使用EXISTS函数 243

8.18技巧回顾 244

第9章表的连接和其他高级调整技术 246

9.1 连接方法 247

9.1.1嵌套循环连接 247

9.1.2排序合并连接 248

9.1.3群集连接 249

9.1.4哈希连接 249

9.1.5索引连接 250

9.2表连接的初始化参数 253

9.2.1排序合并连接参数 253

9.2.2哈希连接参数 253

9.3 比较主要的连接方法 253

9.4双表连接:等尺寸表(基于代价) 254

9.5双表索引连接:等尺寸表(基于代价) 257

9.6强制执行特殊的连接方法 259

9.7在多表连接中除去连接记录(侯选行) 262

9.8在大小不同的表间进行双表连接 263

9.9三表连接 266

9.10位图连接索引 269

9.11 第三方性能调整工具 274

9.12调整分布式查询 279

9.13一切就绪 281

9.14各种调整技术摘要 281

9.14.1实时应用群集(Real Application Clusters,RAC) 282

9.14.2 RedHat炙手可热:Linux造成的改变 283

9.14.3 外部表 284

9.14.4数据快照太旧:开发人员的编程难题 288

9.14.5设置事件以转储每次等待 289

9.14.6数据块转储:最后的建议(仅针对最高级的DBA) 290

9.15.1传统的数学分析 292

9.15使用简单的数学方法调整性能 292

9.15.2方法论的七个步骤 293

9.15.3模式分析 298

9.15.4数学方法总结 303

9.16更多的数学方法:应用控制理论 303

9.17技巧回顾 311

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

10.1 使用DBMS APPLICATION INFO进行实时监控 314

10.2在数据库的表中记录计时信息 316

10.3 减少PL/SQL程序的单元迭代和迭代的时间 319

10.4 使用ROWID进行迭代处理 322

10.5 将数据类型、IF语句的排列和PLS INTEGER标准化 323

10.5.1确保比较运算中的数据类型相同 324

10.5.3 使用PLS_INTEGER PL/SQL数据类型进行整数运算 326

10.5.2根据条件出现的频率来排序IF条件 326

10.6 减少对SYSDATE的调用 328

10.7 减少MOD函数的使用 329

10.8在共享池中固定对象 331

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

10.8.2固定所有的包 333

10.9标识需要固定的PL/SQL对象 333

10.11 从DBA OBJECT SIZE中获取详细的对象信息 336

10.12发现无效的对象 337

10.13 发现已禁用的触发器 338

10.14将PL/SQL表用于快速参考表查询 340

10.15 查找和调整所使用对象的SQL 342

10.16在处理DATE数据类型时使用时间信息 346

10.17 调整和测试PL/SQL 348

10.18 了解PL/SQL对象定位的含义 349

10.19使用回滚段打开大型游标 350

10.20使用数据库的临时表来提高性能 352

10.21集成用户跟踪机制以定位执行位置 352

10.22 限制动态SQL的使用 353

10.23 为初学者提供的例子 353

10.23.1创建PL/SQL代码 354

10.23.2创建过程 354

10.23.3执行PL/SQL过程 355

10.23.4创建函数 355

10.23.5 在SQL中执行GET_CUST_NAME函数 355

10.23.6创建数据包 355

10.23.7在数据库触发器中使用PL/SQL 356

10.24技巧回顾 356

第11章使用并行特性提高性能(针对DBA) 358

11.1 并行操作的基本概念 358

11.2 并行DML和DDL语句和操作 360

11.3 Oracle 9i的并行DML语句和操作 360

11.4并行处理和分区 361

11.5操作内部和操作之间的并行处理 361

11.6使用并行操作生成表和索引的示例 364

11.7并行DML语句和示例 366

11.7.1 并行DML的约束条件 366

11.7.2并行DML语句示例 367

11.8通过V$视图监控并行操作 368

11.8.1 V$PQ_TQSTAT 369

11.8.2 V$PQSYSSTAT 369

11.8.3 V$PQ_SESSTAT 372

11.9 在并行操作时使用EXPLAIN PLAN和AUTOTRACE 373

11.10调整并行执行和Oracle 9i初始化参数 377

11.11并行加载 381

11.12性能比较和监控并行操作 382

11.13使用并行处理时的其他注意事项 385

11.14技巧回顾 385

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

12.1 V$视图的创建和访问 388

12.1.1 获得所有V$视图的数量和列表 390

12.1.2查找用于创建V$视图的X$表 391

12.1.3查找组成DBA视图的底层对象 392

12.1.4使用有帮助的V$脚本 394

12.1.5 内存分配摘要(V$SGA) 397

12.1.6 内存分配的细节(V$SGASTAT) 398

12.1.7在V$PARAMETER中发现init.ora的设置 399

12.1.8 测定数据的命中率(V$SYSSTAT) 400

12.1.9测定数据字典的命中率(V$ROWCACHE) 401

12.1.10测定共享SQL和PL/SQL的命中率(V$LIBRARYCACHE) 401

12.1.11 确定需要固定的PL/SQL对象 402

12.1.12通过V$SQLAREA查找有问题的查询 403

12.1.13检查用户的当前操作及其使用的资源 404

12.1.14查找用户正在访问的对象 405

12.1.15使用索引 406

12.1.16确定锁定问题 408

12.1.17关闭有问题的会话 409

12.1.18查找使用多会话的用户 410

12.1.19查找磁盘I/O问题 411

12.1.20查找回滚段的内容 413

12.1.21检查空闲列表是否充足 414

12.1.22检查角色和权限设置 415

12.1.23 V$视图的种类 417

12.2技巧回顾 421

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

13.1 X$表介绍 423

13.1.1有关X$表的误解 424

13.1.2授权查看X$表 425

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

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

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

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

13.6共享池 432

13.7监控共享池的查询 433

13.7.1 ORA-04031错误 433

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

13.7.3碎片化 434

13.7.4共享池和/或Java池中空闲内存过低 435

13.7.5库缓存命中率 436

13.7.6大量的硬解析 438

13.7.7闩锁等待和/或休眠 438

13.7.8其他调整选项 439

13.8重做 440

13.9初始化参数 440

13.10缓存/数据块 444

13.10.1 缓存状态 445

13.10.2 占用数据块缓存的段 446

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

13.11 实例/数据库 452

13.12 高效使用X$表及其策略 453

13.13相关的Oracle内部机制 453

13.13.1 跟踪 453

13.13.2事件 453

13.13.3转储 454

13.13.4 Oradebug 455

13.14 X$表的分组 456

13.15 X$表及相关的非V$固定视图 470

13.16常见的X$表连接 472

13.16.1 9i中新增的X$表 474

13.17技巧回顾 476

13.16.2未记录入档的固定视图 476

13.16.3未来版本的影响 476

第14章 使用STATSPACK调整等待和闩锁(针对高级DBA) 478

14.1 安装STATSPACK 478

14.1.1 PERRFSTAT账户的安全管理 479

14.1.2安装之后 479

14.1.3搜集统计数据 480

14.1.4运行统计数据报表 483

14.2 解释STATSPACK的输出结果 483

14.2.1报表头信息 483

14.2.2 负载简档 484

14.2.3实例的效率 485

14.2.4首要等待事件 487

14.2.5首要的SQL语句 492

14.2.6实例活动统计数据 493

14.2.7表空间和文件I/O的统计数据 497

14.2.8其他的内存统计数据 498

14.2.9回滚/撤消统计数据 499

14.2.10闩锁统计数据 500

14.2.11 数据字典和库缓存的统计数据 504

14.2.12 SGA内存统计数据 506

14.2.13非默认的init.ora参数 508

14.3 STATSPACK输出结果中需首先查看的十项内容 508

14.3.1 管理STATSPACK数据 509

14.3.3 删除STATSPACK 510

14.4技巧回顾 510

第15章执行快速系统检查(针对DBA) 512

15.1 总体性能指数(TPI) 512

15.2教育性能指数(EPI) 513

15.3 系统性能指数(SPI) 515

15.4 内存性能指数(MPI) 516

15.4.1缓冲区命中率 517

15.4.2数据字典缓存命中率 518

15.4.4 内存排序命中率 519

15.4.3库缓存命中率 519

15.4.5空闲的数据缓冲区的比例 520

15.4.6最浪费内存的前十个语句占所有语句的比例 521

15.4.7调整前25个最浪费内存的语句 522

15.4.8固定/缓存对象 523

15.5磁盘性能指数(DPI) 524

15.5.1 调整滥用磁盘读操作的25个主要语句 525

15.5.2最浪费磁盘读操作的前十个语句占所有语句的比例 526

15.5.3 表/索引的分离 527

15.5.4关键任务表中的链接 527

15.5.5分离关键的Oracle文件 528

15.5.6回滚段的平衡 528

15.5.7临时段的平衡 529

15.6总体性能指数(TPI) 530

15.7.1 评级系统 531

15.7系统综合检查的示例 531

15.7.2系统检查评级分类的示例 532

15.7.3 需要立刻解决的问题项 533

15.7.4其他需要解决的问题项 533

15.8系统信息列表 533

15.8.1 与内存有关的值 534

15.8.2与磁盘有关的值 534

15.8.3与CPU有关的值 534

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

15.8.5命名约定和/或OFA标准以及安全信息 535

15.8.6 DBA知识评级 535

15.9技巧回顾 536

第16章 使用UNIX工具监控系统(针对DBA) 537

16.1 UNIX工具 537

16.1.1 使用sar命令监控CPU的使用 537

16.1.2使用top命令发现系统中最影响性能的用户 539

16.1.3使用uptime命令监控CPU的负载 540

16.1.4使用mpstat命令确定CPU瓶颈 541

16.1.5将ps命令与已选出的V$视图相结合 542

16.1.6使用sar命令监控磁盘I/O问题 545

16.1.7使用iostat确定磁盘I/O瓶颈 546

16.1.8使用sar命令和vmstat命令监控分页/交换 549

16.1.9使用ipcs命令确定共享内存的使用情况 551

16.1.10使用vmstat命令监控系统的负载 552

16.1.11 监控磁盘空闲空间 553

16.1.12监控网络性能 554

16.2技巧回顾 557

附录A 主要的in.t.ora参数(针对DBA) 558

A.1 不再支持的init.ora参数 558

A.2 不建议使用的init.ora参数 559

A.3 25个最重要的init.ora参数 559

A.5 最重要的13个未入档的init.ora参数 561

A.4必须记住的最重要的十个init.ora参数 561

A.6 已入档的init.ora参数列表(V$PARAMETER) 563

A.7 未入档的init.ora参数列表(x$ksppi/x$ksppcv) 573

A.8不写书的十个重要原因 574

A.9技巧回顾 574

附录B V$视图(针对DBA和开发人员) 575

B.1 V$视图、GV$视图和X$表的创建 575

B.2 Oracle9i(9.2.0.1.0)的GV$视图 576

B.3 Oracle9i(9.2.0.1.0)的V$视图 579

B.4用于创建V$视图的X$表的Oracle 9i脚本 582

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

C.1 按名称排序的Oracle9i X$表 675

C.2 Oracle9i X$索引 678

C.3 交叉引用V$视图的Oracle9i X$表 686

C.4 交叉引用X$表的Oracle9i GV$视图 692

C.5 GV$视图没有引用的Oracle9i X$表 699