oracle相关分布式数据解决方案
可能在云计算、SOA架构下这种方案会逐渐消亡,但是目前还是比较实用的,本文简单介绍了常用的数据同步方案,由于正在使用高级复制的解决方案,所以重点说了oracle的高级复制
一、常见的分布式数据解决方案
如果数据库为oracle、数据分散的分布式系统,常可以见到入下的分布解决方案
非实时,批量同步
1.ETL工具或者自己开发的接口
一般对应于特定格式的数据文件,使用FTP服务。
数据仓库或者数据集市可以使用ETL工具做数据整合,一般系统都是自己写的接口程序实现。常规思路是数据导入接口表,清洗后进入正式表
导入方式非常多,如果数据量很大可以使用sqlLoder,如果数据不大,可以逐行导入并同时清洗。就我的经验来看,将清洗逻辑放在数据库比较好。
也有可能是通过http获得的XML文件,这时需要自己定制XML的解析程序,读出CDATA节。高级程序语言这方面的功能都很强大、简单。
实时、小批量同步
1.第三方提供的
对于关键系统,可以使用中间件保证数据的安全、稳定。比如BEA的Tuxedo就不错。
2.自己开发
如果都是unix机器可以使用socket编程,数据打成包发送,稳定性可以保证。经常是打成XML的格式,数据文件的自描述能力比较强。
这两种方案在电信等系统都可以见到,还是比较可靠的。
3.oracle自己提供的
3.1实时表接口
使用db_link和存储过程,结合job,很灵活和强大。
3.2 oracle高级复制
如果需要保证双向的实时数据同步,同时复制环节又比较复杂,存在多个复制结点,可以使用Oracle的高级复制,今年在我做的房产局项目中使用了这种方案。虽然就这个项目来说,不太适用使用这种方案,但由于历史的原因,为了一期系统的需要我们延续了这种同步方案。这篇文章主要就高级复制的过程进行说明:
二、高级复制基本概念
1.相同数据会存在于多个结点,这种环境更适宜使用高级复制
2.在不同版本和不同操作系统之间的ORACLE,都可以使用advance replication
3.几个名词
replication object:复制对象,包括表、索引、存储过程
replication group:复制组,复制对象的集合,一个group包含多个object,一个object只能属于一个group
replication site:复制站点
4.multimaster replication:特点:全表复制,每个事务后都可进行复制
复制方式
异步复制:推后的时间内复制到其它master,也叫store and forward data replication
同步复制:立刻更新到其它master,也就real time data replication
procedual replication: 包生成一个wrapper,数据变化通过存储过程完成,某个master中的procedure被调研,wapper会保证其它site中 的procedure也被调用,在有大数据量操作时可减少网络负载
异步调用过程
DML操作(或者wappers)产生由内部触发器一个延时rpc并放入延时事务队列,1个site有延时事务队列,1个队列被多个group共用
出现错误将事务放入错误队列,事务成功结束后,由purge job从源site的事务队列中删除事务
同步复制过程
DML操作被立刻捕获,事务立刻执行,任何一个站点出错、事务回滚,先锁住本地行,使用after row触发器锁住远端行,所有站点提交后 oracle才会解锁,极为依赖系统和网络的可用性
三、高级复制创建步骤:
网上的资料很多,也很详细,其中eygle的比较详细的经典,大家搜一下就可以看到,我就简单说一下,并就自己碰到的问题描述一下解决办法
1.调整oracle环境,建立repadmin用户,为用法赋权
2.建立db_link
3.复制组中建立复制对象
可使用图形化工具或者手工脚本建立,由于表很多,而且正式部署还有再次建立,这里我使用了手工脚本方式
--创建复制组:
DBMS_REPCAT.CREATE_MASTER_REPGROUP(
gname => '"***"',
qualifier => '',
group_comment => '');
--在复制组里加入复制对象:
DBMS_REPCAT.CREATE_MASTER_REPOBJECT(
gname => '"**"',
type => 'TABLE',
oname => '"TEST"',
sname => '"LFGISTEST"',
copy_rows => false,
use_existing_object => TRUE);
--对复制对象产生复制支持:
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT(
sname => '"LFGISTEST"',
oname => '"TEST"',
type => 'TABLE');
--添加主体复制节点:
DBMS_REPCAT.ADD_MASTER_DATABASE(
gname => '"***"',
master => '***',
use_existing_objects => TRUE,
copy_rows => false,
propagation_mode => 'ASYNCHRONOUS');
--在主体定义站点启动复制:
DBMS_REPCAT.RESUME_MASTER_ACTIVITY(gname => '"***"',true);
碰到的错误
1.db_link创建后无法使用,发现db_link起的名称有问题
解决方法:如果global_names = true;db_link名称一定要和global_name一致,修改后成功
2.添加主体复制节点时报错:
ORA-23357: the propagator does not exist
ORA-06512: at "SYS.DBMS_REPCAT_CACHE", line 76
ORA-06512: at "SYS.DBMS_REPCAT_MAS", line 2105
ORA-06512: at "SYS.DBMS_REPCAT", line 146
ORA-06512: at line 2
可能原因:
1.global_name使用了oracle的保留字,参考:http://oracle-tech.blogspot.com/2008/08/ora-23375-when-adding-new-master-site.html
修改外网(61)global_name 为OUT.WWKJ.LZFC2
alter database rename global_name to OUT.WWKJ.LZFC2;
2.REPADMIN用户权限不足,检查赋权限的语句,确保权限到位
3.db_link必须使用REPADMIN连接对端数据库,我就是因为这个原因报的错
4.据说两台数据库的域必须一样
5.两台机器的用户和schema应该一致
解决方法:呵呵,很粗心啊,没有用repadmin运行脚本
3.复制组中加入复制对象时候,报23312错误,当前站点不是masterdef
Oracle Error : ORA-23312: not the masterdef according to string
Cause: The group name is null, the group name is misspelled, the invocation or given database is not the masterdef, or one of the masters does not believe the invocation database is the masterdef.
Action: If the given group name and masterdef were both correct, connect to the masterdef and retry the request, or relocate the masterdef at the (errant) databases using relocate_masterdef.
解决方法:上面的脚步中gname要大写后通过s
分享到:
相关推荐
在大型或中型企业的数据管理中,Oracle分布式系统数据复制技术已经成为一种重要的解决方案。企业业务的地理分散特点要求数据可以在不同地点的部门间共享,这就要求数据管理系统能够支持高效和实时的数据复制功能。...
Oracle提供了一套完整的分布式数据库解决方案,包括全局唯一标识符(Global Unique Identifier, GUID)、分布式事务处理、数据复制等机制,以确保数据的一致性和完整性。 在单机上模拟Oracle分布式数据库数据复制,...
在当今的IT环境中,数据的一致性是企业数据库系统中最为重要的要求之一。...对于数据库专业人士而言,这些内容构成了基础且重要的知识点,有助于提升个人专业技能,更好地解决实际工作中遇到的分布式数据管理问题。
腾讯云分布式数据库解决方案提供了深入的信息和技术细节,着重介绍了腾讯云分布式数据库DCDB的发展历史、架构、功能、优势和应用场景,同时也强调了产品相关的安全和资质。以下是对这些内容的详细解读: 一、分布式...
Oracle Grid 分布式计算技术为现代企业提供了强大而灵活的基础架构解决方案。它不仅帮助企业降低了运营成本,还提高了系统的稳定性和响应速度,从而更好地支持业务目标和发展需求。随着技术的不断进步,Oracle Grid ...
在本文中,我们将深入探讨MSSQL Server的分布式查询解决方案,包括其工作原理、应用场景和实现方法。 分布式查询的核心在于能够跨越服务器边界,整合来自多个数据源的数据。与常规查询不同,分布式查询需要处理多个...
总的来说,.NET 2.0的分布式事务解决方案提供了一个强大且灵活的工具集,使开发者能够在复杂的分布式环境中保持数据的一致性。通过深入理解TransactionScope的工作原理以及与MSDTC的交互,开发者可以构建出健壮的...
Oracle分布式数据库系统是一种强大的解决方案,它允许用户在多个地理位置分散的数据库之间无缝协作,就像它们都在同一个地方一样。这个系统采用客户/服务器架构,其中每个具备多用户处理能力的硬件节点都可以作为...
Oracle分布式系统的数据复制技术是一种关键的数据库管理策略,旨在提高数据的安全性和可用性,同时优化性能。这种技术涉及将数据库中的数据复制到不同地理位置的多个站点,以实现数据的本地访问,减少网络负担,增强...
支持双机热备的HA解决方案, 应用方可以根据情况选用数据库特定的HA解决方案(比如Oracle的RAC),或者选用CobarClient提供的HA解决方案.小数据量的数据集计(Aggregation), 暂时只支持简单的数据合并.数据库本地事务的...
- 客户服务:记录客户问题,提供解决方案,跟踪服务进度,提高客户满意度。 5. 安全性和性能优化 系统将采用角色权限管理,限制不同用户访问敏感数据。同时,通过Oracle的索引优化、分区技术和缓存机制,提高查询...
标题所涵盖的知识点主要有:Oracle分布式系统、数据复制技术、同步数据复制、异步数据复制、容错保护机制。 首先,Oracle分布式系统是指使用Oracle数据库软件构建的分布式数据库系统。在这样的系统中,数据可能存放...
**Elasticsearch 分布式搜索解决方案** 随着大数据时代的到来,数据量呈指数级增长,传统的数据库解决方案面临挑战。当系统数据量达到10亿、100亿条时,我们需要考虑以下几个方面来优化检索和系统架构: 1. **选择...
总的来说,Oracle分布式系统数据复制技术是一种成熟的解决方案,它能够在保证数据一致性和系统稳定性的同时,满足企业跨地域数据管理和业务连续性的需求。通过合理利用Oracle提供的工具和技术,企业能够构建出高效、...
本系统旨在为企业提供一个全面、集成的CRM解决方案,包括客户信息管理、销售自动化、市场营销和服务支持等模块。系统通过Oracle数据库进行数据存储和处理,利用Struts MVC框架进行业务逻辑和界面展示的分离,实现...
Oracle作为全球领先的数据库管理系统之一,提供了强大的分布式数据库解决方案,支持数据的分布存储、一致性和安全性,满足了大型企业对数据处理的高要求。 #### Oracle分布式数据库设计方法 在设计基于Oracle的...