我有包含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