2017-04-06 50 views
0

假設我有一個名爲db1的主數據庫。還有另一個名爲db2的數據庫。有時我需要從db2獲取數據。直接從db2獲取數據還是使用db1進行查看會更好嗎?從另一個數據庫讀取數據

+0

很多因素需要在這裏考慮。數據庫之間有快速連接嗎?它有很多數據嗎?兩個數據庫都可能移動嗎? 「使用db1查看」是什麼意思,這仍然需要訪問db2? – JohnHC

+0

感謝您的回答! 我對數據庫並不是很瞭解,但有2種方法可以實現這個功能。首先是我在db1中查詢時引用了db2。 SELECT * FROM db2.table1 還是我第一次創建視圖(CREATE VIEW v_db1 SELECT * FROM db2.table1) ,然後當我需要在DB2中那個表我只是SELECT * FROM v_db1 我想知道何時使用第一路或第二路。那兩者有什麼區別? 我希望我說得更清楚我在想什麼 – Kristjan

回答

1

如果您從db2獲取數據,則應該在db2中爲每個查詢創建視圖。爲什麼?創建接口。如果有人會在db2中進行更改,他不知道從db1執行的查詢。您的查詢可能會停止工作。如果您在db2中爲查詢創建視圖,並從db1查詢視圖@ db2創建視圖,那麼任何在db2中更改結構的人都會在他的更改損壞您的查詢時看到無效視圖。
當然,我的意思是當你的查詢嵌入到包或視圖中時。如果您只是爲了分析目的而進行查詢,那麼直接進行查詢並不會有什麼區別,只要查看db1或db2上的視圖就可以了,因爲它適合您。但好的做法是設置接口,所以我建議在db2上創建數據集的視圖,這些數據集稍後將從db1中查詢。在db1一側創建附加視圖或同義詞以具有兩個側面接口也是有意義的。

+0

太好了。感謝您回答我的問題。 – Kristjan

1

您首先需要設置一個connectng到DB2的驅動程序,一個用於連接Oracle的TNS連接條目和一個Oracle中的數據庫鏈接指向連接。

重要的是,您儘可能嘗試隔離一個數據庫與另一個數據庫的更改。

我已經完成了不同的方式,但是這對我有效;

  1. 對於在DB2中查詢的每個表,只需從該表創建一個DB2列表視圖即可。
  2. 在Oracle中創建一個查詢DB2_VIEW @ DB2_database的視圖。雖然不是絕對必要的,但只需查詢您想要的列 - 它的良好做法。
  3. 通過它創建視圖和查詢的同義詞。如果數據來源發生變化並且視圖被另一個視圖替換,則可以將同義詞切換爲指向新視圖而不是更改代碼。

摘要: 除非我誤解你似乎會問我應該直接查詢表在DB2或者我應該通過什麼看法?我建議通過視圖將你從兩端的變化中隔離開來,以便在某種程度上使用視圖。

+0

太好了,謝謝!回答了我所有的問題。 – Kristjan

相關問題