《Oracle STATSPACK高性能调整技术》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)Donald K.Burleson著;袁勤勇等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2002
  • ISBN:711109882X
  • 页数:492 页
图书介绍:本书是Oracle公司官方推荐的使用STATSPACK进行高性能调整的专著,介绍了使用STATSPACK这一强大工具来诊断并优化系统性能的方法。

第一部分 方法和工具概述 1

第1章 Oracle调整概述 1

1.1 整体调整方法 1

1.1.1 服务器调整 4

1.1.2 网络调整 5

1.1.3 磁盘调整 5

1.1.4 实例调整 6

1.1.5 对象调整 7

1.1.6 SQL调整 8

1.1.7 用Oracle并行查询进行调整 8

1.1.8 调整Oracle并行服务器环境 8

1.2 Oracle和STATSPACK 9

1.3 小结 11

第2章 STATSPACK概述 12

2.1 STATSPACK体系结构 12

2.2 STATSPACK怎样收集数据 13

2.3 STATSPACK的表结构 14

2.3.1 STATSPACK控制表 15

2.3.2 STATSPACK参数表 16

2.4 STATSPACK信息使用 17

2.4.1 使用STATSPACK进行数据库调整 17

2.4.2 资源规划 18

2.4.3 预测模型 18

2.5 小结 19

第3章 安装和配置STATSPACK 20

3.1 将STATSPACK用于Oracle 8.0到8.1.5 20

3.2 STATSPACK脚本概述 20

3.3 步骤1:创建perfstat表空间 21

3.4 步骤2:运行创建脚本 22

3.5 步骤3:测试STATSPACK安装 23

3.6 步骤4:规划自动STATSPACK数据收集 23

3.7 STATSPACK的配置和维护 25

3.8 调整STATSPACK收集门限 26

3.8.1 快照级别 26

3.8.2 快照门限 27

3.9 移走旧有的STATSPACK快照 27

3.10 便于使用的STATSPACK Shell脚本 28

3.11 小结 32

第4章 STATSPACK表中的数据 33

4.1 STATSPACK遗漏的内容 33

4.2 STATSPACK附属表结构 33

4.3 STATSPACK概要表 34

4.3.1 stats$latch_misses_summary表 34

4.3.2 stats$sgastat_summary表 35

4.3.3 stats$sql_summary表 37

4.3.4 stats$parameter表 38

4.4 STATSPACK系统表 39

4.4.1 stats$rollstat表 39

4.4.2 stats$latch表 40

4.4.3 stats$latch_children表 41

4.4.4 stats$librarycache表 41

4.4.5 stats$waitstat表 42

4.4.6 stats$enqueuestat表 43

4.4.7 stats$sysstat表 44

4.4.8 stats$sesstat表 45

4.4.9 stats$sgastat表 46

4.5 STATSPACK事务表 46

4.5.1 stats$buffer_pool表 46

4.5.2 stats$buffer_pool_statistics表 47

4.5.3 stats$filestatxs表 48

4.6 STATSPACK事件表 49

4.6.1 stats$system_event表 50

4.6.2 stats$session_event表 51

4.6.3 stats$bg_event_summary表 52

4.6.4 stats$idle_event表 52

4.7 Oracle并行服务器表 53

4.7.1 stats$rowcache_summary表 53

4.7.2 stats$sgaxs表 53

4.8 小结 54

第二部分 使用STATSPACK调整Oracle数据库 55

第5章 扩展STATSPACK收集服务器统计 55

5.1 vmstat工具概述 55

5.1.1 各种vmstat的不同之处 56

5.1.2 在vmstat中可以得到什么 57

5.1.3 使用vmstat识别CPU瓶颈 57

5.1.4 使用vmstat识别频繁使用的CPU 59

5.1.5 识别RAM内存瓶颈 60

5.2 在STATSPACK中获取服务器性能数据 64

5.2.1 获取vmstat信息的脚本 64

5.2.2 vmstat获取脚本的本质 67

5.2.3 报告其他Oracle服务器上的vmstat信息 68

5.3 小结 69

第6章 调整服务器环境 70

6.1 数据库管理员和系统管理员之间的关系 70

6.2 在线服务器监控工具 71

6.2.1 使用glance 71

6.2.2 使用top监控服务器 72

6.2.3 使用sar监控服务器统计 73

6.3 监控服务器CPU消耗 75

6.4 升级整个服务器 76

6.4.1 增加附加的CPU处理器 76

6.4.2 服务器任务负载平衡 77

6.4.3 使用nice和priocntl改变执行优先级 80

6.5 监控服务器内存消耗 81

6.5.1 服务器内存设置 81

6.5.2 非常大的内存和Oracle 82

6.5.3 使Oracle内存不可交换 82

6.6 报告服务器统计 83

6.6.1 服务器异常报告 83

6.6.2 日常vmstat趋势报告 86

6.6.3 长期服务器分析和趋势 89

6.7 小结 90

