- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
oracle高级复制与物化视图的选型
高级复制与物化视图的选型
一、????? 同步技术的选型
?
(一)???????????? 高级复制(Advanced Replication)
首先,从总部业务系统的业务需求出发,业务系统只需要对只读的数据进行同步和查询。
?
Oracle高级复制,也成为对称复制,分为多主体复制、物化试图复制和前两种的混合复制(参考图1-1,图1-2)。高级复制主要是用在对称的、等同的数据库表之间的(单向或双向)的复制,以满足分布式应用的需求。但高级复制也有一些缺点:
1.???????? 对网络的稳定性和传输速度要求比较高。
2.???????? 配置和管理稍微麻烦。
?
图1-1???? Multimaster Replication
?
?
?
图1-2???? Read-Only Materialized View Replication
?
下面是高级复制中的 物化视图架构的创建步骤:
1、检查系统初始化参数
?????? global_names 为 TRUE 以及job_queue_processes大于0。
2、检查全局数据库名称
?????? 上述三个站点的db_domain名称应该相同,只有db_name不同。
3、修改上述三个站点中的tnsnames.ora文件
4、建立主体站点
?????? 建立复制管理用户repadmin;建立主体组和实体化视图组;
?????? 注册传播用户;
?????? 建立物化视图站点复制管理用户的代理用户;
?
5、设置物化视图站点1
?????? 建立物化视图管理用户mvadmin;
?????? 注册传播用户;
?
6、设置物化视图站点2
?????? 建立物化视图管理用户mvadmin;
?????? 注册传播用户;
?
7、建立主体组
?????? 创建复制组,并将复制对象添加到复制组;
?????? 生成复制支持;
?
8、建立物化视图日志
?????? 建立物化视图日志(主站点);
?????? 建立物化视图;
?????? 将物化视图和相关索引添加到物化视图组;
?????? 将物化视图添加到刷新组;
?
对于高级复制中的多主环境和可更新的物化视图环境而言,它的原理是使用Oracle的Internal Trigger捕获DML及DDL操作,并将这些操作封装在Remote Procedure Calls(RPCs)里,并借助Deferred Transaction Queue来传递RPCs并在目标数据库利用Internal Trigger执行传递过来的RPCs从而实现了数据的同步。
如果仅仅是高级复制环境中的只读物化视图环境,那么Oracle这里并不会使用Deferred Transaction Queue来传递RPCs,而是直接利用解析物化视图日志的方式来实现数据的同步。
?
(二)???????????? 物化视图(MATERIALIZED VIEW)
?
1.???????? 物化视图的种类:
物化视图,根据不同的着重点可以有不同的分类
1)??????? 按刷新方式分:FAST/COMPLETE/FORCE
2)??????? 按刷新时间的不同:ON DEMAND/ON COMMIT
3)??????? 按是否可更新:UPDATABLE/READ ONLY
4)??????? 按是否支持查询重写:ENABLE QUERY REWRITE/DISABLE QUERY REWRITE
?
物化视图有三种刷新方式:COMPLETE、FAST和FORCE。
?
1)??????? 完全刷新(COMPLETE)会删除表中所有的记录(如果是单表刷新,可能会采用TRUNCATE的方式),然后根据物化视图中查询语句的定义重新生成物化视图。
2)??????? 快速刷新(FAST)采用增量刷新的机制,只将自上次刷新以后对基表进行的所有操作刷新到物化视图中去。
3)??????? 采用FORCE方式,Oracle会自动判断是否满足快速刷新的条件,如果满足则进行快速刷新,否则进行完全刷新。
?
设置REFRESH ON COMMIT的物化视图不能访问远端对象。
Oracle物化视图的快速刷新机制是通过物化视图日志完成的。Oracle如何通过一个物化视图日志还可以支持多个物化视图的快速刷新。
?
还可以使用以下语句进行手动刷新:
exec DBMS_MVIEW.REFRESH(aics_t_dv);
?
1、完全刷新
exec dbms_mview.refresh(list = aics_t_dv,method = c);
?
2、快速刷新
exec dbms_mview.refresh(list = aics_t_dv,method = f);
?
2.???????? 对物化视
文档评论(0)