oracle数据同步方案

合集下载

Oracle数据库同步技术

Oracle数据库同步技术

基于Oracle数据库的数据同步技术大体上可分为两类:Oracle自己提供的数据同步技术和第三方厂商提供的数据同步技术。

Oracle自己的同步技术有DataGuard,Streams,Advanced Replication和今年刚收购的一款叫做GoldenGate的数据同步软件。

第三方厂商的数据同步技术有Quest公司的SharePlex和DSG的RealSync。

下面对这些技术逐一进行介绍。

一、DataGuard数据同步技术DataGuard是Oracle数据库自带的数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用(Apply)这些日志文件,从而使目标数据库与源数据库保持同步。

DataGuard 提供了三种日志传输(Redo Transport)方式,分别是ARCH传输、LGWR同步传输和LGWR异步传输。

在上述三种日志传输方式的基础上,提供了三种数据保护模式,即最大性能(Maximum Performance Mode)、最大保护(Maximum Protection Mode)和最大可用(Maximum Availability Mode),其中最大保护模式和最大可用模式要求日志传输必须用LGWR同步传输方式,最大性能模式下可用任何一种日志传输方式。

最大性能模式:这种模式是默认的数据保护模式,在不影响源数据库性能的条件下提供尽可能高的数据保护等级。

在该种模式下,一旦日志数据写到源数据库的联机日志文件,事务即可提交,不必等待日志写到目标数据库,如果网络带宽充足,该种模式可提供类似于最大可用模式的数据保护等级。

最大保护模式:在这种模式下,日志数据必须同时写到源数据库的联机日志文件和至少一个目标库的备用日志文件(standby redo log),事务才能提交。

这种模式可确保数据零丢失,但代价是源数据库的可用性,一旦日志数据不能写到至少一个目标库的备用日志文件(standby redo log),源数据库将会被关闭。

Oracle主从同步、双向同步的配置

Oracle主从同步、双向同步的配置

Oracle主从同步、双向同步的配置(本教程展⽰了Windows环境的oracle数据库主从同步,Linux环境⼀样也可以)(把主数据库obpm 和从数据库orcl ⽤实际的数据库名给替换掉)(配置主从同步后,再配置双向同步,可能会有表数据重叠,建议在配置双向同完成后,再导⼊表数据!)备注:主、从数据库都⽤淡蓝⾊标记了,⽅便查找替换。

1.环境介绍主数据库SID : obpm操作系统 : win 2003IP地址 : 192.168.0.1Global_name :oracle version: 10.2.0.1从数据库SID: orcl操作系统 : win 2003IP地址 : 192.168.0.2Global_name :oracle version: 10.2.0.12.在主/从数据库设置初始化参数(在主从数据库都执⾏以下操作)(以as sysdba⾝份,可在sqlplus中执⾏)1) 以dba⾝份登录sqlplus / as sysdba2) 设置参数alter system set aq_tm_processes=2 scope=both; ---启⽤对队列消息的时间监视alter system set global_names=true scope=both; ---设置全局名称为truealter system set undo_retention=3600 scope=both; --设置回滚段时间,默认是900alter system set streams_pool_size=25M scope=spfile; --sga设置为⾃动调整情况下不需设置该参数3)重启动两个数据库,重启⽅式:1.shutdown immediate2.startup3.$lsnrctl start(⼀般都会提⽰监听已经启动)(windows服务中也可⼿动启动监听)3.设置主数据库(obpm)为归档mode (以as sysdba⾝份,可在sqlplus中执⾏)1) --查是否归档,如是归档,请忽略第3点archive log list;2) 归档设置shutdown immediate;startup mount;alter database archivelog;alter system set LOG_ARCHIVE_DEST_1='LOCATION=C:\Ora\arc\'; ---设置归档⽬录(执⾏此句后,在Windows系统⽂件夹中看看arc⽂件夹有没有创建成功,如果没有,则⼿动创建,在执⾏此语句) alter database open;alter system switch logfile; --相应⽬录检查是否⽣成arc⽂件(如果提⽰数据库没开启,则先执⾏alter database open;)4.主/从数据新建stream管理⽤户(在主从数据库都执⾏以下操作)sqlplus / as sysdba;create tablespace tbs_stream datafile 'C:\Ora\tbs_stream01.dbf' size 2000m autoextend on maxsize unlimited segment space management auto; ---创建主环境的Stream专⽤表空间execute dbms_logmnr_d.set_tablespace('tbs_stream'); --将logminer的数据字典从system表空间转移到新建的表空间,防⽌撑满system表空间create user strmadmin identified by strmadmin default tablespace tbs_stream temporary tablespace temp; --创建⽤户grant dba to strmadmin; --直接给dba权限.(Drop旧的表空间⽅法:drop tablespace tbs_stream including contents;)5.主数据库⽹络环境设置 (就是在主数据库中增加⼀个从数据库的连接服务)1)主数据库中添加从数据库的配置。

