10g streams--01 帮助文档.ppt_第1页
10g streams--01 帮助文档.ppt_第2页
10g streams--01 帮助文档.ppt_第3页
10g streams--01 帮助文档.ppt_第4页
10g streams--01 帮助文档.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用Oracle流技术实现数据复制 AshishRayDirectorofProductManagementDatabaseHighAvailability ServerTechnologies Thefollowingisintendedtooutlineourgeneralproductdirection Itisintendedforinformationpurposesonly andmaynotbeincorporatedintoanycontract Itisnotacommitmenttodeliveranymaterial code orfunctionality andshouldnotberelieduponinmakingpurchasingdecisions Thedevelopment release andtimingofanyfeaturesorfunctionalitydescribedforOracle sproductsremainsatthesolediscretionofOracle 什么是OracleStreams 一个信息共享的简单解决方案它提供如下功能 复制消息队列数据仓库的装载和简单的ETL数据库迁移应用升级事件管理和通告 捕获 Streams 体系结构 RedoLogs 非 Oracle数据库 所以的点都处于活动和可更改状态自动的冲突检查和提供可选择的解决办法支持数据传输灵活的配置 n way hub spoke 数据库平台 版本 和schema的结构可以不同为用户的应用提供一个高可用的方案 这个方案中的update的冲突可以避免或可以管理 透明网关 传播 目标数据库 源数据库 Streams 功能组件 异步的信息共享架构 Capture 捕获 低开销 低延迟的变更捕获数据库的变更被写入在线的redolog当变更被写入数据库log后 OracleStreams提取这些变化Redoor归档log文件能在本地或orDownstream中捕获变更被格式化成逻辑变更记录 LCR 一个变更的表示方式自动重启 实例重启或者RAC实例发生错误保护 自动的流控制 逻辑变更记录 LCR 数据库变更 LCRDML行变更 LCR对象的名字 属主 DML的类型 SCN 老值 新值可选的属性 用户名 会话 线索 DDL对象的名字 属主 DML的类型 SCN DDL文本可选的属性 用户名 会话 线索 LOB和LONG字段每个LOB或者LONG字段column生成多个LCRs大数据分段 Staging 暂存 Streams发布捕获事件到内存中的暂存区域暂存区是用类型的队列实现Streams捕获使用缓存的ANYDATA类型的队列SGA中的Streams缓存池订阅者 另外一个暂存区或Streams进程消息一直保留在暂存区直到被所以的订阅者都使用在暂存区之间的传播通过传播任务定期进行LCRs从本地的数据库通过队列被传播到目标数据库的队列里 Apply 应用 缺省的应用引擎将间接地应用在LCR里的DML或者DDL应用到本地的Oracle表通过数据库链接应用到非Oracle表自动的带有选项的冲突检测没有解决的冲突放在错误队列中事务可以从错误队列中重新应用或者删除最大地并发使用并行应用 主数据库的Redo数据 Reader Preparer Redo记录 LCRLCR StreamsPool Builder Reader 传播 Coordinator 提交的事务聚合和排序成相互依赖的次序 Applier 目标数据库数据文件 在源数据库 Downstram或目标数据库中捕获 在目标数据库中应用 Streams进程的体系结构 逻辑变化记录不根据事务聚合 被应用的交易 StreamsPool LCRLCR StreamsPool 使用用户编码的冲突检测和错误处理 Streams捕获和应用 复制配置 本地捕获 UpdateEMPsetjob coding whereempid 510 RedoLog EMP empid job 100 sales 510 coding 传播 ACK 捕获 应用 Downstream的捕获 Redo传输的途径 UpdateEMPsetjob coding whereempid 510 empid job 100 sales 510 coding 捕获 应用 Propagation LGWR RFS 使用本地客户化的Streams捕获 本地捕获 PL SQLPackage DBMS APPLY ADMLCR DML处理器每个表每个操作 Insert Update Delete Lob Update SET DML HANDLER DDL处理器定义整个应用进程ALTER APPLY 应用指示SET ENQUEUE DESTINATION SET EXECUTE 事务 Pre Commit定义整个应用进程ALTER APPLY UpdateEMPsetjob coding whereempid 510 RedoLog 捕获 用户 处理器 基于规则的配置 消费者预定发布的事件规则使用SQLWHERE子句表达dbms rule adm create rule rule name scott rule1 condition dml get object owner SCOTT AND dml get object name EMP 规则集控制捕获 暂存的应用的行为包含排除动态规则维护裁剪的复制APIDBMS STREAMS ADM MAINTAIN Tables Schemas Global TTS DBMS STREAMS ADM ADD RULES Table Schema Global Subset 10 2 简单的配置Schema复制 BEGINdbms streams adm MAINTAIN SCHEMAS SCHEMA NAMES HR SCOTT SOURCE DIRECTORY OBJECT null DESTINATION DIRECTORY OBJECT null SOURCE DATABASE NULL DESTINATION DATABASE TARGET global name PERFORM ACTIONS TRUE BI DIRECTIONAL FALSE INSTANTIATION DBMS STREAMS ADM INSTANTIATION SCHEMA NETWORK SCRIPT DIRECTORY OBJECT SCRIPT DIR SCRIPT NAME generated schemas script sql END 基于规则的转换 转换可以在如下几个步骤实施 在事件进入暂存区时当事件离开暂存区时当事件在两个暂存区传播时areas声明转换schema 表 字段改名增加或删除字段客户转换用户提供的PL SQL函数 声明转换 BEGINDBMS STREAMS ADM RENAME SCHEMA rule name STRMADMIN HR51 from schema name HR to schema name HR REPL step number 0 operation ADD END SELECTrule owner rule namerule transform type from schema name to schema namefromDBA STREAMS TRANSFORMATIONS RULETYPEFROMTO STRMADMIN HR51DECLARATIVETRANSFORMATIONHRHR REPL 冲突的解决 如果被DML允许在多个地方修改一张表的同一个字段冲突可能发生冲突总是能被检测到如果有相应的配置 应用 Apply 试图解决冲突可以使用多个现成的冲突解决程序或者用户自己写的冲突字段被主键或替代键所标识为解决目标数据库发生冲突的字段的问题 源数据库可以提供附加的日志 处理错误 错误队列存储不能成功应用到目标数据库的事务当接受队列建立后自动建立只包含本地的错误信息包含每个错误事务的LCRsDBMS APPLY ADM EXECUTE ERROR 中有可选的错误处理程序应用错误管理MESSAGE NUMBERcolumninDBA APPLY ERROR参考在使用手册中的脚本 OracleStreamsConceptsandAdministration Chap22 MonitoringStreamsApplyProcesses andSection DisplayingDetailedInformationAboutApplyErrors 错误事务重试 Execute errorcanspecifyauser procedureBEGINDBMS APPLY ADM EXECUTE ERROR local transaction id 5 6 924 execute as user false user procedure strmadmin modify emp salary END UserProceduresignaturePROCEDUREstrmadmin modify emp salary in anyINANYDATA error recordINDBA APPLY ERROR ROWTYPE error message numberINNUMBER messaging default processingINOUTBOOLEAN out anyOUTANYDATA 例子 user procedure Execute error 1 1 1 user procedure MY ERR PROC createorreplaceprocedurestrmadmin my err proc ainanydata aeindba apply error rowtype eninnumber messaging default processinginoutboolean out anyoutanydata AStypenmVARCHAR2 61 rowlcrSYS LCR ROW RECORD resNUMBER BEGINout any a if en 107 thenres a GETOBJECT rowlcr rowlcr set value old SALARY Sys AnyData ConvertNumber 8000 messaging default processing TRUE out any Sys AnyData ConvertObject rowlcr endif END en isthelcrthatfailed MESSAGE NUMBERinDBA APPLY ERROR 支持异构数据库 Oracle通过网关到非Oracle的应用ApplyprocessonOraclenodeapplieschange支持非Oracle数据库到Oracle数据库的LCRs的捕获消息网关MQSeriesTibco LCRorusermessage Gateway MessageGateway MQSeries Sybase 案例学习 1 10gRAC 10g 一个大型制造工厂分离的报表系统 Offloadreporting 持续的负载 24 7制造 客户化应用 跟踪所以的事务 案例学习 210gRAC10gRAC 大型投资银行 Linux10gRAC 2节点 数据库 在不同的地理区域 WAN 一天之内负载在三大洲不断轮转 Followthesunworkload 客户化的Streams 用于把LOBs转换成XMLType 每个数据库3个队列 每个进程一个1个捕获进程 本地变化 2个应用进程变更来自于其他的源数据库 Streams复制的最佳实践 Ref Chap 14 BestPracticesforStreamsReplicationDatabases OracleStreamsReplicationAdministrator sGuide10gRelease2 10 2 一般的配置提示 对每个捕获 应用和每个源数据库进程使用不同的队列init ora job queue interval 1 在源数据库设置 表示任务队列扫描频率的间隔 秒 streams pool size 200M 在源和目标数据库设置 参见V STREAMS POOL ADVICE 对于广域网 SQL NET参数 增加SDU sqlnet ora tnsnames ora listener ora 增加send buf size recv buf size对于downstream的捕获 参见MAA最佳实践白皮书 OracleDatabase10gRelease2BestPractices DataGuardRedoTransport NetworkConfiguration 10gR2Streams进程参数 捕获 DBMS CAPTURE ADMpackage 如果需要 设置捕获检查点的持续时间Alter capture captureName checkpoint retention time 7 减少捕获检查点频率的参数Set parameter captureName checkpoint frequency 1000 传播 DBMS PROPAGATION ADMpackage 使用queue to queue参数 设置成TRUE 源和目标数据库必须是10 2或者是以上版本应用 DBMS APPLY ADMpackage Set parameter applyName parallelism 4 Set parameter applyName hash table size 10000000 Set parameter applyName disable on error N 应用性能的提示 ALTERTABLESYS STREAMS APPLY PROGRESSINITRANS16PCTFREE10 INITRANS的值应该和应用的并行度相匹配批量处理频繁提交 事务大小 1000LCRs 考虑使用存储过程复制 复制PL SQL存储过程调用 而不是复制存储过程产生的DML 有示例程序 规则设置提示 Spellingcounts source database name 源数据库的GLOBAL NAME必须正确设置消除重复和相互覆盖的规则集使用否规则集 negativeruleset 10gandabove 规则用于不允许的的对象和不支持的数据类型避免复杂的规则LIKEFunctionsNOT 9 2 操作设置提示 是否复制DDL 避免复制由系统生成的完整性约束和索引名修改手工的热备份脚本 设置应用标签例如 dbms streams set tag 99 是否从磁盘上删除归档日志 不要删除捕获进程重启后所需要的日志文件最小的REQUIRED CHECKPOINT SCN值配置源数据库归档日志文件存储的位置 不要放在闪回回复区 对于downstream数据库也一样 源数据库 心跳 使用周期性的任务更新心跳表来实现2个字段

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论