我正在启动一个项目,其中一个要求是数据库之间的集成。
我已经完成了与API,WSDL的集成,但从未在数据库之间进行集成(所有oracle)。
功能设计必须做的是:根据我在我的应用程序中的规则,在另一个数据库中执行一个过程,用我的应用程序数据填充参数。 sp将在表中(在另一个数据库中)记录信息并在那里创建一个票据。
所以我的问题是:是否可以通过我的oracle实例在另一个oracle实例中运行一个过程?
答案 0 :(得分:0)
不确定。您只需要在数据库之间create a database link。
CREATE DATABASE LINK dblink_name
<<parameters>>
然后您可以在远程数据库中执行该过程
BEGIN
schema_in_remote_db.procedure_in_remote_db@dblink_name( <<parameters>> );
END;
然而,作为一般的架构问题,我通常不会有应用程序进行远程过程调用。通常,即使远程数据库关闭或者它们之间的网络连接断开,您也希望您正在构建的应用程序可用。否则,您的可用性会大大降低。您还强制Oracle使用两阶段提交和分布式事务,这可能是一个相当大的开销。
通常,您设计系统以便您写入本地表或队列,并且异步运行单独的作业以调用远程过程(或者目标数据库中的单独作业会轮询您的表格。 ;写入并在本地调用该过程。