oracle主从同步原理

oracle主从同步原理

oracle主从同步原理Oracle主从同步原理Oracle主从同步是一种数据同步技术,它可以将主数据库中的数据同步到从数据库中,从而实现数据的备份和灾难恢复。

在Oracle主从同步中,主数据库是数据的源头,从数据库是数据的副本,主数据库中的数据发生变化时,从数据库会自动同步这些变化。

Oracle主从同步的原理是基于Oracle的日志传输技术,它可以将主数据库中的日志传输到从数据库中,从而实现数据的同步。

在Oracle主从同步中,主数据库会将数据的变化记录在日志文件中,从数据库会定期读取主数据库的日志文件,并将其中的变化应用到从数据库中。

Oracle主从同步的实现需要以下步骤:1. 配置主数据库的日志传输参数:在主数据库中,需要配置日志传输参数,包括日志传输模式、日志传输目标等。

日志传输模式有两种:归档模式和非归档模式。

归档模式下,主数据库会将日志文件归档到指定的目录中,从数据库可以通过网络读取这些归档文件。

非归档模式下,主数据库会将日志文件直接传输到从数据库中。

2. 配置从数据库的同步参数:在从数据库中,需要配置同步参数,包括同步模式、同步频率等。

同步模式有两种:实时同步和延迟同步。

实时同步下,从数据库会立即同步主数据库中的变化;延迟同步下,从数据库会延迟一段时间再同步主数据库中的变化。

3. 启动主从同步服务:在主数据库和从数据库中,需要启动主从同步服务,以便进行数据的同步。

主从同步服务会定期读取主数据库的日志文件,并将其中的变化应用到从数据库中。

4. 监控主从同步状态:在主数据库和从数据库中,需要监控主从同步状态,以便及时发现和解决同步问题。

主从同步状态可以通过Oracle的监控工具进行查看。

Oracle主从同步是一种可靠的数据同步技术,它可以实现数据的备份和灾难恢复。

在实际应用中,需要根据实际情况进行配置和监控,以确保数据的安全和可靠性。

oracle主从同步原理

oracle主从同步原理

oracle主从同步原理Oracle主从同步是企业级数据同步中最常用的方法之一,它可以保证跨地域或跨数据中心的数据一致性,应用于数据库热备份、大数据分析等场景。

本文将介绍oracle主从同步的原理、实现方式、优势和注意事项。

1.主从同步原理在oracle主从同步中,将有多个数据库实例作为参与者,其中一个数据库实例作为主数据库,其余的数据库实例都是从数据库。

主数据库负责所有的更新操作,从数据库通过重复主数据库的操作来保持数据同步。

当主数据库上数据发生变化,就会通过日志文件传到从数据库中,使从数据库与主数据库达成最新一致性。

2.实现方式Oracle主从同步可以通过多种方式实现,包括物理备份、数据复制、数据提取等多种方式。

其中,数据复制是其中一种使用最为广泛的方式。

数据复制是指在多个Oracle数据库之间复制表中的数据的过程。

