PolarDB PostgreSQL版(相容Oracle)提供了DBLink功能,您可以通過DBLink功能實現跨庫查詢資料。本文介紹如何通過DBLink跨庫查詢資料。
前提條件
- 已建立源叢集和目的地組群。具體操作,請參見建立PolarDB PostgreSQL版(相容Oracle)叢集。說明 PolarDB PostgreSQL版(相容Oracle)的DBLink目前支援如下兩種串連方式:
- 來源資料庫為PolarDB PostgreSQL版(相容Oracle)叢集;目標資料庫為PolarDB PostgreSQL版(相容Oracle)叢集。
- 來源資料庫為PolarDB PostgreSQL版(相容Oracle)叢集;目標資料庫為ECS自建PostgreSQL資料庫。
- 已在源叢集和目的地組群中建立資料庫。具體操作,請參見建立資料庫。
- 已在目標資料庫中建立表。
注意事項
目前僅支援在源叢集上查詢目的地組群資料,不支援在目的地組群上查詢源叢集資料。
參數配置
PolarDB PostgreSQL版(相容Oracle)提供了polar_enable_pushable_unsafe_collate_remote和polar_enable_pushable_all_any_remote參數,用於提升查詢效能。
- polar_enable_pushable_unsafe_collate_remote(會話層級參數):支援unsafe collate下推,預設開啟。
如果關閉該參數,部分函數因為考慮collate規則,不會主動下推。
- 開啟命令:
SET polar_enable_pushable_unsafe_collate_remote = on;
- 關閉命令:
SET polar_enable_pushable_unsafe_collate_remote = off;
- 開啟命令:
- polar_enable_pushable_all_any_remote(會話層級參數):支援ALL/ANY下推,預設開啟。
如果關閉該參數,部分ALL/ANY運算式則不會下推。
- 開啟命令:
SET polar_enable_pushable_all_any_remote = on;
- 關閉命令:
SET polar_enable_pushable_all_any_remote = off;
- 開啟命令:
操作步驟
- 建立DBLink。PolarDB PostgreSQL版(相容Oracle)提供了如下兩種建立方式:
- 串連源叢集。具體操作,請參見串連資料庫叢集。
- 在源叢集上跨庫查詢資料。
查詢語句如下:
SELECT * FROM <dbname>@<dblinkname>;
<dbname>
:目的地組群的資料庫裡的表。說明 該表必須在DBLink所串連的目標資料庫中。<dblinkname>
:DBLink名稱。
您可以在控制台查看DBLink名稱和DBLink的目標資料庫,如下圖所示。
樣本
在目標資料庫中建立一個用於測試的表test
,並在表中插入測試資料。命令如下:
CREATE TABLE test(id int);
INSERT INTO test VALUES(1);
串連來源資料庫,執行如下查詢命令:
SELECT * FROM test@dblinkname;
查詢結果如下:
id
----
1
(1 row)