Oracle

將兩個遠端 oracle 數據庫作為模式相互連接

  • May 22, 2021

這個問題是關於 Oracle 數據庫的。

我有兩個遠端數據庫 DB_1 和 DB_2,每個數據庫上有兩個架構:數據庫 DB_1 上的架構 DB_1 和架構 DB_2,數據庫 DB_2 上的架構 DB_1 和架構 DB_2。我想從數據庫 DB_1 Schema DB_1 到達數據庫 DB_2 Schema DB_2。例如:當我從模式 DB_1 在 DB_1 中嘗試此查詢時:

SELECT * FROM DB_2.example_table

我收到一個錯誤,因為 DB_1 數據庫的 DB_2 Schema 中沒有表“example_table”。但是,當我在 DB_2 Schema DB_2 上嘗試相同的查詢時,我得到了正確的結果(一些數據)。

所以,我需要以某種方式調整我的數據庫,以便我可以SELECT * FROM DB_2.example_TABLE從 DB_1 數據庫。

但是,還有一個問題,我沒有權限CREATE LINK。但是,當我查詢SELECT * FROM ALL_LINKS;我的生產數據庫 DB_1 模式 DB_1 時 - 根本沒有連結。所以,我需要弄清楚我的生產數據庫是通過哪種方式連結的(不幸的是我的同事也不知道)。在我的生產數據庫 DB_1 模式 DB_1 上,我可以使用以下查詢獲取數據:

SELECT * FROM DB_2.example_table

如果我嘗試在 DB_2 生產數據庫 DB_2 模式上查詢相同的數據,我得到的數據是相同的。

但是在 DB1/DB2 生產數據庫上根本沒有公共\私有連結。還有另一種方法可以在我的數據庫之間創建“連接”嗎?(我SELECT * FROM ALL_LINKS從 DB_1 模式 DB_1 查詢,這是否可能,所以如果我嘗試對 DB_1 模式 DB_2 進行查詢,我可以獲取一些其他數據嗎?)

感謝期待!

幾個問題,沒有特別的順序。

您的 SELECT 語法錯誤。要從另一個數據庫中選擇一個表,語法是

select some_columns from remote_table@remote_db;

注意“@remote_db”。這裡的“remote_db”指的是本地數據庫的 tnsnames.ora 文件中的一個條目,該文件又會解析為有問題的遠端數據庫。 更正:這裡的“remote_db”是數據庫連結的名稱。

其次,您說您無權創建數據庫連結。好吧,有人將不得不創造一個。這一個數據庫查詢另一個數據庫的機制。時期。句點。

第三,您說查詢 ALL_LINKS 時沒有找到任何數據庫連結。視圖的名稱是 ALL_DB_LINKS。這顯示目前使用者有權訪問的連結。如果您想查看數據庫中的所有連結,請以有權查詢該視圖的使用者身份查詢 DBA_DB_LINKS。另外,我在您的問題描述中看不到任何內容,這會讓我懷疑確實存在任何數據庫連結。

引用自:https://dba.stackexchange.com/questions/292064