oracle坏块 戴明明,Oracle数据库问题解决方案和故障排除手册

第1 章 LOB 段性能的诊断与调优 1

1.1 LOB 数据类型的介绍 1

1.1.1 解决LOB 问题:一个真实的案例 2

1.1.2 另一个真实案例:HW 分析 4

1.1.3 BASICFILE LOB :更完美的解决方案 7

1.2 BASICFILE 与SECUREFILE LOB 7

1.2.1 LOB 新旧类型的差异 8

1.2.2 迁移BASICFILE LOB 到SECUREFILE LOB 10

1.3 PCTFREE 对LOB 的影响 12

1.4 解决糟糕的INSERT 性能 15

1.5 总结 15

第2 章 处理undo 表空间损坏 16

2.1 undo 管理概述 16

2.1.1 UNDO_RETENTION 的重要性 16

2.1.2 优化UNDO_RETENTION 17

2.2 DTP、XA 和回滚段 18

2.3 undo 表空间损坏的恢复 20

2.3.1 预防、检测和修复损坏 20

2.3.2 处理内存损坏 21

2.3.3 处理逻辑损坏 24

2.3.4 解决介质损坏 24

2.4 总结 27

第3 章 处理全局缓存缓冲区忙等待事件 28

3.1 缓冲区忙等待事件概述 28

3.2 使用ORAchk 工具 29

3.2.1 安装ORAchk 29

3.2.2 ORAchk 执行结果:示例输出 30

3.3 查找GC 缓冲区忙等待事件 32

3.3.1 用ADDM 查找事件的信息 33

3.3.2 用AWR 查找等待事件的信息 33

3.3.3 用ASH 查找等待事件的信息 35

3.4 查找GC 缓冲区忙等待事件的原因 36

3.4.1 使用ASH 视图查找等待会话 36

3.4.2 快速查找性能瓶颈 38

3.5 解决GC 缓冲区忙等待 40

3.6 总结 41

第4 章 自适应游标共享 42

4.1 ACS 工作算法 42

4.1.1 绑定敏感与范围谓词 43

4.1.2 绑定敏感与等式谓词和直方图 45

4.1.3 绑定敏感与分区键 46

4.2 ACS 的使用 48

4.2.1 监控ACS 的绑定感知 51

4.2.2 BUCKET_ID 和COUNT 的关系 52

4.2.3 标记游标为绑定感知 55

4.3 游标绑定感知 61

4.4 一个真实案例 64

4.5 总结 69

第5 章 使用SPM 稳定查询响应时间 70

5.1 入门指南 70

5.2 创建SQL 计划基线 73

5.2.1 自动捕获计划 73

5.2.2 从游标缓存加载计划 76

5.3 伪造基线 77

5.4 Oracle 优化器和SPM 的交互 81

5.4.1 当CBO 计划与SQL 计划基线匹配时 82

5.4.2 当CBO 计划与SQL 计划基线不匹配时 84

5.4.3 当SQL 计划基线不可复制时 89

5.5 SQL 计划基线的复制性 93

5.5.1 重命名索引 93

5.5.2 修改索引类型 95

5.5.3 向索引中添加尾列 96

5.5.4 反向索引 97

5.6 NLS_SORT 与SQL 计划基线的复制性 98

5.7 ALL_ROWS 与FIRST_ROWS 100

5.8 自适应游标共享与SPM 104

5.8.1 Oracle 11.2.0.3.0 中的ACS 和SPM 105

5.8.2 Oracle 12.1.0.1.0 中的ACS 和SPM 109

5.9 总结 112

第6 章 DDL 优化技巧和技术 114

6.1 DDL 优化的概念 114

6.2 DDL 优化的机制 117

6.2.1 表基数估算 117

6.2.2 虚拟列中的C_DDL 列 119

6.2.3 列组扩展中的C_DDL 列 120

6.2.4 C_DDL 的默认值发生变化时 122

6.2.5 C_DDL 列和索引 124

6.2.6 空列的DDL 优化 126

6.3 总结 130

第7 章 管理、优化、调整大型数据库 131

7.1 大型数据库概述 131

