第一部分 初始化参数
第1 章 在文档中部分说明的参数 2
1.1 AUDIT_SYSLOG_LEVEL 2
1.1.1 syslog 设备 2
1.1.2 审计简介 3
1.1.3 使用AUDIT_SYSLOG_LEVEL 参数 4
1.1.4 审计非特权用户 5
1.1.5 小结 6
1.2 PGA_AGGREGATE_TARGET 6
1.2.1 自动PGA 内存管理介绍 7
1.2.2 对PGA_AGGREGATE_TARGET 的误解 8
1.2.3 研究PGA_AGGREGATE_TARGET 9
1.2.4 使用管道表函数创建一个大表 9
1.2.5 V$SQL_WORKAREA_ACTIVE 10
1.2.6 _PGA_MAX_SIZE 14
1.2.7 _SMM_MAX_SIZE 15
1.2.8 _SMM_PX_MAX_SIZE 15
1.2.9 共享服务器 15
1.2.10 并行执行 16
1.2.11 小结 17
1.3 EVENT 18
1.3.1 语法 18
1.3.2 在实例级别均衡事件 19
1.3.3 案例研究 19
1.4 OS_AUTHENT_PREFIX 19
1.4.1 OPS$数据库用户及密码文件身份认证 20
1.4.2 案例研究 20
1.4.3 小结 23
1.5 源代码库 23
第2 章 隐藏的初始化参数 24
2.1 跟踪文件权限与_TRACE_FILES_PUBLIC 参数 24
2.2 ASM 测试环境与_ASM_ALLOW_ONLY_RAW_DISKS 参数 26
2.2.1 ASM 隐藏参数 26
2.2.2 为ASM 配置Oracle 集群件 27
2.2.3 ASM 实例设置 28
2.2.4 磁盘失效模拟 31
2.3 源代码库 31
第二部分 数据字典基表
第3 章 数据字典基表介绍 . 34
第4 章 IND$、V$OBJECT_USAGE 和索引监控 38
4.1 模式限制 38
4.2 索引使用监控案例研究 39
4.2.1 MONITOR_SCHEMA_INDEXES函数 40
4.2.2 为HR 模式启动索引监控 40
4.2.3 小结 44
4.3 源代码库 45
第三部分 事 件
第5 章 10027 事件和死锁诊断 48
5.1 死锁 48
5.2 10027 事件 49
第6 章 10046 事件和扩展SQL 跟踪 52
第7 章 10053 事件和基于成本的优化器 54
7.1 跟踪文件的内容 57
7.2 案例研究 57
7.2.1 查询块和对象标识符 58
7.2.2 考虑的查询转换 58
7.2.3 说明 60
7.2.4 绑定变量窥视的结果 61
7.2.5 优化器参数 61
7.2.6 系统统计信息 66
7.2.7 表和索引的对象统计信息 67
7.2.8 单表访问路径和成本 68
7.2.9 联结顺序 70
7.2.10 执行计划 73
7.2.11 谓词信息 74
7.2.12 提示和查询块名称 74
7.3 源代码库 75
第8 章 10079 事件和Oracle 网络数据包的内容 76
第四部分 X$固定表
第9 章 X$固定表介绍 80
9.1 X$固定表与C 语言编程 80
9.2 分层系统结构 81
9.3 授权访问X$表与V$视图 82
9.4 从V$视图深入剖析X$固定表 83
9.5 X$表与V$视图之间的关系 88
9.6 源代码库 89
第10 章 X$BH 表及闩锁争用 90
第11 章 X$KSLED 以及增强的会话等待数据 96
11.1 深度探讨视图V$SESSION_WAIT 96
11.2 改进的V$SESSION_WAIT 视图 97
11.3 源代码库 100
第12 章 X$KFFXP 与ASM 元数据 101
12.1 固定表X$KFFXP 101
12.2 抢救SPFILE 文件 102
12.3 映射数据段到ASM 存储 104
第五部分 SQL 语句
第13 章 ALTER SESSION/SYSTEMSET EVENTS 108
13.1 跟踪你自己的会话 108
13.2 ALTER SESSION SET EVENTS 109
13.3 ALTER SYSTEM SET EVENTS 110
13.4 ALTER SESSION/SYSTEM SETEVENTS 和诊断转储 111
13.5 立即转储 112
第14 章 ALTER SESSION SETCURRENT_SCHEMA 113
14.1 特权用户与模式用户 113
14.2 ALTER SESSION SET CURRENT_SCHEMA限制 115
14.2.1 高级队列 116
14.2.2 RENAME 116
14.2.3 私有数据库链接 117
14.2.4 存储概要 118
第15 章 ALTER USER IDENTIFIED BYVALUES 119
15.1 密码游戏 119
15.2 用ALTER USER IDENTIFIED BYVALUES 锁定账户 121
15.3 ALTER USER 和未加密的密码 122
第16 章 SELECT FOR UPDATE SKIPLOCKED 124
16.1 高级队列 124
16.2 Contention 和SELECT FOR UPDATESKIP LOCKED 126
16.3 DBMS_LOCK——题外话 133
16.4 源代码库 136
第六部分 提供的PL/SQL 程序包
第17 章 DBMS_BACKUP_RESTORE 138
17.1 恢复管理器 138
17.2 TDPO 灾难恢复案例研究 142
17.3 源代码库 144
第18 章 DBMS_IJOB 145
18.1 介绍DBMS_JOB 145
18.2 BROKEN 过程 145
18.2.1 语法 145
18.2.2 参数 146
18.2.3 使用说明 146
18.2.4 范例 146
18.3 FULL_EXPORT 过程 146
18.3.1 语法 147
18.3.2 参数 147
18.3.3 范例 147
18.4 REMOVE 过程 148
18.4.1 语法 148
18.4.2 参数 148
18.4.3 范例 148
18.5 RUN 过程 148
18.5.1 语法 148
18.5.2 参数 148
18.5.3 使用说明 149
18.5.4 范例 149
18.6 源代码库 150
第19 章 DBMS_SCHEDULER 151
19.1 使用数据库调度器运行外部作业 151
19.1.1 退出代码处理 152
19.1.2 标准错误输出 153
19.2 UNIX 系统上的外部作业 155
19.2.1 清除环境变量 155
19.2.2 命令行处理 157
19.2.3 外部作业与非特权用户 159
19.3 Windows 系统上的外部作业 161
19.3.1 命令行参数处理 161
19.3.2 Windows 环境变量 162
19.3.3 外部作业与非特权用户 163
19.3.4 ORADIM 实用工具创建的服务 163
19.3.5 OracleJobScheduler 服务 163
19.4 源代码库 164
第20 章 DBMS_SYSTEM 165
20.1 GET_ENV 过程 165
20.1.1 语法 165
20.1.2 参数 165
20.1.3 使用说明 166
20.1.4 范例 166
20.2 KCFRMS 过程 166
20.2.1 语法 166
20.2.2 使用说明 166
20.2.3 范例 166
20.3 KSDDDT 过程 168
20.3.1 语法 168
20.3.2 使用说明 168
20.3.3 范例 168
20.4 KSDFLS 过程 169
20.4.1 语法 169
20.4.2 使用说明 169
20.4.3 范例 169
20.5 KSDIND 过程 169
20.5.1 语法 169
20.5.2 参数 169
20.5.3 使用说明 169
20.5.4 范例 170
20.6 KSDWRT 过程 170
20.6.1 语法 170
20.6.2 参数 170
20.6.3 使用说明 170
20.6.4 范例 171
20.7 READ_EV 过程 171
20.7.1 语法 171
20.7.2 参数 172
20.7.3 使用说明 172
20.7.4 范例 172
20.8 SET_INT_PARAM_IN_SESSION 过程 172
20.8.1 语法 173
20.8.2 参数 173
20.8.3 使用说明 173
20.8.4 示例 173
20.9 SET_BOOL_PARAM_IN_SESSION 过程 174
20.9.1 语法 174
20.9.2 参数 174
20.9.3 使用说明 174
20.9.4 示例 174
20.10 SET_EV 过程 175
20.10.1 语法 175
20.10.2 参数 175
20.10.3 使用说明 175
20.10.4 范例 175
20.11 SET_SQL_TRACE_IN_SESSION 转储 177
20.11.1 语法 177
20.11.2 参数 177
20.11.3 使用说明 177
20.11.4 范例 177
20.12 WAIT_FOR_EVENT 过程 177
20.12.1 语法 177
20.12.2 参数 178
20.12.3 使用说明 178
20.12.4 范例 178
第21 章 DBMS_UTILITY 179
21.1 NAME_RESOLVE 过程 179
21.1.1 语法 179
21.1.2 参数 180
21.1.3 使用说明 181
21.1.4 异常 181
21.1.5 范例 181
21.2 对象统计信息的名称解析和提取 183
21.3 源代码库 185
第七部分 应用程序开发
第22 章 Perl DBI 与DBD::Oracle 188
22.1 常见的Perl DBI 陷阱 188
22.2 Perl 与DBI 简史 189
22.3 为Perl 与DBI 设置环境变量 189
22.3.1 UNIX 环境 189
22.3.2 Windows 环境 194
22.4 在UNIX 系统上透明地运行Perl程序 196
22.5 在Windows 系统上透明地运行Perl程序 197
22.6 连接到一个ORACLE DBMS 实例 199
22.6.1 DBI 连接语法 199
22.6.2 使用Bequeath 适配器连接 200
22.6.3 使用IPC 适配器连接 201
22.6.4 通过TCP/IP 适配器连接 202
22.6.5 简易连接 203
22.6.6 使用SYSDBA 或SYSOPER特权连接 203
22.6.7 使用操作系统认证连接 204
22.6.8 连接属性 205
22.7 完整Perl DBI 示例程序 206
22.8 异常处理 210
22.9 源代码库 211
第23 章 应用程序插桩及端到端跟踪 212
23.1 插桩简介 212
23.2 案例研究 214
23.3 程序编译 216
23.4 插桩的运行 217
23.5 TRCSESS 的使用 221
23.6 插桩与程序调用栈 226
23.7 源代码库 227
第八部分 性 能
第24 章 扩展SQL 跟踪文件格式参考 230
24.1 扩展SQL 跟踪文件介绍 230
24.2 SQL 和PL/SQL 语句 231
24.3 递归调用深度 231
24.4 数据库调用 232
24.4.1 解析 232
24.4.2 PARSING IN CURSOR 条目的格式 233
24.4.3 PARSE 条目的格式 235
24.4.4 PARSE ERROR 条目的格式 236
24.4.5 EXEC 条目的格式 236
24.4.6 FETCH 条目的格式 236
24.4.7 执行计划散列值 237
24.4.8 计划散列值案例研究 237
24.4.9 CLOSE 条目的格式 240
24.5 COMMIT 与ROLLBACK 241
24.6 UNMAP 242
24.7 执行计划、统计信息与STAT 条目的格式 242
24.7.1 Oracle9i 中STAT 条目的格式 243
24.7.2 Oracle10g 和Oracle11g 中STAT 条目的格式 243
24.8 等待事件 245
24.8.1 WAIT 条目的格式 245
24.8.2 Oracle9i 中的WAIT 246
24.8.3 Oracle10g 和Oracle11g 中的WAIT 246
24.9 绑定变量 247
24.9.1 BINDS 条目的格式 247
24.9.2 语句调优、执行计划以及绑定变量 251
24.10 跟踪文件条目其他项 257
24.10.1 会话标识符 257
24.10.2 服务名称ID 258
24.10.3 应用程序插桩 259
24.10.4 ERROR 条目的格式 261
24.10.5 应用程序插桩与并行执行进程 263
第25 章 Statspack 265
25.1 Statspack 介绍 265
25.1.1 检索捕获到的SQL 语句文本 267
25.1.2 访问STATS$SQLTEXT 270
25.1.3 使用保留格式捕获SQL语句 275
25.2 未在文档中说明的Statspack 报告参数 277
25.3 Statspack 表 278
25.4 找出Statspack 库中代价高的语句 281
25.5 识别使用过的索引 281
25.6 SQL Trace 捕获语句的执行计划 282
25.7 找出高资源利用率的快照 284
25.7.1 高CPU 使用 285
25.7.2 高DB 时间 287
25.8 从另一数据库导入Statspack 数据 290
25.9 源代码库 292
第26 章 整合扩展SQL 跟踪和AWR 294
26.1 检索执行计划 294
26.2 小结 296
26.3 源代码库 297
第27 章 ESQLTRCPROF 扩展SQL跟踪分析器 298
27.1 分类等待事件 298
27.2 计算响应时间和统计信息 299
27.2.1 案例研究 300
27.2.2 运行Perl 程序 301
27.2.3 计算统计信息 303
27.2.4 计算响应时间 303
27.3 ESQLTRCPROF 参考 304
27.3.1 命令行选项 305
27.3.2 ESQLTRCPROF 报告部分 306
27.4 小结 314
27.5 源代码库 315
第28 章 MERITS 性能优化方法 316
28.1 MERITS 方法简介 316
28.2 测量 317
28.3 评估 321
28.4 重现 323
28.5 改进 323
28.6 推断 324
28.7 安装 324
28.8 MERITS 方法案例研究 325
28.8.1 阶段1——测量 325
28.8.2 阶段2——评估 325
28.8.3 阶段3——重现 332
28.8.4 阶段4——改进 335
28.8.5 阶段5——推断 339
28.8.6 阶段6——安装 339
28.8.7 小结 339
28.9 源代码库 340
第九部分 Oracle Net
第29 章 TNS 监听器IP 地址绑定与IP=FIRST 342
29.1 IP 地址绑定介绍 342
29.2 多宿主系统 344
29.3 IP=FIRST 未启用 345
29.3.1 主机名 346
29.3.2 回环适配器 347
29.3.3 引导IP 地址 348
29.3.4 服务IP 地址 348
29.4 IP=FIRST 开启 349
29.5 小结 350
第30 章 TNS 监听器TCP/IP 有效结点检验 351
30.1 有效结点检验简介 351
30.2 在运行时打开和修改有效结点检验 353
第31 章 本地命名参数ENABLE=BROKEN 356
第32 章 Oracle Net 配置中默认的主机名 359
32.1 默认主机名 359
32.2 关闭默认监听器 360
第十部分 实时应用集群
第33 章 会话断开连接、负载均衡与TAF 364
33.1 透明应用故障转移介绍 364
33.2 改变系统断开会话设置 365
33.2.1 SELECT 故障转移 366
33.2.2 在事务末的故障转移 369
33.3 会话中断和DBMS_SERVICE 371
33.3.1 使用DBMS_SERVICE 创建服务 372
33.3.2 DBMS_SERVICE 和TAF 下的会话中断 374
33.4 小结 376
33.5 源代码库 376
第34 章 不重装就移除RAC 选项 377
34.1 连接ORACLE 软件 377
34.2 案例研究 378
34.2.1 模拟表决磁盘失效 379
34.2.2 使用make 工具移除RAC可选项 381
34.2.3 转换CRS 环境为本地环境 383
34.2.4 重启适用于RAC 的CRS环境 385
34.3 小结 386
第十一部分 实用工具
第35 章 OERR 388
35.1 OERR 脚本介绍 388
35.2 检索未在文档中说明的事件 390
35.3 源代码库 392
第36 章 数据恢复管理器管道接口 393
36.1 数据恢复管理介绍 393
36.2 DBMS_PIPE 介绍 394
36.3 RMAN_PIPE_IF 包 395
36.4 RMAN_PIPE_IF 包详述 395
36.5 使用RMAN_PIPE_IF 包 396
36.6 验证备份块 401
36.7 跨节点并行备份与恢复 402
36.8 源码库 403
第37 章 ORADEBUG SQL*Plus 命令 404
37.1 ORADEBUG 介绍 404
37.2 ORADEBUG 使用步骤 405
37.3 ORADEBUG 命令介绍 405
37.3.1 连接到一个进程 406
37.3.2 ORADEBUG IPC 408
37.3.3 ORADEBUG SHORT_STACK 409
37.3.4 诊断转储 410
37.4 小结 414
第十二部分 附 录
附录A 启用和禁用DBMS 可选项 416
附录B 参考书目 417
附录C 术语表 419