热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

oracle分布式数据解决方案

Oracle相关分布式数据解决方案可能在云计算、SOA架构下这种方案会逐渐消亡,但是目前还是比较实用的,本文简单介绍了常用的数据同步方案,由于正在使用高级复制的解决方案,所以重点说了oracle的高级复制一、常见的分布式数据解决方案如果数据库为oracle、

Oracle相关分布式数据解决方案 可能在云计算、SOA架构下这种方案会逐渐消亡,但是目前还是比较实用的,本文简单介绍了常用的数据同步方案,由于正在使用高级复制的解决方案,所以重点说了oracle的高级复制 一、常见的分布式数据解决方案 如果数据库为oracle、

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的保留字,参考:
修改外网(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.

推荐阅读
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 智能制造数据综合分析与应用解决方案
    在智能制造领域,生产数据通过先进的采集设备收集,并利用时序数据库或关系型数据库进行高效存储。这些数据经过处理后,通过可视化数据大屏呈现,为生产车间、生产控制中心以及管理层提供实时、精准的信息支持,助力不同应用场景下的决策优化和效率提升。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 深入理解Java事务编程:可串行化隔离级别的快照隔离机制解析
    深入理解Java事务编程:可串行化隔离级别的快照隔离机制解析 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 【漫画解析】数据已删,存储空间为何未减?揭秘背后真相
    在数据迁移过程中,即使删除了原有数据,存储空间却未必会相应减少。本文通过漫画形式解析了这一现象背后的真相。具体来说,使用 `mysqldump` 命令进行数据导出时,该工具作为 MySQL 的逻辑备份工具,通过连接数据库并查询所需数据,将其转换为 SQL 语句。然而,这种操作并不会立即释放存储空间,因为数据库系统可能保留了已删除数据的碎片信息。文章进一步探讨了如何优化存储管理,以确保数据删除后能够有效回收存储空间。 ... [详细]
  • 如何正确获取Oracle TNS_ADMIN环境变量的值
    如何正确获取Oracle TNS_ADMIN环境变量的值?TNS_ADMIN 是 Oracle 客户端配置中的一个重要环境变量,用于指定网络配置文件(如 tnsnames.ora)的路径。本文将详细介绍如何在不同操作系统中准确获取该变量的值,并提供实用的命令和步骤,帮助用户确保 Oracle 客户端的网络连接配置正确无误。 ... [详细]
  • 在搭建Hadoop集群以处理大规模数据存储和频繁读取需求的过程中,经常会遇到各种配置难题。本文总结了作者在实际部署中遇到的典型问题,并提供了详细的解决方案,帮助读者避免常见的配置陷阱。通过这些经验分享,希望读者能够更加顺利地完成Hadoop集群的搭建和配置。 ... [详细]
  • 在多模块项目中,项目A作为一个独立的工具包,不依赖于任何第三方库。其目录结构如下:`--src--main--java--resources`。当将项目A打包成JAR文件后,发现无法正确访问`resources`目录下的文件资源。这一问题可能源于JAR文件的构建配置或类路径设置不当,需要仔细检查Maven或Gradle的构建脚本,确保资源文件被正确包含并加载。 ... [详细]
  • 如何在Oracle ASM_Diskgroup中重命名现有磁盘
    如何在Oracle ASM_Diskgroup中重命名现有磁盘 ... [详细]
  • 本文详细介绍了 Sublime Text 3 在 2021 年的激活密钥及其在线激活方法。用户可以通过提供的链接访问云海天教程,获取更多详细的激活码信息和操作步骤。此外,文章还提供了安全可靠的激活方案,帮助用户顺利激活软件,提升编程效率。 ... [详细]
  • 内网渗透技术详解:PTH、PTT与PTK在域控环境中的应用及猫盘内网穿透配置
    本文深入探讨了内网渗透技术,特别是PTH、PTT与PTK在域控环境中的应用,并详细介绍了猫盘内网穿透的配置方法。通过这些技术,安全研究人员可以更有效地进行内网渗透测试,解决常见的渗透测试难题。此外,文章还提供了实用的配置示例和操作步骤,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 综合实训 201521440015
    Chinesepeople’publicsecurityuniversity网络对抗技术实验报告实验五综合渗透学生姓名常泽远年级15区队4指导教师高见信息技术与网络安全学院2018 ... [详细]
author-avatar
手机用户2502853847
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有