我有包含2个架构“架构-1”,“架构-2”的“PROD-1”数据库 我创建了专用dblink“DBLINK-1 “在两个模式&他们指向不同的目标。 这里是我的配置在相同数据库的不同架构中使用的相同DBLink名称 - 使Procs失效
DB名称 - >源架构 - >目标DB - >目标模式 - > DBLINK名称
PROD-1 - >架构 - 1 - > TPRD-1 - > TSchema-1 - > DBLINK-1
PROD -1 - >模式-2 - > TPRD -2 - > TSchema -2 - > DBLINK-1
我用这DBLINK在过程和部署在两种模式-1 & Schema-2 当我在Schema-1中编译过程时,它是invali约会Schema-2 proc &反之亦然。 这里是样品PROC
CREATE OR REPLACE procedure test_dblink
is
v_cnt number;
begin
select count(*) into v_cnt from [email protected];
end;
按我的理解,DBLINK-1是为私人DBLINK架构-1 &模式-2;因此它不应该相互冲突。然而,当我在两个模式中同时执行这些程序时,一个程序成功执行&另一个人正在等待第一个完成然后完成。
这是可能会发生
- 架构-1 PROC开始第一和PROC状态是有效的。 Schema-2 proc正在等待
- Schema-1 proc现已完成。 Schema-2 proc出现等待模式&使Schema-1中的DBLink-1失效。因此Schema-1 proc现在处于无效状态
- Schema-2 proc运行并完成。模式2 PROC现在是有效的
我的问题是,我该如何管理两个不同的架构相同的DB同DBLINK没有这个矛盾呢?
欣赏你帮
这是不好的做法,以不同的模式命名对象相同,但是......你是对的 - dblinks是私人对象。你是从用户自己创建程序吗? (我的意思是,你在运行'create procedure'时登录为schema-1?) – haki 2013-04-11 07:22:33
Hello Haki,谢谢你的回应。最后,我通过使用Oracle创建P1票证来发现问题。错误7395995 – Lava 2013-04-17 19:22:48