它通过在主库上创建某种类型的复制方案来实现,将具有共同被复制的表的初始数据从源库传送到一个或多个目标库,然后根据需要实时或定期地传送源库的所有更改。

在数据复制同步进程中,要通过启用多种选项来保证和控制数据的复制过程,从而确保同步的一致性和完整性。

例如,每种复制方式都有不同的复制参数和选项,如同步或异步复制、实时或定期复制、保留或丢弃冲突数据等。

可以根据业务需求来选择一种或多种复制方案,以适应不同的同步策略和应用场景。

3.优势Oracle主从同步有以下优势:(1)数据的高可用性。

当主数据库出现故障时,从数据库可以顶替主数据库的工作,保证业务的正常运行。

(2)数据的分布性。

可以将数据在不同的机器上分布存储,提高了内存的利用率,缓解了单台机器压力,提高系统的可扩展性。

(3)数据的备份性。

同步复制可以建立和更新多个备份,保证数据完整和安全性,增强系统的数据保护能力。

(4)数据的读写分离性。

可以将主数据库用于写操作,从数据库用于读操作,提高数据库的性能和并发度。

4.注意事项Oracle主从同步也有其注意事项:(1)同步延迟。

oracle 数据库表同步方法

oracle 数据库表同步方法

oracle 数据库表同步方法Oracle数据库是一种关系型数据库管理系统,可以用于存储和管理大量数据。

在日常的数据库管理工作中,经常会遇到需要将数据从一个表同步到另一个表的情况。

本文将介绍几种常见的Oracle数据库表同步方法。

方法一:使用INSERT INTO SELECT语句INSERT INTO SELECT语句可以将一个表的数据插入到另一个表中。

首先,我们需要创建目标表,确保目标表的结构与源表相同。

然后,使用INSERT INTO SELECT语句将源表的数据插入到目标表中。

该方法适用于数据量较小、结构相同的表之间的同步。

方法二:使用MERGE语句MERGE语句可以同时执行插入、更新和删除操作,可以将源表的数据同步到目标表中。

首先,我们需要创建目标表,确保目标表的结构与源表相同。

然后,使用MERGE语句将源表的数据同步到目标表中。

该方法适用于数据量较大、需要同时进行插入、更新和删除操作的表之间的同步。

方法三:使用Oracle GoldenGateOracle GoldenGate是一种高性能的数据同步和复制工具,可以实现实时的、零数据丢失的数据同步。

使用Oracle GoldenGate可以将源表的数据实时同步到目标表中,并保持数据的一致性。

该工具适用于对数据同步要求较高的场景,但需要购买和配置相应的许可证和环境。

方法四:使用Oracle Data PumpOracle Data Pump是Oracle数据库自带的一种数据导入导出工具,可以将表数据导出为二进制文件,然后再导入到目标表中。

使用Oracle Data Pump可以将源表的数据导出为.dmp文件,然后再导入到目标表中。

该方法适用于数据量较大、需要跨不同数据库实例进行数据同步的场景。

方法五:使用外部表外部表是一种特殊的表,它不存储数据,而是通过定义外部表和数据文件的映射关系,实现对外部文件中数据的查询和操作。

可以使用外部表将数据从源表同步到目标表。

dataxoracle数据同步到oracle(异库同步传输)

dataxoracle数据同步到oracle(异库同步传输)

dataxoracle数据同步到oracle(异库同步传输)由于要实现两个不同数据源的同步,datax可以⾼效的传输,故在做海量数据同步和迁移时,可以考虑此⽅法,其中json⽂件如下。

