Oracle建立dblink(實現跨資料庫查詢)

2021-09-26 21:56:34 字數 1580 閱讀 6189

前言

在分布式架構中,往往會經常遇到跨資料庫查詢的場景,即兩個有關聯的表不在乙個資料庫中。

一般的解決方案有:

分別查詢兩張表的資料,業務層進行資料合併處理

弊端:麻煩,複雜查詢條件無法實現分頁查詢

優點:實時保證資料一致性

定時job,定時查詢兩張表資料或呼叫介面獲取兩張表資料,合併儲存到一張表中或者mongodb等資料庫中,然後從這張表或mongodb中進行查詢

弊端:無法保證資料強一致性,適用於最終一致性的場景,定時job出錯無法保證資料同步成功

優點:能實現複雜條件的分頁查詢

第三種就是我們要講的建立dblink實現跨庫查詢,建立本地資料庫對遠端資料庫的dblink後,就可以像操作本地資料庫一樣操作遠端資料庫,這是oracle給我們提供乙個功能,讓我們的跨庫查詢變得非常簡單便捷。

優點:就像操作本地資料庫一樣,支援分頁,保證查結果資料強一致性

缺點:微服務中,每個服務返回的資料都是經過處理的,跨資料庫查詢出來需要對資料重新處理

使用dblink

1.檢視使用者是否有建立dblink的許可權(一般管理員使用者sys都有許可權)

select * from user_sys_privs t where t.privilege like upper('%link%');
2. 如果建立全域性 dblink,必須使用 systm 或 sys 使用者,在 database 前加 public。
create public database link 資料庫鏈名稱 connect to 登入使用者名稱 identified by 密碼 using '(description =

(address_list =

(address = (protocol = tcp)(host = 對方oracle伺服器的ip位址)(port = 埠號))

)(connect_data =

(service_name = 對方oracle伺服器服務名)

))'

注:資料庫鏈名稱指新增到本地oracle資料庫控制台(oracle enterprise manager console)樹節點的服務名

要查詢對方資料庫的表tablename語句如下:

select 欄位名 from tablename@資料鏈名稱;
刪除dblink

drop database link [name];  

或 drop public database link [name];

3. 建立dblink的兩種方式

參考:建立oracle dblink 的兩種方式

5. 使用dblink進行查詢

select * from 遠端資料庫表名@dblink名;

如:select * from user@dblink;

oracle dblink詳解

------------------------- 紙上得來終覺淺,絕知此事要躬行 ----------------------------

ORACLE如何建立DBLINK

當前使用者下執行 create database link testdblink connect to dbname identified by dbpassword using description address list address protocol tcp host 192.168.2...

oracle建立dblink方法

當使用者要跨本地資料庫,訪問另外乙個資料庫表中的資料時,本地資料庫中必須建立了遠端資料庫的dblink,通過dblink本地資料庫可以像訪問本地資料庫一樣訪問遠端資料庫表中的資料。下面講介紹如何在本地資料庫中建立dblink.建立dblink一般有兩種方式,不過在建立dblink之前使用者必須有建立...

建立Oracle的DB Link實戰

當有在一台資料庫伺服器上集合或者分類篩選位於其他資料庫伺服器上的資料時,如果從應用層面上來解決問題,可能需要占用大量記憶體並且很費事。oracle資料庫本身提供了db link的機制來達到這個目的,以下以具體步驟來實現這個操作。1.首先在管理資料庫上建立到乙個資料庫的db link.drop exi...