Java oracle中dblinks的替代方法

Java oracle中dblinks的替代方法,java,oracle,Java,Oracle,我拥有Oracle db的多个客户端实例和一个中央Oracle db。 我们需要从客户机数据库与中央数据库通信,而无需创建数据库链接。我们正在用java开发应用程序 问题: 我们不能在属性文件或任何其他类中使用中央数据库连接。 我们无法创建到客户端数据库的数据库链接。 它就像一个在客户端运行的应用程序拥有自己的db实例一样 请建议我们如何进行 提前谢谢 解决方案是开发自己的协议 每当一个数据库上发生事务时,您都会转储与其关联的DML,并在其他数据库上运行它 源数据库已审核任何修改(请参阅SQL

我拥有Oracle db的多个客户端实例和一个中央Oracle db。 我们需要从客户机数据库与中央数据库通信,而无需创建数据库链接。我们正在用java开发应用程序

问题: 我们不能在属性文件或任何其他类中使用中央数据库连接。 我们无法创建到客户端数据库的数据库链接。 它就像一个在客户端运行的应用程序拥有自己的db实例一样

请建议我们如何进行


提前谢谢

解决方案是开发自己的协议

每当一个数据库上发生事务时,您都会转储与其关联的DML,并在其他数据库上运行它

  • 源数据库已审核任何修改(请参阅SQL跟踪或V$SQL…)。这是一个java守护进程,也可以是PL/SQL
  • 您必须有一个队列来处理DML或DDL命令,然后在任何其他数据库上以相同的顺序运行它们
  • 目标数据库收集DML或DDL,比方说在Samba共享或其他东西上,并在本地运行它们。这可以是一个java守护进程来完成这项工作

希望对你有帮助,祝你好运

解决方案是开发自己的协议

每当一个数据库上发生事务时,您都会转储与其关联的DML,并在其他数据库上运行它

  • 源数据库已审核任何修改(请参阅SQL跟踪或V$SQL…)。这是一个java守护进程,也可以是PL/SQL
  • 您必须有一个队列来处理DML或DDL命令,然后在任何其他数据库上以相同的顺序运行它们
  • 目标数据库收集DML或DDL,比方说在Samba共享或其他东西上,并在本地运行它们。这可以是一个java守护进程来完成这项工作

希望对你有帮助,祝你好运

所以你想和数据库通信。。。但你不被允许连接到它?您能解释一下为什么不允许创建数据库链接或数据库连接信息吗?如果这是一些安全问题,比如您不想公开中央数据库,那么像Oracle connection manager这样的代理可能会有所帮助。然后,您可以让客户端与代理进行对话,该代理与中央数据库进行对话。一旦配置完成,所有操作都像正常连接一样。客户端还没有准备好在这些数据库上执行任何DDL操作。我们的要求是:我们希望数据同步。所以,若客户端删除任何记录,那个么同样的记录也应该从我们的数据库(中央数据库)中删除。我们只能遵循的方法是使用java代码。考虑REST API,并让您的应用程序或数据库通过HTTPS来与其他数据库交互,谢谢您给我建议REST API。它不会暴露任何东西。我怎么会那么傻。无论如何,谢谢你,所以你正试图与数据库通信。。。但你不被允许连接到它?您能解释一下为什么不允许创建数据库链接或数据库连接信息吗?如果这是一些安全问题,比如您不想公开中央数据库,那么像Oracle connection manager这样的代理可能会有所帮助。然后,您可以让客户端与代理进行对话,该代理与中央数据库进行对话。一旦配置完成,所有操作都像正常连接一样。客户端还没有准备好在这些数据库上执行任何DDL操作。我们的要求是:我们希望数据同步。所以,若客户端删除任何记录,那个么同样的记录也应该从我们的数据库(中央数据库)中删除。我们只能遵循的方法是使用java代码。考虑REST API,并让您的应用程序或数据库通过HTTPS来与其他数据库交互,谢谢您给我建议REST API。它不会暴露任何东西。我怎么会那么傻。无论如何,源数据库和目标数据库之间应该有逻辑连接。维护数据库队列。我们无法在源数据库上执行任何操作。我们只需要处理来自java代码的通信。有没有办法触发oracle或类似的web服务。如果你不能在源数据库上做任何事情,那是不可能的。您必须在某个时刻对数据库进行操作以启用跟踪。DBA可以完成一次,这样跟踪就可以全部记录在共享的一个文件中。然后,您可以使用java从客户端访问它,并应用您在那里读到的修改。不管怎么说,这是一个非常奇怪的要求。希望来自java代码。我们无法以DBA身份访问数据库。我们拥有只读权限。不是你,而是你的DBA可以做一些事情。如果你不能和你的DBA交谈,在我看来你是在试图破解数据库。。。一个解决方案是在(未加密的)网络上侦听SQLNet*事务,解析它们并在您的客户端上运行它们。所以从逻辑上讲,记录所有机器的所有更改并在最后更新是不可行的。此应用程序构建于2003年,拥有如此多的客户端数据库。通过java代码实现的任何可行方法。源数据库和目标数据库之间应该有逻辑连接。维护数据库队列。我们无法在源数据库上执行任何操作。我们只需要处理来自java代码的通信。有没有办法触发oracle或类似的web服务。如果你不能在源数据库上做任何事情,那是不可能的。您必须在某个时刻对数据库进行操作以启用跟踪。DBA可以完成一次,这样跟踪就可以全部记录在共享的一个文件中。然后,您可以使用java从客户端访问它,并应用您在那里读到的修改。不管怎么说,这是一个非常奇怪的要求。希望来自java代码。我们无法以DBA身份访问数据库。我们拥有只读权限。不是你,而是你的DBA可以做一些事情。如果你不能和你的DBA交谈,在我看来你是在试图破解数据库。。。一个解决方案是b