PolarDB for PostgreSQL (Compatible with Oracle) は、データベース間でデータを照会するためのデータベースリンク (DBLink) 機能を提供します。 このトピックでは、データベースリンクを使用してデータベース間のデータを照会する方法について説明します。
前提条件
- ソースクラスターとデスティネーションクラスターが作成されます。 詳細については、「PolarDB For Oracleクラスターの作成」をご参照ください。 説明 PolarDB for PostgreSQL (Oracle互換) のDBLink機能は、次の接続方法をサポートしています。
- ソースデータベースはPolarDB for PostgreSQL (Compatible with Oracle) クラスターにあり、ターゲットデータベースはPolarDB for PostgreSQL (Compatible with Oracle) クラスターにあります。
- ソースデータベースはPolarDB for PostgreSQL (Compatible with Oracle) クラスターにあります。 ターゲットデータベースは、ECSインスタンスでホストされている自己管理型PostgreSQLデータベースです。
- データベースは、ソースおよび宛先クラスターに作成されます。 詳細については、「データベースの作成」をご参照ください。
- テーブルはターゲットデータベースに作成されます。
注意
移行先クラスターのデータは、移行元クラスターからのみ照会できます。 移行元クラスターのデータを移行先クラスターからクエリすることはできません。
パラメーターの設定
PolarDB for PostgreSQL (Compatible with Oracle) は、クエリのパフォーマンスを向上させるために、polar_enable_pushable_unsafe_collate_remoteおよびpolar_enable_pushable_all_any_remoteパラメーターを提供します。
- polar_enable_pushable_unsafe_collate_remote: 照合順序要件を満たさない関数をプッシュダウンするかどうかを指定します。 このパラメーターはセッションレベルのパラメーターです。 このパラメーターのデフォルト値はonです。
このパラメーターをoffに設定した場合、照合順序要件を満たさない関数はプッシュダウンされません。
- このパラメーターをonに設定するには、次のコマンドを実行します。
set polar_enable_pushable_unsafe_collate_remote = on;
- このパラメーターをoffに設定するには、次のコマンドを実行します。
set polar_enable_pushable_unsafe_collate_remote = off;
- このパラメーターをonに設定するには、次のコマンドを実行します。
- polar_enable_pushable_all_any_remote: ANY() およびALL() 式をプッシュダウンするかどうかを指定します。 このパラメーターはセッションレベルのパラメーターです。 このパラメーターのデフォルト値はonです。
このパラメーターをoffに設定した場合、要件を満たさないALL/ANY式はプッシュダウンされません。
- このパラメーターをonに設定するには、次のコマンドを実行します。
set polar_enable_pushable_all_any_remote = on;
- このパラメーターをoffに設定するには、次のコマンドを実行します。
set polar_enable_pushable_all_any_remote = off;
- このパラメーターをonに設定するには、次のコマンドを実行します。
手順
- データベースリンクを作成します。 PolarDB for PostgreSQL (Oracleと互換) は、データベースリンクを作成するための次の方法を提供します。
- ソースクラスターに接続します。 詳細については、「クラスターへの接続」をご参照ください。
- ソースクラスターからデータベース間でデータを照会します。
次のクエリ文を実行します。
SELECT * から <dbname >@< dblinkname>;
<dbname>
: ターゲットクラスターのデータベース内のテーブル。説明 テーブルは、データベースリンクが接続されているターゲットデータベースに格納する必要があります。<dblinkname>
: データベースリンクの名前。
次の図に示すように、データベースリンクの名前と、データベースリンクが接続されているターゲットデータベースをコンソールで確認できます。
例
テスト対象のデータベースにtest
という名前のテーブルを作成し、テーブルにテストデータを挿入するには、次のステートメントを実行します。
CREATE TABLEテスト (id int);
テスト値に挿入 (1);
ソースデータベースに接続し、次のクエリ文を実行します。
SELECT * テストから @ dblinkname;
次のクエリ結果が返されます。
id
----
1
(1行)