2012-09-27 25 views
10

我們有一個Oracle DBMS(11克)和以下配置:如何使用位於不同架構中的DBLINK在Oracle中進行選擇?

  • 一個DB用戶 「MYUSER」
  • 雙模式 「MYUSER」 和 「SCHEMA_B」
  • 用戶 「MYUSER」 可以訪問「SCHEMA_B 「並閱讀其表的權限
  • 公共DB鏈接‘DB_LINK’位於‘SCHEMA_B’
  • 的DB_LINK使用數據庫用戶時工作‘SCHEMA_B’直接

問題:以「MYUSER」身份登錄時,使用「SCHEMA_B」的數據庫鏈接訪問表的正確語法是什麼?有沒有可能這樣做?

我已經嘗試過幾個星座,這都沒有工作:

select * from [email protected]"DB_LINK" 
select * from [email protected]"SCHEMA_B"."DB_LINK" 
select * from [email protected]_B."DB_LINK" 
select * from [email protected]_B.DB_LINK 
select * from [email protected]_LINK 
select * from "SCHEMA_B"[email protected]_LINK 

我收到的錯誤消息是: ORA-02019。 00000 - 「遠程數據庫未找到連接說明」

感謝您的任何建議!

回答

11

我不認爲有可能在多個用戶之間共享數據庫鏈接,但不是全部。它們要麼是私人的(僅針對一個用戶),要麼是公共的(針對所有用戶)。

解決此問題的一個好方法是在SCHEMA_B中創建一個視圖,該視圖公開要通過數據庫鏈接訪問的表。這也可以很好地控制誰可以從數據庫鏈接中進行選擇,因爲您可以控制對視圖的訪問。

這樣做:

create database link db_link... as before; 
create view mytable_view as select * from [email protected]_link; 
grant select on mytable_view to myuser; 
+0

向所有用戶使用的「公共」指令共享一個數據庫鏈接。 CREATE PUBLIC DATABASE LINK ... – Rusty1

相關問題