OracleStream深入探讨.docx
- 文档编号:30387548
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:17
- 大小:123.05KB
OracleStream深入探讨.docx
《OracleStream深入探讨.docx》由会员分享,可在线阅读,更多相关《OracleStream深入探讨.docx(17页珍藏版)》请在冰豆网上搜索。
OracleStream深入探讨
OracleStream深入探讨
目录
Oracle高可用性(highAvailability)的几种技术架构2
SimpleOracleStream3
SimpleOracleStream的框架3
Capture过程4
Staging过程和Propagation过程4
Consumption过程5
SimpleOracleStream配置实例5
操作系统环境及数据库环境5
DownStream5
DownStream配置实例7
操作系统环境及数据库环境7
创建专用用户/表空间/授权8
配置网络(tnsnames.ora)8
创建Databaselink8
初始化参数配置9
修改系统为归档模式10
在DownStreamDatabase上增加StandbyLog组10
检查日志传输服务是否成功10
创建queue11
创建Capture进程11
创建捕获规则12
创建传播(propagation)进程12
创建应用规则13
启动Stream13
Oracle高可用性(highAvailability)的几种技术架构
从oracle9i开始,出现在oracle高可用性上的几种技术架构分别是:
1)高级复制(AdvancedReplication)
2)数据保护(DataGuard)OracleStandbyDatabase
3)RAC(OracleRealApplicationClusters)
4)OracleParallelServer
5)OracleServerHA
6)Oracle流(OracleStream)
7)MV/RMAN/LogMiner/Flashbackquery
其中OracleStream在9iR2中开始提供,在10gR1和R2中得到很大的强化和扩展。
从oracle的技术路线中可以看出,Stream将会是Oracle以后主推的一个技术热点,因为Stream有以下的优势。
A.实现的技术框架较高级复制(advancedReplication)更先进,不是基于数据库级的触发器,而是采用对日志(RedoLog)的挖掘能力。
B.对数据库资源利用比较少,这个特性在10g支持DownStream后更明显。
C.远程备份,特别是Internet级的远程备份成为可能。
D.由于Stream的Capture可以是Table/Rule/Database三种级别,使得Stream可以扩展出很多应用出来。
甚至作为一个ETL的可选方案,也是非常不错的。
E.当采用Table级的Stream时,可在rule上配置应用的DDL和DML,比起Dataguard必须全库同步,就有了很大的优势。
(其实DataGuard的logicalstandbyDatabase在底层的实现技术细节上和Real-TimeDownStream是非常相似的)
OracleStream可能派生出来的应用。
A.最传统的应用,当然是作为远程的数据库备机。
Stream的高效、实时、低耗的特点非常适用于这种应用。
唯一不足的是其稳定性比起StandbyDatabase来说还是要差一些,但作为Oracle主推的技术来说,我们可以看到在每一个Release版本中都有很大的改进。
B.在SlaveDatabase上,可以将应用系统的查询、统计、报表等非写操作移植过来,以分担Master机器的性能。
C.将应用分布到多个数据库中。
这种应用中,MasterDatabase负责基础数据的读写数据库(例如机构信息、人员信息等各个业务都需要的数据),通过StreamDatabase将数据实时同步到多个SlaveDatabase上,每个SlaveDatabase上进行其它业务的数据读写操作。
D.ETL过程,将数据从业务数据库上迁移到ODS上。
SimpleOracleStream
SimpleOracleStream是在9iR2中开始提供的技术,在10g中,其性能、配置、稳定性等得到很大的提高。
SimpleOracleStream的框架
整体框架如下图所示:
Stream过程包括三个主要的环节,如图所示
✧Capture:
是指对数据库的DDL和DML的变化捕获的环节。
✧Staging:
数据准备过程,这个环境还包括了一个重要的过程,Propagation数据传播过程。
✧Consumption:
数据消费过程。
Capture过程
Capture过程的底层原理如图所示。
用户提交的数据变化应用到数据库对象上,同时引起了RedoLog的变化(首先是OnlineRedoLog,对于归档模式运行的数据库,随后这些变化写入ArchivedRedoLog中。
),然后Capture进程捕获重做日志的变化,形成LCR记录,进入到高级队列(AQ)对象中。
Staging过程和Propagation过程
LCR记录进入AQ后,其实就完成了Staging的过程,更为重要的是Propagation传播过程。
Propagation过程其实就是从源高级队列到目标高级队列的传播。
这里需要注意的是,可以是一个源到多个目标的传播。
Consumption过程
Consumption过程其实是目标AQ中接收到的LCR记录被还原成为各种数据库操作动作,然后应用于目标数据库中,以达到目标数据库与源数据库执行同样操作的目的。
SimpleOracleStream配置实例
源数据库:
MasterDatabase目标数据库:
SlaveDatabase
操作系统环境及数据库环境
Master:
Slave:
DownStream
DownStream是在10gR2中提供的一种新型的Stream配置,其实可以看作是LocalCapture到RemoteCapture和RemotePropagation到DownStreamCapture的转变(当然,在技术细节上,local到Remote的转变绝不是一个单词改变那么简单了。
)。
采用DownStream可以解决在SimpleStream中出现的一些问题,并大大提高了Stream的部署灵活性。
DownStream的优势:
a)通过DownStreamDatabase来完成Capture和Propagation,大大减轻了源数据库的资源消耗。
b)部署更加灵活,在大型环境中可设置一个DownStreamDatabase的专用数据库服务器,来承担上诉的两个过程,向多个源数据库传播LCR记录。
在资源比较少的应用中,则可将DownStreamDatabase和SlaveDatabase部署在同一个服务器上。
c)减少了由于MasterDatabase故障导致的AQ阻塞情况。
DownStream同样分为两种模式,分别是:
*Archive-LogDownStream(仅归档日志的DownStream)
用户改变写入数据对象,LGWR进程将改变写入OnlineRedoLog。
ARCn写入归档日志,归档日志传入DownStreamDatabase,然后在DownStreamDatabase上进行Capture过程。
*Real-timeDownStream(实时的DownStream)
用户改变写入数据对象,LGWR进程将改变写入OnlineRedoLog。
同时将变化传入DownStreamDatabase的StandbyRedolog,然后在DownStreamDatabase上进行Capture过程。
两种模式的区别在于前者向DownStreamDatabase传递的是archivedRedolog(这就难免有数据延迟),而后者则是传递的OnlineRedolog(最大程度的保障了数据实时,使用的底层技术其实和LogicalStandbyDatabase其实是非常相象的。
)
DownStream配置实例
源数据库:
MasterDatabaseDownStream数据库和目标数据库(一体):
DownStreamDatabase
操作系统环境及数据库环境
Master:
Oracle10g10.2.0.3
DownStream:
Oracle10g10.2.0.3
创建专用用户/表空间/授权
在 SimpleStream模式中,需要在Master和SlaveDatabase上完成同样的动作,在DownStream模式中需要在StreamDatabase和SlaveDatabase上完成这些动作,因在测试环境中将StreamDatabase和SlaveDatabase放在一台机器上,因此只需要配置一次即可。
createtablespacestream_tsdatafile'D:
\database\oracle\product\10.2.0\oradata\orcl\stream_ts.dbf'
size100mautoextendonmaxsizeunlimitedsegmentspacemanagementauto;
executedbms_logmnr_d.set_tablespace('stream_ts');
createuserstrmadminidentifiedbystrmadmindefaulttablespacestream_tstemporarytablespacetemp;
grantconnect,resource,dba,aq_administrator_roletostrmadmin;
begin
dbms_streams_auth.grant_admin_privilege(
grantee=>'strmadmin',
grant_privileges=>true);
end;
/
配置网络(tnsnames.ora)
创建Databaselink
在MasterDatabase和SlaveDatabase分别用sys和strmadmin身份创建Databaselink,这里需要注意的是,由于在initparameter中设置了global_names=true因此,因此在dblink中,名称一定要和global_name一致。
设置global_name的语句如下:
alterdatabaserenameglobal_nameto
alterdatabaserenameglobal_nameto
创建databaselink的语句如下
createdatabaselinkconnecttosysidentifiedbysysusing'downstream';
createdatabaselinkconnecttostrmadminidentifiedbystrmadminusing'master';
创建完毕后可以使用下面的语句来测试连通。
Select*fromdual@master
初始化参数配置
这部分配置主要包括对OracleParameter的调整,具体调整的参数如下:
altersystemsetaq_tm_processes=2scope=both;
altersystemsetglobal_names=truescope=both;
altersystemsetundo_retention=3600scope=both;
altersystemsetjob_queue_processes=10scope=both;
altersystemsetparallel_max_servers=20scope=both;
altersystemsetnls_date_format='YYYY-MM-DDHH24:
MI:
SS'scope=spfile;
altersystemsetstreams_pool_size=100Mscope=spfile;
altersystemsetopen_links=4scope=spfile;
还有下面几个参数,只在DownStream下才会用到,但是非常重要,分别是
LOG_ARCHIVE_CONFIG
其中,MasterDatabase修改为send,DownStreamDatabase修改为receive
altersystemsetLOG_ARCHIVE_CONFIG='send'scope=both;
altersystemsetLOG_ARCHIVE_CONFIG='receive'scope=both;
LOG_ARCHIVE_DEST_n
这个参数设置最为复杂,对于archive-log模式和real-time模式均不相同,而且MasterDatabase服务器和DownStreamDatabase设置均不相同。
archive-log模式
real-time模式
MasterDatabase:
AltersystemsetLOG_ARCHIVE_DEST_2='SERVICE=DOWNSTREAMLGWRASYNCOPTIONALNOREGISTERVALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE)'scope=both;
DownStreamDatabase:
AltersystemsetLOG_ARCHIVE_DEST_2='LOCATION=D:
\database\oracle\product\10.2.0\arc_destMANDATORYVALID_FOR=(STANDBY_LOGFILE,PRIMARY_ROLE)'scope=both;
LOG_ARCHIVE_DEST_STATE_n
均设置为enable
AltersystemsetLOG_ARCHIVE_DEST_STATE_2=enablescope=both;
修改系统为归档模式
对于Real-timeDownStream来说,MasterDatabase和DownStreamDatabase都必须运行在archivelogmode下。
如果仅仅是配置Archive-logDownStream,则DownStreamDatabase可以不用运行在archivedlogmode。
参见以下的原文:
Fordownstreamcaptureprocesses,thedownstreamdatabasealsomustruninARCHIVELOGmodeifyouplantoconfigureareal-timedownstreamcaptureprocess.ThedownstreamdatabasedoesnotneedtoruninARCHIVELOGmodeifyouplantorunonlyarchived-logdownstreamcaptureprocessonit.
切换为Archivelogmode的方式如下:
shutdownimmediate;
startupmount;
alterdatabasearchivelog;
alterdatabaseopen;
在DownStreamDatabase上增加StandbyLog组
在DownStreamDatabase上增加standbylog组。
需要注意的是,Standbylog组的文件大小应该>=MasterDatabase上的onlineRedolog组的文件大小,同时,组的数量应该至少多于MasterDatabase的onlineredolog组数量。
创建standbylog组的时候,groupn其中n计数从系统中已有的onlineredologgroup的最大值+1开始。
查询系统中现有的onlineredolog组
select*fromv$log;
新的groupID大于字典中查询出来的最大ID。
新增standbyredolog组
ALTERDATABASEADDSTANDBYLOGFILEGROUP5
('D:
\database\oracle\product\10.2.0\dbs\slog5a.rdo','D:
\database\oracle\product\10.2.0\dbs\slog5b.rdo')SIZE100M;
检查日志传输服务是否成功
这一步配置完毕后,如果配置中没有出现问题,则日志传输服务应该可以正常运行了。
检查downstreamdatabase的LOG_ARCHIVE_DEST_2中给出的文件路径中是否有远程数据库服务器写入的文件。
也可以在MasterDatabase上执行altersystemarchivelogcurrent;命令执行完后,如果在DownStreamDatabase的接收目录中看到有同一时刻的新文件,并且standbyredolog的修改时间也变了的话,证明日志传输服务没有问题,则可以开始后面的配置,后面的配置与simplestream的配置就是一致的了。
创建queue
需要创建一个捕获queue和一个applyqueue
begin
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;
/
可用下面的语句删除queue
begin
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;
/
设置进行设置Capture
BEGIN
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_rules
BEGIN
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的传播进程。
Begin
dbms_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;
/
创建应用规则
begin
dbms_streams_adm.add_table_rules(
table_name=>'hrms.hr_personbaseinfo',
streams_type=>'apply',
streams_name=>'apply_capture',
queue_name=>'apply_queue',
include_dml=>true,
include_ddl=>true,
include_tagged_lcr=>false,
source_database=>'master',
inclusion_rule=>true);
end;
/
启动Stream
#启动Apply进程
begin
dbms_apply_adm.start_apply(
apply_name=>'apply_linux');
end;
/
#启动Capture进程
begin
dbms_capture_adm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OracleStream 深入 探讨