{"job": {"setting": {"speed": {"channel": 3,"byte": 1048576},"errorLimit": {"record": 0,"percentage": 0.02}},"content": [{"reader": {"name": "oraclereader","parameter": {"username": "yrH5SM8rgxfgfTYB","password": "mmdfsQ8kTgfghfg","splitPk": "","connection": [{"querySql": ["select t.ins_order_id,t.request_type,t.trad_time,t.app_time from poqx.TRADE_ORDER_HIS t where 1=1 and t.create_time >= trunc(sysdate -1 ,'dd') and t.create_time < trunc(sysdate ,'dd') " ],"jdbcUrl": ["jdbc:oracle:thin:@192.168.81.63:1521:sxyuzs"]}]}},"writer": {"name": "oraclewriter","parameter": {"username": "nE+PjgfgJZb+RbE","password": "ariudyjdkes73A9","column": ["\"INS_ORDER_ID\"","\"REQUEST_TYPE\"","\"TRAD_TIME\"","\"APP_TIME\""],"preSql": ["delete from i_w.TRADE_INSURANCE_ORDER_HIS t where t.create_time >= trunc(sysdate -1 ,'dd') and t.create_time < trunc(sysdate ,'dd')"],"connection": [{"table": ["TRADE_ORDER_HIS"],"jdbcUrl": "jdbc:oracle:thin:@//192.168.32.10:1521/oppdb"}]}}}]}}。

oracle数据同步方法

oracle数据同步方法

oracle数据同步方法Oracle数据库同步是指将一个数据库的数据和变化同步到另一个数据库中,以保证数据的一致性和可用性。

Oracle提供了多种数据同步方法,包括物理备份和还原、逻辑备份和还原、数据泵导出和导入、基于日志的增量备份和还原、GoldenGate数据复制等。

下面将详细介绍这些方法。

1.物理备份和还原:物理备份是将数据库的数据文件、控制文件和日志文件复制到备份目录,还原则是将备份文件拷贝到目标数据库中恢复。

这种方法适用于大规模数据库,具有高效性和实时性,但需要占用大量的存储空间。

2.逻辑备份和还原:逻辑备份是将数据库中的逻辑对象(如表、视图、索引等)导出为可读的SQL语句,还原则是将导出的SQL语句在目标数据库中执行。

这种方法适用于小规模数据库,具有可读性和可移植性,但不适用于大规模数据库,因为导出和导入的过程较为耗时。

3. 数据泵导出和导入:数据泵是Oracle提供的一种高效的逻辑备份和还原方法,它通过使用数据库内部的数据泵工具,将数据库中的逻辑对象和数据导出为二进制文件,再通过导入工具将二进制文件恢复到目标数据库中。

数据泵导出和导入可以实现高效的数据同步和迁移,支持并发处理和并行执行,适用于大规模数据库。

4.基于日志的增量备份和还原:基于日志的增量备份是指将源数据库的日志文件传送给目标数据库,目标数据库通过解析和应用这些日志文件,实现源数据库和目标数据库之间的数据同步。

这种方法实时性较高,适用于大规模数据库的实时备份和恢复。

5. GoldenGate数据复制:GoldenGate是Oracle提供的一种高性能、实时数据复制解决方案。

它通过捕获源数据库的日志文件并将其传送到目标数据库,实现源数据库和目标数据库之间的数据同步和一致性保证。

GoldenGate具有较低的延迟、高可用性和强大的数据筛选和转换能力,适用于大规模和复杂的数据同步场景。

除了上述方法,Oracle还提供了一些辅助工具和技术来增强数据同步的效率和可靠性,如使用数据库链接进行数据复制、使用物化视图进行数据汇总和聚合、使用数据同步代理进行数据分发等。

详细讲解Oracle数据库的数据迁移方法

详细讲解Oracle数据库的数据迁移方法

详细讲解Oracle数据库的数据迁移方法Oracle数据库的数据迁移可以使用多种方法,包括传统的物理备份和恢复,逻辑备份和恢复,以及逻辑复制。

下面将详细介绍这些方法。

1. 物理备份和恢复(Physical Backup and Recovery):物理备份和恢复是最常用的数据迁移方法之一、它基于数据库的物理结构,通过将数据文件、控制文件和日志文件等直接复制到目标数据库来完成数据迁移。

具体步骤如下:(1)在源数据库上执行全量备份,包括数据文件、控制文件和日志文件。

(2)将备份文件传输到目标数据库主机。

