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.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Oracle에 대한 솔루션은 개설 할 수 없습니다. 1. 데이터베이스 서비스 시작; 2. 청취자를 시작하십시오. 3. 포트 충돌을 확인하십시오. 4. 환경 변수를 올바르게 설정하십시오. 5. 방화벽이나 바이러스 백신 소프트웨어가 연결을 차단하지 않도록하십시오. 6. 서버가 닫혀 있는지 확인하십시오. 7. RMAN을 사용하여 손상된 파일을 복구하십시오. 8. TNS 서비스 이름이 올바른지 확인하십시오. 9. 네트워크 연결 확인; 10. Oracle 소프트웨어를 다시 설치하십시오.

Oracle Cursor Closure 문제를 해결하는 방법에는 다음이 포함됩니다. Close 문을 사용하여 커서를 명시 적으로 닫습니다. For Update 절에서 커서를 선언하여 범위가 종료 된 후 자동으로 닫히십시오. 연관된 PL/SQL 변수가 닫히면 자동으로 닫히도록 사용 절에서 커서를 선언하십시오. 예외 처리를 사용하여 예외 상황에서 커서가 닫혀 있는지 확인하십시오. 연결 풀을 사용하여 커서를 자동으로 닫습니다. 자동 제출을 비활성화하고 커서 닫기를 지연시킵니다.

Oracle에서 FOR 루프 루프는 커서를 동적으로 생성 할 수 있습니다. 단계는 다음과 같습니다. 1. 커서 유형을 정의합니다. 2. 루프를 만듭니다. 3. 커서를 동적으로 만듭니다. 4. 커서를 실행하십시오. 5. 커서를 닫습니다. 예 : 커서는 상위 10 명의 직원의 이름과 급여를 표시하기 위해주기별로 만들 수 있습니다.

Oracle Log 파일이 가득 차면 다음 솔루션을 채택 할 수 있습니다. 1) 오래된 로그 파일 청소; 2) 로그 파일 크기를 늘리십시오. 3) 로그 파일 그룹을 늘리십시오. 4) 자동 로그 관리를 설정합니다. 5) 데이터베이스를 다시 이용하십시오. 솔루션을 구현하기 전에 데이터 손실을 방지하기 위해 데이터베이스를 백업하는 것이 좋습니다.

Centos 시스템에서 Hadoop 분산 파일 시스템 (HDF)을 구축하려면 여러 단계가 필요합니다. 이 기사는 간단한 구성 안내서를 제공합니다. 1. 초기 단계에서 JDK를 설치할 준비 : 모든 노드에 JavadevelopmentKit (JDK)을 설치하면 버전이 Hadoop과 호환되어야합니다. 설치 패키지는 Oracle 공식 웹 사이트에서 다운로드 할 수 있습니다. 환경 변수 구성 : /etc /프로파일 파일 편집, Java 및 Hadoop 설정 설정 시스템에서 JDK 및 Hadoop의 설치 경로를 찾을 수 있습니다. 2. 보안 구성 : SSH 비밀번호가없는 로그인 SSH 키 : 각 노드에서 ssh-keygen 명령을 사용하십시오.

Oracle은 데이터베이스 회사 일뿐 만 아니라 클라우드 컴퓨팅 및 ERP 시스템의 리더이기도합니다. 1. Oracle은 데이터베이스에서 클라우드 서비스 및 ERP 시스템에 이르기까지 포괄적 인 솔루션을 제공합니다. 2. OracleCloud는 AWS와 Azure에 도전하여 IAA, PAAS 및 SAAS 서비스를 제공합니다. 3. E-BusinessSuite 및 FusionApplications와 같은 Oracle의 ERP 시스템은 기업이 운영을 최적화하는 데 도움이됩니다.

Oracle 데이터베이스를 중지하려면 다음 단계를 수행하십시오. 1. 데이터베이스에 연결하십시오. 2. 즉시 종료; 3. 셧다운은 완전히 중단됩니다.

Oracle View는 Expitility : Oracle 데이터베이스에 로그인하여 내보낼 수 있습니다. 뷰 이름 및 내보내기 디렉토리를 지정하여 EXP 유틸리티를 시작하십시오. 대상 모드, 파일 형식 및 테이블 스페이스를 포함한 내보내기 매개 변수를 입력하십시오. 내보내기를 시작하십시오. IMPDP 유틸리티를 사용하여 내보내기를 확인하십시오.
