我在不同的服务器上有2个Oracle数据库:
Oracle 1 Oracle 2
我想运行一个将在Oracle 1中执行的存储过程并执行以下操作:
a)与Oracle 2连接 b)在Oracle 2中创建数据库链接以与Oracle 1连接或使用现有的链接(如果已创建) c)将表1从Oracle 1复制到Oracle 2
我可以使用:
CREATE PUBLIC DATABASE LINK mylink
CONNECT TO source_user IDENTIFIED BY source_password
USING source_entry_in_tnsnames';
复制数据:
INSERT INTO mytable SELECT * FROM mytable@mylink;
我写了一个存储过程并包含了这些但是无法与Oracle 2连接。我们如何从存储过程连接到另一个Oracle数据库?
答案 0 :(得分:1)
这可能是一项供股问题。目标Oracle DB上的数据库链接,其中包含您要调用的过程。它必须具有该包/ proc的执行权限。
另外,我发现我必须使用模式名称调用那些目标proc。例如schema.package.procedure@dblink(parms)。如果我在proc调用上没有架构,那么包将无法编译。
Side Note ...如果您通过返回refCursor的链接调用过程,则无效。 (至少在Oracle 10和11上)。在那些情况下,我不得不退回一张桌子。