oracle10 数据库单表如何进行同步到另外一个oracle10数据库中?

源数据库中单表数据量写入非常频繁 每秒上百条 同步实时性要求不高 半天一天都可以接受 主要是不能遗漏 采用什么方式同步比较好呢? 原始表只有插入操作 没有更新和删除操作,不接受触发器方式。

源表中有没有一个自然增长的、与写入顺序相关的字段,比如ID、写入时间?如果有,就做一个定时运行的JOB,如每小时或每6小时,间隔根据你的需要而定;再建一个同步记录表,记录每次同步时已经同步的数据,比如ID、时间,下次JOB运行时,从上次同步过的记录往后继续追加到新库。
如果是唯一的ID,可以在JOB启动时读取源表当前最大的ID,然后追加上次同步的ID+1到最大ID范围的数据到新库,成功后在同步记录里记录当前最大的ID,作为下次同步的起始依据。
如果有时间,那就根据你的JOB运行间隔,每次只追加在时间间隔内写入的数据,比如12:00:00.000到12:00:00.999时间范围内的数据,然后下次追加13:00:00.000到13:00:00.999。

如果啥都没有,那就只好定时全表刷新,先TRUNCATE目标表,然后源表整个复制过来,不过这样做随着时间推移数据激增,效率是相当可怕的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-07
那就创建个DBLink,然后写个存储过程,定时调用吧。你的数据应该是有时间戳的吧?没有的话加个字段表示时间戳,或者加个记录编号。然后写个很简单的存储,定时调用同步应该就可以了。追问

能给出这样一个存储过程么 我可以尝试创建一个sequence 就是不知道每秒200条记录下 性能会降低多少 如果有了这样一个唯一的记录编号 你能给出一个存储过程我来尝试一下么 dblink什么的都没有问题 都能搞定

oracle如何向一张表导入另一张表的部分数据
1、第一步,如果要从Oracle实例orcl导出多个dmp文件表,则在打开cmd窗口后,首先设置环境变量以将Oracle实例切换为orcl(设置ORACLE_SID = orcl),然后登录到sqlplus ,如下图所示,然后进入下一步。2、其次,完成上述步骤后,可以使用sql语句“select * from dba_directories”以查看当前实例下可用的...

oracle 怎么在同一个数据库里把一张表的数据插入另一张表,表结构不同...
一切皆有可能。如表A(id number,name varchar2(10),modi_date date,c1 number,c2,number);表B(id varchar2(10),name number,modi_date varchar2(8),c5 varchar2(20))insert into B(id,name,modi_date,c5)select cast(id as number),cast(name as varchar2(10)),to_char(modi_date,'y...

oracle把已知数据库中的前10条记录备份到另一张表中
create table 备份表 as select * from 已知表 where rownum < 11 将已知表前十条记录备份到已知表中(结构要求一致)insert into 备份表 select * from 已知表 where rownum < 11

如何将一个数据库表中的'部分'数据转到另一个数据库的表
1、首先需要打开数据库连接,此时显示已创建的数据库。2、然后需要展开要操作的数据库。3、然后需要展开数据库下的所有表。4、然后需要右击要操作的表,选择【复制表格】。5、然后需要点击【复制】。6、此时显示成功复制信息即可。

oracle数据库 怎么把一张表的10万条数据插入到另外一张有数据的表
试试这样处理:create table XX as select a1.*(需要列全字段) from a1 union all select a2.*(列全对应a1字段的a2表中的字段) from a2 仅供参考

oracle 中如何将一张500万数据的表从一个库快速转移到另外一个库
另外,你可以在测试库生成的500万数据的那个表上建索引,这两点可以实现的话,直接用insert ...select 来做就可以了,,导入前,把目标表的索引主键全删掉(记得备份,我看你说的意思目标表应该是个空表,所以这样做没有神马坏处),数据导入后再建。500万的数据,应该上不了半个小时就全部插进去...

如何连接别人电脑上的Oracle数据库?
1、在本地的oracle安装目录,找到tnsnames.ora文件,一般在~\\oracle\\product\\10.2.0\\db_1\\network\\ADMIN目录下,如图:2、用文本打开tnsnames.ora文件,添加以下内容:本地自定义实例名 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 数据库IP或数据库主机名)(PORT = 数据库端口号)...

oracle数据库一个表字段中存了id,并以逗号分隔,id对应的详细信息在另...
SELECT rownum, t.aid, wm_concat (t1.name) FROM leader t INNER JOIN leader_name t1 ON INSTR( CONCAT(',', t.aid, ','), CONCAT(',', t1.bid, ',') ) > 0 GROUP BY t1.aid ;试试,思路就是根据字符串截取,匹配id,然后group by,行转列。防止那种1...

数据库为oracle10,系统为windows2003,如何安装oracle10的集群
一般有两种方式:前提是要求 你有共享磁盘阵列 1 ORACLE有自己的集群 这个比较推荐 :RAC 。你在网上搜下就知道了。RAC 双实例做负载均衡了。一个节点完蛋另外个节点的可以把业务接管过来。2 使用WIN自带的集群软件。两边装一样的ORACLE软件。将数据库放到共享磁盘上,通过集群软件来实现高可用性。

怎么实现两个数据库的同步
少量数据库同步可以采用触发器实现,同步单表即可。 三、配置过程中可能出现的问题 在sql server 2000里设置和使用数据库复制之前,应先检查相关的几台sql server服务器下面几点是否满足: 1、mssqlserver和sqlserveragent服务是否是以域用户身份启动并运行的(.\\administrator用户也是可以的) 如果登录用的是本地系统帐户lo...

相似回答