我有"PROD-1“db,其中包含2个模式"Schema-1”、“Schem-2”,我在这两个模式中创建了专用dblink "DBLINK-1“&它们指向不同的目标。这是我的配置
数据库名称->源模式->目标DB ->目标模式->链接名
PROD-1 ->模式-1 -> TPRD-1 -> TSchema-1 -> DBLINK-1
PROD-1 ->模式-2 -> TPRD-2 -> TSchema-2 -> DBLINK-1
我在过程中使用这个dblink,并在Schema-1和Schema-2中都部署了proc,当我在Schema-1中编译proc时,它就是使Schema-2 proc无效&反之亦然。这是示例proc
CREATE OR REPLACE procedure test_dblinkis v_cnt number;
begin
select count(*) into v_cnt from DUAL@DBLINK-1;end;
根据我的理解,DBLINK-1是Schema-1 &Schema-2的私有dblink,因此它不应该相互冲突。但是,当我在两个模式中同时执行这些过程时,有一个过程成功地执行了,另一个过程正在等待第一个过程完成然后完成。
这就是可能发生的事
我的问题是,在没有这种冲突的情况下,如何在同一DB的两个不同模式中管理相同的DBLink?
感谢你的帮助
发布于 2016-03-09 08:48:52
我们用同义词解决了这个问题。为数据库链接使用唯一的名称。然后在每个模式中为您使用的每个远程对象创建同义词。这样,您仍然可以在两种模式中使用相同的PL/SQL代码。
https://stackoverflow.com/questions/15935138
复制相似问题