« Oracle中轻松复制SCOTT.EMP »
Tools » http://www.anysql.net/tools/datasync-data-replication.html 2010-03-27这里要介绍一个在DataCopy基础上开发出来的OCI程序, 可以基于物化视图日志或触发器抓捉的变化数据进行数据同步, 先暂时称这个OCI程序为DataSync, 使用它可以实现简单的一对一复制, 或一对多, 甚至于多对多的数据复制. 虽然不能想Shareplex之类的基于日志, 并保证事务顺序, 但在数据迁移, 历史数据归档中, 还是可以发挥很大的作用. 先来看一下命令行帮助吧.
DataSync: Oracle Data Replication Utility, Release 3.0.1
(c) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved.Usage: datasync keyword=value [,keyword=value,...]
Valid Keywords:
user = username/password@tnsname for source and target.
user1 = username/password@tnsname for source database.
user2 = username/password@tnsname for target database.
* wait = wait time in microsecond after each array.
array = array fetch size
long = maximum size for long, long raw, CLOB, BLOB columns.
* crypt = encrypt the connection info only, no data copy (YES/NO).
parfile = read command option from parameter file
config = config files.
* dbid = target database flag column of log table.
* dblist = all target database flag columns of log table.
* init = fix message out of sync before replication(YES).
log = log file name for screen messages.Notes:
datasync user1=scott/tiger user2=scott/tiger config=scott.cfg init=yesConfig:
Source # Primary Key # Log Table # Target # Conflict # Filler # Where
接下来我们来实现两个数据库(DB1,DB2)之间一个表(SCOTT.EMP)的同步, 要求将DB1的变更复制到DB2上, 使用DataSync来实现其实是非常简单的.
1, 在DB1的表(SCOTT.EMP)上创建物化视图, 并为物化视图的表创建一个索引, 以优化数据访问.
CREATE MATERILIZED VIEW LOG ON EMP WITH SEQUENCE, PRIMARY KEY;
CREATE INDEX MLOG$_EMP_IX1 ON MLOG$_EMP (SEQUENCE$$);
2, 准备一个配置文件(scott.cfg), 如下所示.
D:\>type scott.cfg
EMP #EMPNO #MLOG$_EMP #EMP
3, 使用DataCopy进行数据初始化, DB2上的表结构需要自行创建, DataCopy并不拷贝表结构信息.
datacopy user1=scott/tiger@db1 user2=scott/tiger@db2 table=emp
4, 启动DataSync数据复制后台进程.
datasync user1=scott/tiger@db1 user2=scott/tiger@db2 config=scott.cfg
5, 在源端做一些数据操作, 看看操作是不是被比较实时(2秒左右)地复制到DB2数据库中?
update emp set comm = nvl(comm,0) + 200;
如果你的数据库不是很忙, 又不想花大钱去引入Shareplex之类的高价软件, 并用对事务没有要求, 是可以用用DataSync的. 备注: 非注册版复制的频率为5分钟, 支持大约一秒7次变更以内的操作.


老楼真会赚钱啊..
和那个perl写的数据传输脚本 类似的吧
差不多,细节上有些区别.
仍然要在源端创建物化视图log?那既然这样为何不直接在目标端使用物化视图刷新呢?
物化视图还是有很多限制的.