标题：Oracle Streams 11g数据复制
图书基本信息
ISBN：9787302279686
定价：68元
印次：1-1
装帧：平装
印刷日期：2012-3-5
图书简介
本书介绍了如何在分布式计算框架之间实现实时的信息访问和数据共享，详细解释了建立和管理一个统一的企业数据共享基础设施的方法，以及如何捕获、传播和应用数据库修改、转换数据和处理数据冲突，包含的主题还有监控、优化和调试技术。
图书前言
当越来越多的业务因为各种原因而使用分布式环境时，对数据复制的需求就会稳步增长。对这种数据的实时访问已成为在全球市场上竞争的必备条件之一。在这些环境下，全局数据完整性和一致性同等重要。Oracle Streams可以处理这些需求。
Oracle公司在Oracle 9i Database Release 2版本中引入了Streams，作为分布式环境中在多个应用程序和数据库中进行数据复制和信息共享的旗舰解决方案。Oracle Streams提供了一个精密、灵活并且健壮的基础设施，可以满足各种不同的数据复制需求。Oracle Streams相对传统数据复制解决方案更加灵活的特性，允许用户选择单个的可以更快部署并且开销更少的信息共享解决方案。
Streams是Oracle数据库的一个整合部分，不需要单独为其授权或者安装任何额外的软件。
Oracle Streams中可用的一些很强大的特性和选项包括：
● 准实时复制
● 数据完整性(遵循事务边界)
● 自动冲突处理
● 数据转换
● 从单源向多目标复制
● 点对点复制
● 复制环境的详细监控
● 扩展的规则管理
● 灵活的配置选项和一些配置方法
在早期的Oracle发布版本中，配置和管理Oracle Streams环境有些复杂。Oracle Database 10g R2中的一些改进使得实现、监控和管理Streams变得很简单。Oracle Database 11g R2在此基础上进一步做了改进。随着核心Streams代码的提升，复制性能得到大幅提高。同时，管理复杂的Streams环境也变得非常容易。
虽然自Oracle 9i Database Release 2之后Oracle Streams产品就可用，但是一直缺乏全面的文献资料。对于一个实际的DBA，没有哪个单一的学习资料能仔细讲解配置Streams环境的方法或是监控及故障解决问题。对于架构师，也会因为缺乏类似的确切信息而阻止他们在自己的设计中使用Streams。本书试图通过解释产品背后的概念来填补这个空白。从配置到调试Streams环境，本书都将提供实践建议。正因为如此，本书作为Streams复制的一个参考资料，适用于DBA、开发人员和架构师阅读。
本书内容安排
本书针对不同类型读者的需求，从不同的方面介绍Streams。架构师、开发人员和DBA将学习概念并且很好地理解各种Streams组件。同时，DBA还将得益于所有的实用脚本和一步一步的说明。
很少人能够一次从头到尾地将一本技术书籍读完。但是，我强烈要求所有的读者一开始就阅读前两章，从而在概念上很好地理解Streams。然后，可以跳到任何一章去阅读关于某个特定Streams组件的知识或者学习在Streams中执行某个特定任务的方法。例如，一个实际的DBA要想设置一个有效的Streams环境，他可以直接跳到第8章并且一步一步地按照说明来设置Streams。或者，由于Oracle Enterprise Manager Grid Control 10.2.0.5让这个任务变得更加容易，DBA可能想要查看第14章。欲了解更多关于应用进程组件知识的读者可以参阅第6章。所有的读者都将从第3章详细了解到Oracle Streams环境中使用规则的方法。
本书共包括14章和5个附录，内容如下：
第1章：Oracle Streams的概念 本章介绍Oracle Streams复制，讨论Streams架构并且简要解释它的各个组件。读者应该阅读本章以熟悉Oracle Streams的架构和组件。
第2章：使用Oracle Streams 本章讨论配置Streams复制的方法以支持复制数据的各个不同需求，另外还讨论了使用Streams技术解决其他不一定需要数据复制的业务问题的方法。
第3章：Streams规则和规则集 Oracle Streams使用规则和规则集，这些规则和规则集控制数据捕获和复制的方法。本章介绍这些规则以及Streams使用它们的方法。当自定义一个涉及数据转换的Streams环境时，需要理解规则。可以等到有一个有效的Streams环境之后再回头学习这一章，以熟悉规则和规则集的工作方式。
第4章：捕获进程 本章详细讨论Streams如何捕获复制发生的变化、捕获进程的类型、捕获进程组件以及捕获进程的配置、需求和限制，另外还解释了在不同Streams环境中创建捕获进程的方法。
第5章：暂存进程与传播进程 本章介绍队列及其使用方法以及Streams使用它们传播所捕获消息的过程，另外还介绍传播的概念以及创建它来支持各种Streams环境的方法。
第6章：应用进程 本章详细讨论Streams将修改应用到目标表的方法以及应用进程的组件、需求和限制，另外还讨论了创建应用进程及各种与之相关的在数据应用之前用来处理错误、冲突或数据定制的自定义存储过程的方法。
第7章：逻辑修改记录 捕获到的消息在内部会转换为逻辑修改记录(Logical Change Record，LCR)，本章详细介绍了LCR的概念、它们包含的信息以及深入了解这些信息的方法。当自定义Streams以支持业务需求时需要访问和修改LCR信息，本章通过使用一个可运行的示例来解释这一点，这个示例展示了操纵LCR内容的方法。
第8章：为数据复制配置Oracle Streams 在讨论完首要任务之后，本章详细讨论配置Streams复制的方法。除了讨论可以使用的多种不同方法外，还解释了使用Oracle提供的API来配置各种级别(如数据库级别、模式级别和表级别)的简单Streams复制的方法。本章还将讨论使用提供的PL/SQL包手动配置Streams复制的方法，以及在各种拓扑下如何配置复杂Streams复制。本章的示例脚本可以用来快速创建一个简单的Oracle Streams环境。
第9章：数据转换 本章讨论当源表和目标表在定义和结构上不同时，Oracle提供的用来在LCR中转换内容的存储过程。另外还使用示例讨论了创建自己的数据转换函数和存储过程来解决具体业务需求的方法，这些业务需求无法用Oracle提供的存储过程来解决。
第10章：数据冲突处理 本章讨论在Streams环境中可能发生的不同类型的数据冲突，讨论避免数据冲突的方法并解释当冲突无法避免时的处理方法，解释使用Oracle提供的冲突处理存储过程来解决冲突的方法。
第11章：管理和监控Streams复制 本章讨论Streams管理和任务监控。讨论如何启动和停止Streams进程、如何修改它们的参数及其他属性，以及监控它们状态、状况和性能的方法。另外还解释了在Streams环境中监控事务的方法，讨论当同一个源数据库存在多个目标时如何分割和合并功能及管理。本章还将展示安装和使用Streams性能顾问的方法，从而使监控点对点Streams性能更加容易。
第12章：维护和错误处理 本章讨论Streams维护和调试，包括通过增加新对象到复制中或者删除已存在的对象或组件来修改已有Streams复制的方法，还将解释使用Streams组件调试问题以及调试应用进程遇到的复制错误的方法，最后讨论使用数据比较存储过程来识别和修正源表和目标表之间的数据匹配错误的方法。
第13章：Streams性能考量 本章讨论对复制性能造成不好影响的常见原因和问题，讨论提高整个Streams性能的各种技术和配置设置。
第14章：OEM Grid Control在Streams复制中的应用 本章讨论如何使用OEM Grid Control 10.2.0.5来配置、管理和监控Oracle Streams复制环境。
附录A：Oracle Streams最佳实践 本附录讨论Oracle成功实现Oracle Streams复制的最优方法。
附录B：RAC环境中的Oracle Streams复制 本附录讨论针对Oracle RAC环境的Streams配置的额外细节。
附录C：Streams健康检查报告 本附录讨论通过创建和使用Streams健康检查报告来归档、审查和调试Streams环境的方法。
附录D：Streams复制的数据字典视图 本附录提供一个包括Streams组件和进程及其性能信息的数据字典列表和动态性能视图。
附录E：参考文献 本附录提供了一个本书参考的所有Oracle公司资料的列表。
图书目录
第Ⅰ部分  Oracle Streams简介
第1章  Oracle Streams的概念 3
1.1  Oracle Streams中的信息流 4
1.2  Oracle Streams体系结构概述 5
1.2.1  捕获组件 5
1.2.2  暂存和传播组件 7
1.2.3  消费组件 8
1.2.4  队列 9
1.2.5  Oracle Streams标签 10
1.2.6  规则和规则集 10
1.2.7  实例化 11
1.2.8  LogMiner数据字典 11
1.2.9  Streams数据字典 12
1.2.10  NOLOGGING操作和
UNRECOVERABLE操作 12
1.2.11  补充日志 12
1.2.12  逻辑修改记录 13
1.2.13  表数据的比较 14
1.3  本章小结 14
第2章  使用Oracle Streams 15
2.1  数据复制 16
2.1.1  单向复制 16
2.1.2  双向复制 17
2.1.3  点对点复制 17
2.1.4  辐射型复制 18
2.1.5  与非Oracle数据库的复制 21
2.2  数据仓库加载 21
2.3  数据审计 21
2.4  数据保护 22
2.5  消息队列管理 22
2.6  在数据库升级时减少
停工时间 23
2.7  在进行维护工作时减少停工
时间 23
2.8  本章小结 24
第Ⅱ部分  Oracle Streams的
概念和架构
第3章  Streams规则和规则集 27
3.1  规则 28
3.1.1  评估上下文 28
3.1.2  规则条件 28
3.1.3  操作上下文 29
3.2  规则集 29
3.2.1  正规则集 30
3.2.2  负规则集 31
3.3  创建规则和规则集 33
3.3.1  系统创建的规则和规则集 34
3.3.2  用户创建的规则和规则集 47
3.3.3  用于删除不支持LCR的
规则条件 50
3.4  管理规则和规则集的
存储过程 52
3.5  本章小结 52
第4章  捕获进程 55
4.1  捕获规则的类型 56
4.1.1  本地捕获进程 56
4.1.2  下游捕获进程 57
4.2  捕获进程检查点和系统修改
编号 59
4.2.1  必需的检查点SCN 60
4.2.2  最大检查点SCN 60
4.2.3  First SCN 60
4.2.4  Start SCN 61
4.2.5  已捕获的SCN 61
4.2.6  最近入队的SCN 62
4.2.7  应用的SCN 62
4.2.8  源重置日志SCN 62
4.2.9  检查点保存时间 62
4.3  创建捕获进程 63
4.3.1  创建本地捕获进程 63
4.3.2  创建下游捕获进程 68
4.3.3  创建同步捕获进程 70
4.3.4  捕获用户 72
4.4  捕获进程组件 72
4.5  捕获进程参数 73
4.6  未捕获到的修改 77
4.6.1  捕获进程未捕获到的修改 78
4.6.2  同步捕获进程未捕获到的
修改 79
4.6.3  检查不支持对象的方法 79
4.7  NOLOGGING操作 81
4.8  补充日志 82
4.8.1  补充日志的用途 82
4.8.2  补充日志的类型 83
4.8.3  系统创建的补充日志组 86
4.9  本章小结 87
第5章  暂存进程与传播进程 89
5.1  队列模型 90
5.2  队列类型 90
5.2.1  ANYDATA类型的类型化
队列 90
5.2.2  缓冲区队列 90
5.2.3  持久化队列 91
5.2.4  安全队列 91
5.2.5  事务队列 91
5.2.6  非事务队列 91
5.2.7  提交时队列 91
5.3  Streams客户端使用队列的
方式 92
5.4  创建Streams队列 92
5.5  传播 96
5.5.1  队列-数据库链接传播 96
5.5.2  队列-队列传播 96
5.5.3  有向网络 97
5.5.4  创建传播进程 98
5.5.5  传播规则集和规则 103
5.5.6  传播作业和调度计划 104
5.6  本章小结 108
第6章  应用进程 109
6.1  应用进程概述 110
6.2  应用进程状态 110
6.3  应用进程组件 110
6.3.1  reader服务器 111
6.3.2  协调器进程 112
6.3.3  服务器进程 112
6.4  应用用户 114
6.5  创建应用进程 114
6.5.1  自动创建应用进程 115
6.5.2  手动创建应用进程 119
6.6  应用进程参数 121
6.7  处理触发器 125
6.8  处理列差异 127
6.8.1  数据类型不匹配 127
6.8.2  目标表中列的数目不够 127
6.8.3  目标表中列的数目过多 128
6.8.4  列名不匹配 128
6.8.5  没有主键或唯一键 128
6.9  处理事务依赖 129
6.9.1  对象依赖 130
6.9.2  值依赖 130
6.10  应用进程的消息处理 131
6.10.1  DML处理程序 132
6.10.2  DDL处理程序 137
6.10.3  错误处理程序 139
6.10.4  预提交处理程序 142
6.11  不能应用的修改 142
6.12  本章小结 143
第7章  逻辑修改记录 145
7.1  行LCR 146
7.2  DDL LCR 147
7.3  LCR中的额外特性 148
7.4  访问LCR内容 149
7.4.1  访问行LCR内容 152
7.4.2  访问DDL LCR内容 157
7.5  修改LCR内容 159
7.5.1  修改行LCR内容 159
7.5.2  修改DDL LCR内容 163
7.6  LCR和LOB数据类型 165
7.7  本章小结 166
第Ⅲ部分  Oracle Streams配置
第8章  为数据复制配置
Oracle Streams 171
8.1  Streams配置方法 172
8.2  首要任务 172
8.2.1  准备数据库 172
8.2.2  创建数据库之间的
网络连接 176
8.2.3  创建Streams Administrator
账户 177
8.2.4  创建数据库链接 178
8.2.5  创建目录对象 179
8.3  使用MAINTAIN存储过程
配置Streams 179
8.3.1  数据库级别的Streams
复制 180
8.3.2  模式级别的Streams复制 182
8.3.3  表级别的Streams复制 184
8.3.4  表空间级别的Streams
复制 185
8.3.5  使用MAINTAIN存储过程
配置下游捕获进程 188
8.3.6  监控MAINTAIN存储过程
的进度 190
8.3.7  从MAINTAIN存储过程的
错误中恢复 192
8.3.8  MAINTAIN存储过程的
优势 194
8.3.9  MAINTAIN存储过程的
限制 194
8.4  使用自定义脚本配置
Streams 195
8.4.1  含有本地捕获进程的
单向复制 196
8.4.2  包含下游捕获进程的
单向复制 202
8.4.3  双向复制 207
8.4.4  从单个源到多个目标的
复制 211
8.4.5  使用队列转发的复制 211
8.4.6  使用应用转发的复制 212
8.4.7  使用同步捕获进程的复制 213
8.4.8  辐射型复制 216
8.4.9  点对点复制 218
8.5  本章小结 219
第9章  数据转换 221
9.1  基于规则的转换的种类 222
9.1.1  声明性的基于规则的
转换 222
9.1.2  自定义的基于规则的
转换 223
9.2  使用基于规则的转换的
场合 224
9.3  找到规则名 224
9.4  配置声明性的基于规则的
转换 225
9.4.1  ADD_COLUMN存储过程 225
9.4.2  DELETE_COLUMN存储
过程 227
9.4.3  KEEP_COLUMNS存储
过程 228
9.4.4  RENAME_COLUMN存储
过程 230
9.4.5  RENAME_SCHEMA存储
过程 231
9.4.6  RENAME_TABLE存储
过程 232
9.5  基于规则的转换和DDL
复制 233
9.6  配置自定义的基于规则的
转换 233
9.6.1  针对DDL LCR的自定义的
基于规则的转换 234
9.6.2  针对行LCR的自定义的
基于规则的转换 238
9.7  移除基于规则的转换 240
9.7.1  移除声明性的基于规则的
转换 240
9.7.2  移除自定义的基于规则的
转换 243
9.8  表子集规则转换 243
9.9  转换的执行顺序 244
9.10  本章小结 245
第10章  数据冲突处理 247
10.1  冲突类型 248
10.1.1  删除冲突 248
10.1.2  更新冲突 248
10.1.3  唯一性冲突 248
10.1.4  外键冲突 248
10.2  避免冲突的方法 249
10.2.1  避免唯一性冲突 249
10.2.2  避免删除冲突 251
10.2.3  避免更新冲突 251
10.3  解决冲突 251
10.4  使用预置的更新冲突
处理程序 251
10.4.1  使用列列表(column list) 253
10.4.2  使用解析列 253
10.4.3  建立预置的更新冲突
处理程序 253
10.4.4  列出定义的更新冲突
处理程序 256
10.4.5  修改更新冲突处理程序 256
10.4.6  移除更新冲突处理程序 257
10.5  为非关键列停止冲突检测 258
10.6  自定义冲突处理程序 259
10.7  本章小结 265
第Ⅳ部分  Oracle Streams管理
第11章  管理和监控Streams复制 269
11.1  管理Streams进程 270
11.1.1  管理捕获进程 270
11.1.2  管理同步捕获进程 277
11.1.3  管理传播进程 277
11.1.4  管理应用进程 279
11.2  监控Streams进程 283
11.2.1  监控捕获进程 284
11.2.2  监控传播进程和队列 287
11.2.3  监控应用进程 289
11.3  监控事务 295
11.4  分割和合并：管理和监控 297
11.4.1  自动分割和合并 298
11.4.2  手动分割和合并 300
11.5  Streams Performance Advisor 301
11.6  本章小结 304
第12章  维护和错误处理 305
12.1  扩展Streams环境 306
12.1.1  添加对象到已有的
Streams环境中 306
12.1.2  添加数据库到已有的
Streams环境中 308
12.2  移除Streams配置 311
12.2.1  移除整个Streams配置 311
12.2.2  移除指定的Streams
配置 311
12.3  调试Streams进程 317
12.3.1  调试捕获进程 317
12.3.2  调试传播进程 320
12.3.3  调试应用进程 322
12.4  Streams消息跟踪 331
12.5  Streams健康检查报告 334
12.6  数据比较和收敛 335
12.6.1  创建比较 336
12.6.2  运行比较 336
12.6.3  列出比较 337
12.6.4  从本地表向远程表收敛 337
12.6.5  重新检查比较 338
12.6.6  清除比较 339
12.6.7  删除比较 339
12.7  本章小结 339
第13章  Streams性能考量 341
13.1  Streams队列溢出 342
13.2  应用溢出 343
13.3  处理大事务 343
13.3.1  Streams标签 345
13.3.2  存储过程复制 346
13.4  处理长时间运行的事务 346
13.5  日志挖掘活动 347
13.6  考量捕获进程 347
13.6.1  并行化 348
13.6.2  检查点信息 348
13.7  考量传播进程 349
13.8  考量应用进程 350
13.8.1  调校应用进程参数 350
13.8.2  处理LOB数据类型 351
13.8.3  应用规则集 353
13.8.4  检测冲突 353
13.9  修复故障 353
13.10  本章小结 354
第14章  OEM Grid Control在Streams 
复制中的应用 355
14.1  Streams配置向导 356
14.2  创建模式级别的复制 358
14.2.1  第1步：对象选择 358
14.2.2  第2步：目标选项 358
14.2.3  第3步：复制选项 359
14.2.4  第4步：调度作业 360
14.2.5  第5步：检查 361
14.3  监控和管理Streams复制
环境 362
14.3.1  监控捕获进程 363
14.3.2  监控传播进程 364
14.3.3  监控应用进程 365
14.3.4  显示事务细节：
LogMiner会话 367
14.3.5  显示Streams组件概要
信息 368
14.3.6  显示Streams路径和
性能分析数据 369
14.3.7  管理Streams进程 371
14.3.8  管理应用错误 373
14.4  Streams指标和告警 374
14.5  本章小结 376
第Ⅴ部分  附    录
附录A  Oracle Streams最佳实践 379
附录B  RAC环境中的Oracle Streams
复制 387
附录C  Streams健康检查报告 393
附录D  Streams复制的数据字典视图 399
附录E  参考文献 407