第7章 调整网络环境 91

7.1 优化Oracle Net8配置 91

7.1.1 protocol.ora中的tcp.nodelay参数 92

7.1.2 sqlnet.ora的automatic_ipc参数 92

7.1.3 tnsnames.ora中的SDU和TDU参数 92

7.1.4 在listener.ora中的queuesize参数 94

7.1.5 sqlnet.ora的break_poll_skip参数 94

7.1.6 sqlnet.ora的disable_oob参数 95

7.1.7 epc_disabled环境变量 95

7.2 其他影响网络行为的Oracle特性 95

7.2.1 使用阵列获取来提高网络吞吐 95

7.2.2 使用多线程服务器 96

7.2.3 连接共享和网络性能 97

7.2.4 ODBC和网络性能 99

4.2.5 调整Oracle复制 99

7.3 从Oracle STATSPACK中监控网络性能 101

7.4 调整分布式网络 103

7.5 小结 105

第8章 使用STATSPACK调整磁盘I/O子系统 106

8.1 影响磁盘I/O的Oracle调整因素 106

8.2 Oracle内部结构和磁盘I/O 107

8.2.1 Oracle文件组织技术 108

8.2.2 瞬时磁盘热点 108

8.3 映射Oracle磁盘结构 113

8.3.1 多RAM缓冲问题 114

8.3.2 对Oracle进行文件条带化 114

8.3.3 对Oracle使用RAID 115

8.3.4 使用具有原始设备的Oracle 116

8.3.5 Oracle数据库的磁盘负载平衡 116

8.3.6 配置Oracle表空间和数据文件 117

8.3.7 建立Oracle文件到磁盘的体系结构 119

8.3.8 报告Oracle磁盘体系结构 120

8.4 STATSPACK报告Oracle数据文件 121

8.4.1 使用STATSPACK报告详细的磁盘和文件I/O 126

8.4.2 有关特定I/O活动的STATSPACK报告 127

8.4.3 识别热点数据文件的STATSPACK脚本 129

8.4.4 定位热点磁盘的方法 129

8.5 扩充STATSPACK以用于磁盘I/O数据 130

8.5.1 基本iostat工具 130

8.5.2 定义STATSPACK表 132

8.5.3 获取iostat信息 133

8.5.4 产生iostat报告 135

8.6 使用STATSPACK查看I/O特性 137

8.7 小结 142

第9章 调整Oracle数据库实例 143

9.1 Oracle数据库实例概述 143

9.1.1 Oracle SGA 143

9.1.2 Oracle后台进程 146

9.1.3 块大小和Oracle磁盘I/O 149

9.1.4 db_file_multiblock_read_count以及Oracle 149

9.2 调整Oracle数据缓冲 149

9.2.1 数据块缓存介绍 150

9.2.2 完全数据缓存 151

9.2.3 数据缓冲命中率 152

9.2.4 数据缓冲池内部结构 153

9.2.5 使用STATSPACK监控数据缓冲池的使用 155

9.2.6 新数据池概述 158

9.2.7 定位KEEP池的表和索引 159

9.2.8 调整RECYCLE池 164

9.2.9 为RECYCLE池识别候选 165

9.3 使用STATSPACK进行数据缓冲命中率趋势报告 168

9.4 调整数据库写入器进程 172

9.5 调整共享池 178

9.6 调整库缓存 184

9.6.1 监控库缓存缺失率 185

9.6.2 使用STATSPACK监控库缓存内的对象 186

9.7 调整数据辞典缓存 190

9.8 调整Oracle排序 194

9.9 调整回滚段 200

9.10 小结 201

第10章 调整Oracle数据表和索引 202

10.1 Oracle基本存储参数及其对性能的影响 202

10.1.1 pctfree存储参数 202

10.1.2 pctused存储参数 203

10.1.3 freelists存储参数 203

10.1.4 OPS使用的freelist group存储参数 204

10.1.5 存储参数规则概述 204

10.2 自由表管理和Oracle对象 205

10.2.1 自由表中的链接与去除链接 206

10.2.2 减少自由表的重链接 207

10.3 数据表内部情况和自由表 208

10.4 根据数据行平均长度设置pctfree和pctused 210

10.5 缓存忙等待和自由表冲突 212

10.5.1 利用STATSPACK发现等待冲突 212

10.5.2 利用STATSPACK发现缓存忙等待 215

10.6 重组Oracle数据表 222

10.7 识别存在链接数据行的Oracle表 227

10.7.1 识别带有长数据行的表 231

10.7.2 识别稀疏表 232

10.8 为提高操作性能对Oracle表中的数据行重新排序 234

10.9 索引重建技术 235

10.9.1 何时需要重建索引 240

10.9.2 自动索引重建 241

10.10 利用STATSPACK监视Oracle表和索引 242

10.10.1 分配STATSPACK扩展表 242

10.10.2 收集数据表和索引的STATSPACK快照 244

10.10.3 生成数据表和索引的报告 246