(3)在目标数据库上恢复备份文件。

物理备份和恢复的优点是速度快,适用于大规模数据迁移,但缺点是需要额外的存储空间以及停机时间。

2. 逻辑备份和恢复(Logical Backup and Recovery):逻辑备份和恢复是另一种常用的数据迁移方法,它基于逻辑结构,通过导出和导入数据来完成数据迁移。

具体步骤如下:(1) 在源数据库上执行逻辑备份,例如使用expdp命令将数据导出为数据泵文件。

(2)将数据泵文件传输到目标数据库主机。

(3) 在目标数据库上执行逻辑恢复,例如使用impdp命令将数据导入。

逻辑备份和恢复的优点是可以选择性地备份和恢复数据,不需要额外的存储空间,但缺点是速度较慢,适用于小规模数据迁移。

3. 逻辑复制(Logical Replication):逻辑复制是一种将源数据库的数据变更应用到目标数据库的方法,它可以实时地将数据更新传输到目标数据库。

具体步骤如下:(1) 在源数据库上启用逻辑复制功能,例如使用Oracle GoldenGate或Oracle Streams。

(2)配置源数据库和目标数据库之间的连接。

(3)在目标数据库上创建复制进程,用于接收源数据库发送的数据变更。

(4)启动复制进程,开始数据复制。

逻辑复制的优点是实时性好,可以减少停机时间,但缺点是配置和管理复杂,需要考虑数据一致性和传输性能等问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oracle 数据同步方案(DBLink)一、什么是dbLink两台不同的数据库服务器,从一台数据库服务器(例如A数据库服务器)的一个用户读取另一台数据库服务器(例如B数据库服务器)下的某个用户的数据,这个时候可以使用dblink。

其实dblink和数据库中的view差不多,建dblink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码。

二、DbLink的创建步骤说明:A数据库服务器是指-需要同步的数据库服务器,B数据库服务器是指-被同步的数据库服务器,以下文档中简称A数据库与B数据库。

1、在目的数据库上(A数据库),创建dblinkdrop public database link dblink_orc92_182;Create public DATABASE LINK dblink_orc92_182 CONNECT TO bst114IDENTIFIED BY password USING ''orc92_192.168.254.111'';注释:--dblink_orc92_182 是dblink_name即创建的dblink名称--bst114 是username即A数据库的用户--password 是password即A数据库用户名密码--''orc92_192.168.254.111'' 是远程数据库名即B数据库的名称,为了方便期间命名最好是“数据库名称+ip”2、在源数据库(B数据库)和目的数据库(A数据库)上创建要同步的表说明:不管是A数据库还是B数据库上创建的表最好有主键约束,快照才可以快速刷新drop table test_user;create table test_user(id number(10) primary key,name varchar2(12),age number(3));3、在目的数据库(A数据库)上,测试dblink说明:在A数据库上执行如下查询语句select * from test_user@dblink_orc92_182; //查询的是源数据库的表select * from test_user;注释:--dblink_orc92_182是刚才一步创建的dblink名称--test_user同步表名称4、在源数据库(B数据库)上,创建要同步表的快照日志说明:在B数据库上执行如下查询语句Create snapshot log on test_user;5、创建快照,在目的数据库(A数据库)上创建快照Create snapshot sn_test_user as select * from test_user@dblink_orc92_182;注释:-- sn_test_user 快照的名称6、设置快照刷新时间说明:在B数据库上执行如下查询语句,只能选择一种刷新方式,推荐使用快速刷新,这样才可以用触发器双向同步。