7.2 优化基本配置 132

7.2.1 数据库仓库模板 132

7.2.2 优化数据块大小 133

7.2.3 大文件表空间 134

7.2.4 调整SGA 和PGA 135

7.2.5 临时表空间组 135

7.2.6 数据分区 136

7.2.7 本地分区索引和全局分区索引 136

7.2.8 数据压缩 137

7.2.9 表压缩 137

7.2.10 热图和自动数据优化 137

7.2.11 高级索引分区压缩 138

7.3 大型数据库性能调整的原则 139

7.3.1 真实的案例 139

7.3.2 控制索引对数据加载的影响 140

7.3.3 资源利用率的最大化 141

7.4 收集统计信息 142

7.4.1 增量统计信息摘要 142

7.4.2 并发收集统计信息 144

7.4.3 设置ESTIMATE_PERCENT 的值 145

7.5 备份与恢复的最佳实践 145

7.5.1 Exadata 解决方案 146

7.5.2 利用Data Guard 环境 147

7.6 总结 147

第8 章 RMAN 备份恢复最佳实践 148

8.1 完美的备份恢复计划 148

8.2 概述 149

8.3 数据库备份策略的技巧 149

8.3.1 完全备份和增量备份 150

8.3.2 压缩备份 150

8.3.3 增量备份 151

8.3.4 快速增量备份 151

8.3.5 Oracle 闪回技术之回退 152

8.3.6 基于磁盘的备份解决方案 153

8.3.7 增量更新的镜像副本 153

8.4 验证RMAN 备份 159

8.5 备份的优化与调整 160

8.6 RAC 集群下的RMAN 162

8.7 恢复目录 163

8.8 恢复策略 164

8.9 数据恢复顾问 165

8.10 总结 166

第9 章 使用AWR 分析优化数据库(一) 167

9.1 什么是AWR 167

9.2 知道要查找什么 168

9.3 报告头部信息 169

9.3.1 负载状况 171

9.3.2 实例效率 171

9.3.3 共享池内存 172

9.3.4 等待事件 172

9.3.5 平均负载 175

9.3.6 实例CPU 175

9.3.7 内存统计数据 176

9.4 RAC 特有的页面 176

9.4.1 RAC 统计数据 177

9.4.2 全局缓存负载统计数据 177

9.4.3 全局缓存和队列服务 177

9.4.4 集群互连 178

9.5 时间模型统计 179

9.6 操作系统统计数据 180

9.6.1 前台等待事件 181

9.6.2 后台等待事件 182

9.6.3 等待事件直方图 183

9.6.4 服务相关统计数据 184

9.7 SQL 章节 185

9.7.1 总运行时间 185

9.7.2 总CPU 时间 185

9.7.3 总缓冲区获取 186

9.7.4 总磁盘读 186

9.7.5 总执行次数 186

9.7.6 解析调用 186

9.7.7 可共享内存 187

9.7.8 版本数 187

9.7.9 集群等待时间 187

9.8 实例活动统计 188

9.8.1 一致性读统计数据 191

9.8.2 数据块读统计数据 191

9.8.3 脏块统计 191

9.8.4 队列统计 191

9.8.5 执行计数 191

9.8.6 空闲缓冲区统计 192

9.8.7 全局缓存统计 192

9.8.8 索引扫描统计数据 192

9.8.9 叶子节点统计数据 193

9.8.10 打开的游标 193

9.8.11 解析统计数据 193

9.8.12 物理读写统计数据 193

9.8.13 递归统计数据 195

9.8.14 重做相关的统计数据 195

9.8.15 会话游标统计数据 196

9.8.16 排序统计数据 196

9.8.17 脏队列长度汇总 196

9.8.18 表获取统计数据 197

9.8.19 事务回滚 197

9.8.20 撤销更改矢量统计 197

9.8.21 用户统计数据 198

9.8.22 工作区统计数据 198

9.8.23 实例活动统计--绝对值 198

9.8.24 实例活动统计--线程活动 199

9.9 总结 199

第10 章 使用AWR 分析优化数据库(二) 200

10.1 表空间I/O 统计数据 200

