Oracle_Stream_深入探讨.doc_第1页
Oracle_Stream_深入探讨.doc_第2页
Oracle_Stream_深入探讨.doc_第3页
Oracle_Stream_深入探讨.doc_第4页
Oracle_Stream_深入探讨.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

Oracle Stream 深入探讨目录Oracle 高可用性(high Availability)的几种技术架构2Simple Oracle Stream3Simple Oracle Stream的框架3Capture过程4Staging 过程和Propagation过程4Consumption过程5Simple Oracle Stream配置实例5操作系统环境及数据库环境5DownStream5DownStream配置实例7操作系统环境及数据库环境7创建专用用户表空间/授权8配置网络 (tnsnames.ora)8创建Database link8初始化参数配置9修改系统为归档模式10在DownStream Database上增加 Standby Log组10检查日志传输服务是否成功10创建queue11创建Capture进程11创建捕获规则12创建传播(propagation)进程12创建应用规则13启动Stream13Oracle 高可用性(high Availability)的几种技术架构从oracle9i开始,出现在oracle高可用性上的几种技术架构分别是:1) 高级复制(Advanced Replication)2) 数据保护(Data Guard)Oracle Standby Database3) RAC(Oracle Real Application Clusters)4) Oracle Parallel Server5) Oracle Server HA6) Oracle 流(Oracle Stream)7) MV/RMAN/Log Miner/Flashback query其中Oracle Stream在9iR2中开始提供,在10gR1和R2中得到很大的强化和扩展。从oracle的技术路线中可以看出,Stream将会是Oracle以后主推的一个技术热点,因为Stream有以下的优势。A. 实现的技术框架较高级复制(advanced Replication)更先进,不是基于数据库级的触发器,而是采用对日志(Redo Log)的挖掘能力。B. 对数据库资源利用比较少,这个特性在10g支持DownStream后更明显。C. 远程备份,特别是Internet级的远程备份成为可能。D. 由于Stream的Capture可以是Table/Rule/Database三种级别,使得Stream可以扩展出很多应用出来。甚至作为一个ETL的可选方案,也是非常不错的。E. 当采用Table级的Stream时,可在rule上配置应用的DDL和DML,比起Data guard必须全库同步,就有了很大的优势。(其实Data Guard的logical standby Database在底层的实现技术细节上和Real-Time DownStream是非常相似的)Oracle Stream可能派生出来的应用。A. 最传统的应用,当然是作为远程的数据库备机。Stream的高效、实时、低耗的特点非常适用于这种应用。唯一不足的是其稳定性比起Standby Database来说还是要差一些,但作为Oracle主推的技术来说,我们可以看到在每一个Release版本中都有很大的改进。B. 在Slave Database上,可以将应用系统的查询、统计、报表等非写操作移植过来,以分担Master机器的性能。C. 将应用分布到多个数据库中。这种应用中,Master Database负责基础数据的读写数据库(例如机构信息、人员信息等各个业务都需要的数据),通过Stream Database将数据实时同步到多个Slave Database上,每个Slave Database上进行其它业务的数据读写操作。D. 过程,将数据从业务数据库上迁移到上。Simple Oracle StreamSimple Oracle Stream 是在9iR2中开始提供的技术,在10g中,其性能、配置、稳定性等得到很大的提高。Simple Oracle Stream的框架整体框架如下图所示:Stream过程包括三个主要的环节,如图所示 Capture:是指对数据库的DDL 和DML的变化捕获的环节。 Staging:数据准备过程,这个环境还包括了一个重要的过程,Propagation数据传播过程。 Consumption:数据消费过程。Capture过程Capture过程的底层原理如图所示。用户提交的数据变化应用到数据库对象上,同时引起了Redo Log的变化(首先是Online Redo Log,对于归档模式运行的数据库,随后这些变化写入Archived Redo Log中。),然后Capture 进程捕获重做日志的变化,形成LCR记录,进入到高级队列(AQ)对象中。Staging 过程和Propagation过程LCR记录进入AQ后,其实就完成了Staging的过程,更为重要的是Propagation传播过程。Propagation过程其实就是从源高级队列到目标高级队列的传播。这里需要注意的是,可以是一个源到多个目标的传播。Consumption过程Consumption过程其实是目标AQ中接收到的LCR记录被还原成为各种数据库操作动作,然后应用于目标数据库中,以达到目标数据库与源数据库执行同样操作的目的。Simple Oracle Stream配置实例源数据库:Master Database 目标数据库:Slave Database操作系统环境及数据库环境Master:Slave:DownStreamDownStream 是在10gR2中提供的一种新型的Stream配置,其实可以看作是Local Capture到Remote Capture和Remote Propagation到DownStream Capture的转变(当然,在技术细节上,local 到Remote的转变绝不是一个单词改变那么简单了。)。采用DownStream可以解决在Simple Stream中出现的一些问题,并大大提高了Stream的部署灵活性。DownStream的优势:a) 通过DownStream Database来完成Capture和Propagation,大大减轻了源数据库的资源消耗。b) 部署更加灵活,在大型环境中可设置一个DownStream Database的专用数据库服务器,来承担上诉的两个过程,向多个源数据库传播LCR记录。在资源比较少的应用中,则可将DownStream Database和Slave Database部署在同一个服务器上。c) 减少了由于Master Database故障导致的AQ阻塞情况。DownStream 同样分为两种模式,分别是:*Archive-Log DownStream(仅归档日志的DownStream)用户改变写入数据对象,LGWR进程将改变写入Online Redo Log。ARCn写入归档日志,归档日志传入DownStream Database,然后在DownStream Database上进行Capture过程。*Real-time DownStream(实时的DownStream)用户改变写入数据对象,LGWR进程将改变写入Online Redo Log。同时将变化传入DownStream Database的Standby Redo log,然后在DownStream Database上进行Capture过程。两种模式的区别在于前者向DownStream Database传递的是archived Redo log(这就难免有数据延迟),而后者则是传递的Online Redo log(最大程度的保障了数据实时,使用的底层技术其实和Logical Standby Database其实是非常相象的。)DownStream配置实例源数据库:Master DatabaseDownStream数据库和目标数据库(一体):DownStream Database操作系统环境及数据库环境Master: Oracle 10g DownStream : Oracle 10g 创建专用用户表空间/授权在Simple Stream模式中,需要在Master和Slave Database上完成同样的动作,在DownStream模式中需要在Stream Database和Slave Database上完成这些动作,因在测试环境中将Stream Database和Slave Database放在一台机器上,因此只需要配置一次即可。create tablespace stream_ts datafile D:databaseoracleproduct10.2.0oradataorclstream_ts.dbfsize 100m autoextend on maxsize unlimited segment space management auto;execute dbms_logmnr_d.set_tablespace(stream_ts);create user strmadmin identified by strmadmin default tablespace stream_ts temporary tablespace temp;grant connect,resource,dba,aq_administrator_role to strmadmin;begindbms_streams_auth.grant_admin_privilege(grantee = strmadmin,grant_privileges = true);end;/配置网络 (tnsnames.ora)创建Database link在Master Database和Slave Database分别用 sys 和 strmadmin身份创建Database link,这里需要注意的是,由于在init parameter中设置了global_names=true因此,因此在dblink中,名称一定要和global_name一致。设置global_name的语句如下:alter database rename global_name to alter database rename global_name to 创建database link的语句如下create database link connect to sys identified by sys using downstream;create database link connect to strmadmin identified by strmadmin using master;创建完毕后可以使用下面的语句来测试连通。Select * from dualmaster初始化参数配置这部分配置主要包括对Oracle Parameter的调整,具体调整的参数如下:alter system set aq_tm_processes=2 scope=both;alter system set global_names=true scope=both;alter system set undo_retention=3600 scope=both;alter system set job_queue_processes=10 scope=both;alter system set parallel_max_servers=20 scope=both;alter system set nls_date_format=YYYY-MM-DD HH24:MI:SS scope=spfile;alter system set streams_pool_size=100M scope=spfile;alter system set open_links=4 scope=spfile;还有下面几个参数,只在DownStream下才会用到,但是非常重要,分别是LOG_ARCHIVE_CONFIG其中,Master Database修改为 send, DownStream Database修改为receivealter system set LOG_ARCHIVE_CONFIG =send scope=both;alter system set LOG_ARCHIVE_CONFIG =receive scope=both;LOG_ARCHIVE_DEST_n 这个参数设置最为复杂,对于archive-log模式和real-time模式均不相同,而且Master Database 服务器和DownStream Database设置均不相同。archive-log模式real-time模式Master Database:Alter system set LOG_ARCHIVE_DEST_2=SERVICE=DOWNSTREAM LGWR ASYNC OPTIONAL NOREGISTER VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) scope=both;DownStream Database:Alter system set LOG_ARCHIVE_DEST_2=LOCATION=D:databaseoracleproduct10.2.0arc_dest MANDATORY VALID_FOR=(STANDBY_LOGFILE,PRIMARY_ROLE) scope=both;LOG_ARCHIVE_DEST_STATE_n均设置为enableAlter system set LOG_ARCHIVE_DEST_STATE_2=enable scope=both;修改系统为归档模式对于Real-time DownStream来说,Master Database和DownStream Database都必须运行在archive log mode下。如果仅仅是配置Archive-log DownStream,则DownStream Database可以不用运行在archived log mode。参见以下的原文:For downstream capture processes, the downstream database also must run in ARCHIVELOG mode if you plan to configure a real-time downstream capture process. The downstream database does not need to run in ARCHIVELOG mode if you plan to run only archived-log downstream capture process on it.切换为Archive log mode的方式如下:shutdown immediate;startup mount;alter database archivelog;alter database open;在DownStream Database上增加 Standby Log组在DownStream Database上增加standby log组。需要注意的是,Standby log组的文件大小应该=Master Database上的online Redo log组的文件大小,同时,组的数量应该至少多于Master Database 的online redo log组数量。创建standby log组的时候,group n其中n计数从系统中已有的online redo log group的最大值+1开始。查询系统中现有的online redo log组select * from v$log;新的group ID大于字典中查询出来的最大ID。新增standby redo log组ALTER DATABASE ADD STANDBY LOGFILE GROUP (D:databaseoracleproduct10.2.0dbsslog5a.rdo, D:databaseoracleproduct10.2.0dbsslog5b.rdo) SIZE 100M;检查日志传输服务是否成功这一步配置完毕后,如果配置中没有出现问题,则日志传输服务应该可以正常运行了。检查downstream database的LOG_ARCHIVE_DEST _2中给出的文件路径中是否有远程数据库服务器写入的文件。也可以在Master Database上执行 alter system archive log current;命令执行完后,如果在DownStream Database的接收目录中看到有同一时刻的新文件,并且standby redo log的修改时间也变了的话,证明日志传输服务没有问题,则可以开始后面的配置,后面的配置与simple stream的配置就是一致的了。创建queue需要创建一个捕获queue和一个apply queuebegin dbms_streams_adm.set_up_queue( queue_table = downstream_queue_table, queue_name = downstream_queue); end;/begin dbms_streams_adm.set_up_queue( queue_table = apply_queue_table, queue_name = apply_queue); end;/可用下面的语句删除queuebegin dbms_streams_adm.remove_queue( queue_name = downstream_queue);end;/创建Capture进程BEGIN DBMS_CAPTURE_ADM.CREATE_CAPTURE( queue_name = strmadmin. downstream_queue , capture_name = real_time_capture , rule_set_name = NULL, start_scn = NULL, source_database = master, use_database_link = true, first_scn = NULL, logfile_assignment = implicit);END;/设置进行设置CaptureBEGIN DBMS_CAPTURE_ADM.SET_PARAMETER( capture_name = real_time_capture, parameter = downstream_real_time_mine, value = y);END;/创建捕获规则这里可分别捕获table/schema/global。语法如下:add_table_rules/add_schema_rules/add_gloab_rulesBEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name = hrms.hr_personbaseinfo, streams_type = capture, streams_name = real_time_capture, queue_name = downstream_queue, include_dml = true, include_ddl = true, include_tagged_lcr = false, source_database = master, inclusion_rule = true);END;/清除这些配置使用语句BEGIN DBMS_STREAMS_ADM.remove_streams_configuration();END;/创建传播(propagation)进程传播进程需要对应捕获规则分别创建table/schema/global的传播进程。Begindbms_streams_adm.add_table_propagation_rules(table_name = hrms.hr_personbaseinfo,streams_name = propagation ,source_queue_name = downstream_queue,destination_queue_name = apply_queue,include_dml = true,include_ddl = true,include_tagged_lcr = false,source_database = master,inclusion_rule = true);end;/创建应用规则begindbms_streams_adm.add_table_rules(table_name = hrms.hr_personbaseinfo,streams_type = apply,streams_name = appl

温馨提示

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

评论

0/150

提交评论