10.10.4 通过e-mail发布数据表报告 261

10.11 小结 262

第11章 调整Oracle SQL 263

11.1 SQL调整的目标 263

11.2 说明性SQL语法的问题 264

11.3 Oracle SQL优化器 265

11.3.1 optimizer_mode=RULE 265

11.3.2 optimizer_mode=FIRST_ROWS 265

11.3.3 optimizer_mode=ALL_ROWS 265

11.3.4 optimizer_mode=CHOOSE 266

11.4 利用基于规则的优化器进行调整 267

11.4.1 改变基于规则的驱动表 267

11.4.2 基于规则的优化器何时无法使用正确的索引 268

11.5 使用基于成本优化器进行调整 269

11.5.1 启用基于成本的优化器 270

11.5.2 为CBO收集统计数据 271

11.6 确定默认的optimizer_mode设置 272

11.7 其他的调整技术 272

11.7.1 带CBO SQL提示的调整 273

11.7.2 调整SQL子查询 273

11.7.3 文字性SQL语句的问题 274

11.7.4 在Oracle8i中使用cursor_sharing参数 276

11.7.5 带临时表的SQL调整 277

11.7.6 通过添加索引调整SQL 277

11.7.7 编写高效率SQL的一般原则 278

11.8 SQL调整过程 279

11.8.1 步骤1:识别库缓冲区中影响大的SQL 279

11.8.2 步骤2:提取并解释SQL语句 287

11.8.3 步骤3:调整SQL语句 291

11.9 SQL调整中实际情况的研究 291

11.10 高级SQL运行方案分析 294

11.11 保存SQL调整的永久性改变 297

11.12 小结 298

第12章 利用Oracle并行特性进行调整 299

12.1 使用Oracle并行查询 300

12.1.1 并行查询的init.ora参数 300

12.1.2 设置优化并行度 301

12.1.3 使用并行查询提示 304

12.2 监视Oracle并行查询 305

12.2.1 利用STATSPACK监视Oracle并行查询 305

12.2.2 利用V$视图监视Oracle并行查询 306

12.2.3 并行查询和分布式对象 306

12.2.4 查找Oracle并行查询候选数据表 307

12.3 使用并行DML 308

12.3.1 启用并行DML 309

12.3.2 Oracle表重组工作的并行化 309

12.3.3 并行的索引重建 310

12.4 小结 311

第13章 Oracle并行服务器环境的调整 312

13.1 Oracle并行服务器系统结构的介绍 312

13.2 OPS数据分区 314

13.3 集成分布式锁管理器 314

13.4 针对OPS的Oracle数据表设置 317

13.5 调整OPS环境 319

13.6 监视OPS的STATSPACK表 320

13.6.1 stats$rowcache_summary表 320

13.6.2 stats$sgaxs表 320

13.6.3 stats$sysstat表 321

13.7 扩展STATSPACK以获取OPS信息 322

13.8 查询Oracle并行服务器的v$视图 325

13.9 小结 327

第三部分 利用STATSPACK进行数据库报告 329

第14章 利用STATSPACK监视Oracle 329

14.1 报警程序概述 329

14.2 定制为DBA提供的异常警告报告 330

14.2.1 STATSPACK警告日报 330

14.2.2 服务器警告日报 338

14.2.3 Oracle问题的实时检测 339

14.2.4 对象增长周报 340

14.2.5 跟踪报警报告 342

14.2.6 Web服务器警告报告 345

14.2.7 缓冲繁忙等待警告 345

14.3 STATSPACK相互作用报告 347

14.4 安排和定制Oracle报警报告 352

14.5 小结 353

第15章 利用STATSPACK进行趋势分析 354

15.1 利用MS-Excel绘制STATSPACK数据的图形 354

15.1.1 利用电子表格图表向导绘制STATSPACK数据图形 354

15.1.2 步骤1:定制STATSPACK报告 355

15.1.3 步骤2:在SQL?Plus中运行报告 356

15.1.4 步骤3:高亮选择并复制结果 356

15.1.5 步骤4:打开MS-Excel并粘贴数据 356

15.1.6 步骤5:将数据划分出数据列 357

15.1.7 步骤6:数据分栏 358

15.1.8 步骤7:启动图表向导 359

15.1.9 步骤8:选择线条图 359

15.1.10 步骤9:完成图表向导并查看图表 360

15.1.11 步骤10:添加趋势线 360

15.2 用于预测的STATSPACK报告 360

15.2.1 用于趋势分析的基本STATSPACK度量 361

15.2.2 用于数据库服务器趋势分析的STATSPACK扩展 362

15.2.3 检查服务器以小时为单位的趋势 364

15.2.4 绘制一周中各天服务器统计数据的图表 366

15.3 STATSPACK数据基于Web的图形绘制 367

15.3.1 RRDtool 368

15.3.2 其他基于Web的制图工具 368

15.4 小结 370

附录 371

附录A STATSPACK脚本 371