10.2 缓冲池 202

10.2.1 缓冲池统计数据 203

10.2.2 实例恢复统计数据 203

10.2.3 缓冲池建议部分 204

10.3 PGA 统计数据 204

10.3.1 PGA 汇总 206

10.3.2 PGA 总目标统计数据 206

10.3.3 PGA 总目标直方图 206

10.3.4 PGA 内存建议 208

10.4 共享池统计数据 208

10.5 其他建议 209

10.5.1 SGA 目标建议 210

10.5.2 流池建议 210

10.5.3 Java 池建议 211

10.6 缓冲区等待统计数据 211

10.7 队列统计数据 212

10.8 撤销段统计数据 214

10.9 闩锁统计数据 215

10.9.1 闩锁活动 216

10.9.2 闩锁休眠分类 217

10.9.3 闩锁和自旋数 217

10.9.4 闩锁丢失源 218

10.9.5 互斥锁休眠汇总 218

10.9.6 父类和子类闩锁 218

10.10 段访问区 218

10.11 库缓存活动部分 220

10.12 动态内存组件部分 223

10.13 进程内存部分 224

10.13.1 进程内存汇总 226

10.13.2 SGA 内存汇总 226

10.13.3 SGA 分类和差异 226

10.14 流组件部分 226

10.15 资源限制统计数据 228

10.16 初始化参数的改变 228

10.17 全局队列和其他RAC 部分 229

10.17.1 全局队列统计数据 233

10.17.2 全局CR 服务统计数据 233

10.17.3 全局当前服务统计数据 233

10.17.4 全局缓存传输统计数据 233

10.17.5 全局缓存传输时间 233

10.17.6 全局缓存传输 233

10.17.7 全局缓存时间 234

10.17.8 互连ping 延迟统计数据 234

10.17.9 客户端的互连吞吐量 234

10.17.10 互联设备统计数据 234

10.18 总结 234

第11 章 RAC 的故障诊断 236

11.1 RAC 的故障诊断和调优 236

11.1.1 ORAchk 工具 237

11.1.2 TFA 收集器 237

11.1.3 自动诊断库 237

11.1.4 告警和跟踪日志文件 237

11.2 运转良好的RAC 生态系统 239

11.2.1 最高可用性架构 239

11.2.2 优化和高效的RAC 数据库 240

11.2.3 基于OEM 12C 的RAC 故障诊断 241

11.2.4 故障诊断的程序和命令 242

11.3 总结 247

第12 章 利用SQL 顾问来分析和修复SQL 问题 248

12.1 OEM 12c :SQL 顾问首页 248

12.2 SQL 调优顾问 249

12.2.1 在OEM 12c 中运行SQL 调优顾问 250

12.2.2 在SQL*Plus 中手动运行SQL 调优顾问 253

12.3 SQL 访问顾问 253

12.3.1 在OEM 12c 中运行SQL 访问顾问 254

12.3.2 在SQL*Plus 中手动运行SQL 访问顾问 257

12.4 SQL 修复顾问 258

12.5 SQL 性能分析器 259

12.6 总结 260

第13 章 使用数据泵迁移数据和对象 261

13.1 使用数据泵 261

13.1.1 复制对象 262

13.1.2 数据泵模式 263

13.2 处理私有和公共对象 263

13.2.1 保存和恢复数据库链接 264

13.2.2 导出公共数据库链接和同义词 264

13.2.3 验证导出的转储文件内容 265

13.3 查找有效的INCLUDE 和EXCLUDE 值 265

13.4 导出数据子集 267

13.5 修改对象属性 269

13.5.1 将分区表导入为非分区表 269

13.5.2 将表分区导入为单独的表 269

13.5.3 屏蔽数据 270

13.5.4 重命名表或使用不同的表空间 270

13.5.5 使用默认存储参数 270

13.5.6 导入期间调整表空间大小 271

13.5.7 合并多个表空间 271

13.6 通过PL/SQL API 使用Data Pump 273

13.7 监控和修改资源 274

13.8 提升性能 275

13.9 升级数据库 276

13.10 总结 277

第14 章 数据库快速迁移数据的策略 278

