最近,我正在使用Tungsten Replicator在异构数据库之间进行复制。我们有一个mysql主服务器和一个oracle从服务器。根据文档,这样的设置应该可以工作。我使用的是钨复制器-2.0.5。我打电话给
$TUNGSTEN_HOME/tools/configure \
--verbose \
--home-directory=$INSTALL_HOME \
--cluster-hosts=$MA_HOST,$SL_HOST \在主节点上创建两个节点上的基本安装。注意:由于安装程序在从节点上找不到mysql实例,所以使用安装程序(按照建议)会失败。通过将静态-$SERVICENAME.properties添加到conf目录并修改conf/services.properties (replicator.host=$HOSTNAME、replicator.masterListenPortStart=12112、replicator.rmi_port=20000)来配置复制器实例。
由于SQL-Statement中缺少'timestamp‘关键字,启动复制器导致在对钨模式中的trep_commit_seqno发出update语句时出现ORA-01850。为了克服这个错误,我将update_timestamp和extract_timestamp的数据类型更改为varchar。复制器现在正在启动和一些简单的插入,其中复制,但当测试脚本发出
DROP TABLE IF EXISTS table1;由于'IF EXISTS‘子句的原因,复制由于ORA-00933而失败。我不确定这是否是我的配置中的错误,或者这两个产品之间的DDL语句的差异是否存在问题。有没有人用钨成功地建立了一个类似的复制?
发布于 2011-11-14 19:16:08
钨的解释有一些有用的指导。特别是,“高级操作原则”中的这一点是相关的:“此外,除了最简单的CREATE TABLE表达式之外,DDL语句很少是可移植的。”在本例中,DROP TABLE IF EXISTS table1;不是有效的Oracle DDL。
发布于 2011-11-16 00:55:01
对于任何感兴趣的人:到目前为止,钨还没有在异构环境中执行任何DDL语句转换(正如MithunSasidharan所写的那样)。现在我编写了一个自定义过滤器,它使用正则表达式跳过ddl语句。为了同步模式定义,我们将使用Apache DdlUtils,它可以很好地在mysql和oracle之间转换模式定义。我假设它对其他供应商也有同样的效果。谢谢。
https://stackoverflow.com/questions/8120705
复制相似问题