快速刷新Alter snapshot sn_test_user refresh fast Start with sysdate next sysdate with primary key;--oracle马上自动快速刷新,以后不停的刷新,只能在测试时使用.真实项目要正确权衡刷新时间.完全刷新Alter snapshot sn_test_user refresh complete Start with sysdate+30/24*60*60 next sysdate+30/24*60*60;--oracle自动在30秒后进行第一次完全刷新,以后每隔30秒完全刷新一次7、手动刷新快照,在没有自动刷新的情况下,可以手动刷新快照说明:在B数据库上执行如下查询语句手动刷新方式1begindbms_refresh.refresh(''sn_test_user'');end;手动刷新方式2EXEC DBMS_SNAPSHOT.REFRESH(''sn_test_user'',''F''); //第一个参数是快照名,第二个参数F 是快速刷新C 是完全刷新.8、修改会话时间格式说明:在B数据库上执行如下查询语句ALTER SESSION SET NLS_DATE_FORMAT = ''YYYY-MM-DD HH24:MI:SS'';9、查看快照最后一次刷新时间说明:在B数据库上执行如下查询语句SELECT NAME,LAST_REFRESH FROM ALL_SNAPSHOT_REFRESH_TIMES;10、查看快照下次执行时间说明:在B数据库上执行如下查询语句select last_date,next_date,what from user_jobs order by next_date;11、打印调试信息说明:在B数据库上执行如下查询语句dbms_output.put_line(''use ''||''plsql'');12、如果你只想单向同步(B同步到A)说明:那么在目的数据库(A数据库)创建以下触发器(当源数据库(B数据库)表改变时,目的数据库(A数据库)表跟着改变,但目的数据库(A数据库)表改变时,源数据库(B数据库)表不改变).说明:在B数据库上执行如下查询语句create or replace trigger TRI_test_user_AFRafter insert or update or delete on sn_test_userfor each rowbeginif deleting thendelete from test_user where id=:old.id;end if;if inserting theninsert into test_user(id,name)values(:new.id,:);end if;if updating thenupdate test_user set name=: where id=:old.id;end if;end TRI_test_user_AFR;13、如果你想双向同步(A同步到B,B也可以同步到A)说明:请在源数据库(B数据库)中执行前6步,并在双方都创建以下触发器(当源数据库(B 数据库)表改变时,目的数据库(A数据库)表跟着改变,目的数据库(A数据库)表改变时, 源数据库(B数据库)表也改变)CREATE OR REPLACE TRIGGER BST114.TRI_TEST_USER_AFRAFTER DELETE OR INSERT OR UPDA TEON BST114.SN_TEST_USERREFERENCING NEW AS NEW OLD AS OLDFOR EACH ROWdeclaretmp_id number(10):=-1;begindbms_output.put_line(''begin'');if inserting then--select id into tmp_id from test_user where id=:new.id;for p in(select id from test_user where id=:new.id)looptmp_id:=p.id;end loop;dbms_output.put_line(tmp_id||''===------------'');if (tmp_id=-1) theninsert into test_user(id,name,age)values(:new.id,:,:new.age);end if;end if;if updating thendbms_output.put_line(''updated'');for p in(select name,age from test_user where id=:old.id)loopif (!=:) or (p.age!=:new.age) thenupdate test_user set name=:,age=:new.age where id=:old.id;end if;end loop;end if;if deleting thendbms_output.put_line(''deleted'');delete from test_user where id=:old.id;end if;dbms_output.put_line(''end'');end TRI_test_user_AFR;--为防止双向同步触发器死循环,所以要在触发器中增加一些判断,阻止死循环.--以上同步原理概括:1.首先创建一个dblink,可以访问远程数据库2.在本地创建一个快照,映射远程数据表,当远程数据表有变化时,会反应到快照中.3.由于快照类似于视图表,所以在本地为快照创建一个触发器,当快照有变化时,会触发相应事件.4.在触发器中写同步数据的代码.--附:快照刷新时间参数说明一天的秒数=24小时*60分钟*60钞所以要想在30秒后刷新,参数应该这样写sysdate+30/(24*60*60)1分钟==sysdate+60/(24*60*60)一天的分钟数=24小时*60分钟一分钟也可以这样写sysdate+1/(24*60)30分钟==sysdate+30/(24*60)60分钟==sysdate+60/(24*60)以此类推1小时==sysdate+1/24==sysdate+60/(24*60)1天==sysdate+1一个月==sysdate+30。

相关文档
最新文档