14.1 为什么要迁移 278

14.2 确定最好的策略 279

14.2.1 实时与准实时迁移 279

14.2.2 接受只读 279

14.2.3 可逆性 280

14.3 考虑迁移什么数据 280

14.4 数据迁移的方法 281

14.4.1 事务性捕获迁移方法 281

14.4.2 非事务性迁移方法 283

14.4.3 其他迁移方法 295

14.5 总结 301

第15 章 临时文件I/O 问题的诊断和恢复 302

15.1 临时表空间概述 302

15.1.1 只读数据库 303

15.1.2 本地管理的临时表空间 303

15.1.3 临时表空间组 303

15.1.4 全局临时表 304

15.2 解决TEMPFILE I/O 等待 307

15.2.1 过小的PGA 307

15.2.2 不恰当的TEMPFILE 扩展区大小 311

15.2.3 不恰当地使用GTT 312

15.3 总结 312

第16 章 处理闩锁和互斥锁争用 313

16.1 闩锁和互斥锁架构概述 313

16.1.1 什么是闩锁 314

16.1.2 什么是互斥锁 315

16.1.3 闩锁和互斥锁的内部结构 315

16.2 检测闩锁和互斥锁争用 316

16.2.1 识别独特的闩锁 317

16.2.2 查找段和SQL 语句 318

16.3 闩锁和互斥锁场景 320

16.3.1 库缓存互斥锁等待 320

16.3.2 library cache pin 322

16.3.3 共享池闩锁 322

16.3.4 缓存缓冲区链闩锁 323

16.3.5 其他的闩锁场景 325

16.4 棘手的闩锁争用 326

16.5 总结 328

第17 章 使用SSD 解决I/O 瓶颈 329

17.1 磁盘技术:SSD 与 HDD 329

17.1.1 固态闪存盘的崛起 330

17.1.2 SSD 闪存的延迟 331

17.1.3 SSD 的经济性 332

17.1.4 SLC、MLC 和TLC 333

17.1.5 写性能与寿命 334

17.1.6 垃圾回收和磨损均衡 334

17.1.7 SATA 与 PCIe SSD 336

17.1.8 在Oracle 数据库中使用SSD 336

17.2 Oracle 数据库的闪存缓存 337

17.2.1 空闲缓冲区等待 337

17.2.2 配置和监控DBFC 339

17.2.3 使用FLASH_CACHE 子句 340

17.2.4 闪存缓存的性能统计数据 341

17.3 比较SSD 的部署选择 342

17.3.1 索引读 343

17.3.2 OLTP 上的读/ 写负载 344

17.3.3 全表扫描性能 344

17.3.4 SSD 本地缓存和全表扫描 345

17.3.5 磁盘排序和散列操作 346

17.3.6 重做日志的优化 349

17.4 存储分层 349

17.5 闪存和Exadata 353

17.6 总结 357

第18 章 为最佳性能设计和监控索引 359

18.1 索引的类型 359

18.1.1 B 树索引 359

18.1.2 位图索引 362

18.1.3 分区索引 364

18.1.4 其他索引类型 366

18.2 同一列上的多个索引 368

18.3 索引的性能问题 369

18.3.1 索引统计信息 369

18.3.2 高集群因子的影响 372

18.3.3 索引操作的注意事项 373

18.3.4 隐藏非选择的索引 374

18.3.5 RAC 数据库中的索引性能问题 375

18.4 总结 377

第19 章 使用SQLT 提升查询性能 379

19.1 安装SQLT 379

19.2 使用XTRACT 方法 380

19.3 使用XECUTE 方法 381

19.4 其他SQLT 方法 384

19.5 一个真实的案例 385

19.6 总结 386

第20 章 处理XA 分布式事务的问题 387

20.1 修复常见的分布式事务问题 387

20.2 修复幽灵分布式事务 388

20.2.1 信息存在,但事务不在 389

20.2.2 ORA-1591 没有对应的信息 389

20.2.3 提交或回滚之后事务挂起 391

20.3 监控分布式事务 393

20.4 总结 395

你可能感兴趣的:(oracle坏块,戴明明)