在一个系统集成项目中,需要将一台数据库服务器上的数据完整复制到另外一台数据库服务器上,没有网闸,现在使用的是insert into 表名 from select .... 的方式,以存储过程的方式定期执行进行数据复制的。具体过程是先判断数据有无差异性,无差异则丢弃,有差异即写入新库。需要支持7000万条数据的复制。但实际效率太低,每一次执行都要大半天时间。哪位大侠有没有更好的操作方法,最好能考虑到在数据导入过程中,服务器的IO能力问题?
解决方案 »
- PLSQL子程序如何传送表参数
- sqlserver2000通过触发器与Oracle同步数据。
- 怎么查询出ORACLE表的列的值是中文的
- ORA-01652: unable to extend temp segment by 128 in tablespace TEMP的问题.
- oracle 9i导出(百思不得其解)
- 如何动态的定义一个游标
- 为什么不能登陆ORACLE Manage Server
- 如何实现日期/时间字段。。。。。?
- Oracle里面的char数据类型是标准的JDBC类型吗
- 存储函数里面的动态Select语句的问题!!!!!
- oracle登录问题
- 求助此种海量数据表的设计方法及原则
2、做一个中间服务专门负责实时数据传输,把A服务器上的所有表写触发器,触发到一张表里,然后通过服务扫描这张表,发现有同步的信息就连接目标数据库把数据I,U,D过就可以了!
2.之后的增量数据写入新库,可以在存储过程中写:
select .. from A
minus
select .. form B
取出数据放入游标,再insert into 新表。这样只会导入有差异的几K或几W条数据了。
1、第一次将所有的数据都拷贝过来!记录一个增量值,比如时间或主键编号。
2、做一个Windows服务去查找增量值大的数据。这应该数据量很少,你可以把服务内线程的运行时间设置为1分钟或者更少。这样可以保证数据的实时性和完整性!
3、每次同步完成后都记录此次的最大增量值,以便下次使用。这样就是一个完整的同步了吧!