oracle_fdwを介してOracleデータにアクセスするためのPostgreSQLの手順
背景
同じプロジェクトの2つのシステムは、PGライブラリとOracleライブラリを使用し、Oracleは、生産ライブラリ、データを動的に更新され、今PGライブラリでは、統計のリアルタイムでの更新データを取得する必要があるような方法に基づいて、ETLツールを介して実現することができますが、定期的にメンテナンスなどの必要性と考え、それはOracleデータベースと同様にすることができますかDBLINKインターネットで情報を探してから、私はこれを達成するために、Oracle_FDW使用できることを発見した。
テスト環境です。
以下の基本構成で、ローカルにテスト環境を構築します。
Oracleデータベーステストサーバ(IP:192.168.1.110)。WIN10オペレーティングシステム、Oracleデータベースバージョン11.2.0.4、インスタンス名orcl、32ビットクライアントがインストールされています。
PGライブラリテストサーバ(仮想マシン、IP:192.168.30.128、NATモード)。WIN10オペレーティングシステム、PGデータベースバージョン11.11.1。
実装の手順
1. 最初のネットワークは、通常、PGのライブラリサーバでOracleのライブラリサーバにアクセスできることを確認します。
2. PG ライブラリをインストールします(手順省略)。ここで注意ですが、インストールしたPGライブラリはリモートアクセスが有効になっていないので、リモートアクセスが必要な場合は、まずpg_hba.confファイルを修正して、以下の内容を追加する必要があります。
ホストすべてすべて0.0.0.0/0 md5
3. 3. oracle_fdwをダウンロードします。ダウンロードの際、PGライブラリのバージョンと合わせる必要があることに注意してください。
ダウンロードはこちら リリース - laurenz/oracle_fdw - GitHub
PG11に合わせ、Windows 64ロケーションのOSを選択するため、こちらからダウンロードしています。
注意:fdwのバージョンは、PGライブラリのバージョンとOSのバージョンに対応していないと、後で問題が発生します。
3. oracle_fdw を解凍し、[lib] フォルダと [share/extension] フォルダ内のファイルを、PG ライブラリのインストール パス下の対応する [lib] フォルダと [share/extension] フォルダにコピーしてくださ い。
コピー後、sql文はoracle_fdwに問い合わせることができ、ファイルが正常にコピーされ配置されたが、まだインストールされていない(isstalled_versionが空)ことを示すことができます。
select * from pg_available_extensions;
4. Oracleクライアントのインストール (手順省略)
Oracleクライアントのサポートも必要なので、慌てて最初にoracle_fdwをインストールする必要はありません(うまくいきません)。Oracleクライアントをインストールしない場合、以下のようなエラーメッセージが表示されます。
Oracleクライアントは、接続されたOracleサーバーと同じバージョンを使用することをお勧めします(テストは、小さなバージョンの違いは影響しませんが、大きなバージョンがテストされていません)、オンライン情報を見てに加えて、代わりに軽量Oracleインスタントクライアントに従うことができます、ここで私は試していない、興味がそれを試すことができます。
インストールが完了したら、まず接続テストを行い、正常に動作していることを確認してください。
注:クライアントのバージョンはPGライブラリと同じでなければなりません。例えば、私は64ビットのPGライブラリをインストールしたので、64ビットのOracleクライアントをインストールしなければなりません。以前は32ビットのクライアントをインストールしていましたが、外部テーブルを作成した後に開くことができず、以下のエラーが発生しました。
それでも問題がある場合は、Path変数を一番上に移動することで、インストールパスが書き込まれているかどうかを確認することができます。
5. oracle_fdwのインストールを作成します。
-- create oracle_fdw
create extension oracle_fdw;
以下の前文により、インストールが正常に行われることが確認されました。
select * from pg_available_extensions;
installed_versionにはすでにインストールされたバージョンが表示されており、インストールが正常に行われたことが確認できます。
注:インストールに何度も失敗する場合は、PGサービスまたはサーバーを再起動して再試行することをお勧めします。
6. オラクルライブラリでのテストデータ作成
データベースの接続情報は以下の通りです。192.168.1.110/orcl ユーザー名/パスワード: GIS/GIS
-- Create test table
create table ORACLEDATA_TEST
(
ID NUMBER(10) not null,
XZQMC NVARCHAR2(50),
XZQDM NVARCHAR2(30)
)
-- insert test data
insert into oracledata_test values(1,'City South','370202');
insert into oracledata_test values(2,'City North','370203');
テストデータを追加した後のコミット操作に注目してください。
7. Oracle 接続を作成するための PG ライブラリ
-- Create an Oracle external connection, where oradb_110 is the connection name
create server oradb_110 foreign data wrapper oracle_fdw options(dbserver '192.168.1.110/orcl');
作成すると、接続によりOracleデータベースのデータを取得できるようになります。
8. ユーザー認証のためのPGライブラリ
--authorization
grant usage on foreign server oradb_110 to postgres;
認証は必要に応じて行われます。
9. Oracleへのマッピングを作成する
--create mapping to oracle
create user mapping for postgres server oradb_110 options(user 'GIS',password 'GIS');
oradb_110 は、以前に作成したデータベース接続の名前、GIS は Oracle に接続するためのユーザー名とパスワードです。
10. 10.Oracleにアクセスする必要がある対応するテーブルを作成します。
ここで作成する際には、フィールドタイプの変換に注意する必要があります、OracleとPGライブラリは、フィールドタイプがまだ異なっていることに注意してください。oradb_110は上で作成したデータベース接続の名前、GISはその接続です。
-- Create the structure of the corresponding table in oracle that needs to be accessed
create foreign table ORACLEDATA_TEST_PG
(
ID numeric(10) not null,
XZQMC VARCHAR(50),
XZQDM VARCHAR(30)
) server oradb_110 options(schema 'GIS',table 'ORACLEDATA_TEST');
注:ここで作成されたテーブルは、ビューのようにoracleが指定したテーブルのフィールドを取得するのではなく、シーケンシャルマッピングによって取得します。これは、後で説明するためにテストします。
11. これで、Oracleから来るデータを外部テーブルを通して見ることができるようになりました。
作成したコンテンツを削除する必要がある場合は、以下のような記述が可能です。
DROP FOREIGN TABLE table_name;
DROP USER MAPPING FOR user_name SERVER server_name;
DROP SERVER server_name;
11. データ同期テスト。
オラクルデータベースにリアルタイムでレコードを挿入する
-- insert test data
insert into oracledata_test values(3,'LPC','370203');
データを挿入し、コミットを記録し、確認のためにクエリを実行します。
PGライブラリのクエリで確認しました。
ご覧のように、データをリアルタイムに同期させることができます。
12. テーブルマッピングのテスト。
例えば、今テストテーブルに3つのフィールドがあり、PGライブラリでは1番目と3番目のフィールドしか使わない場合、外部テーブルは次のようにビルドされます。
-- Create the structure of the corresponding table in the oracle that needs to be accessed
create foreign table ORACLEDATA_TEST_PG_2
(
ID numeric(10) not null,
XZQDM VARCHAR(30)
) server oradb_110 options(schema 'GIS',table 'ORACLEDATA_TEST');
次に、データを問い合わせる。
結果からわかるように、今回選んだxzqdmの値ではなく、フィールド名ではなく順序に従ってマッピングされたxzqmcの値を取得することができます。
13. パフォーマンス
初期テストでは、大容量のデータに対してまだ比較的低いパフォーマンスであり、この部分は厳密なテストをしていませんので、後で機会があれば追加します。
参考にしてください。
PostgreSQLのインストールに成功したoracle_fdwメソッドの詳細 指定されたプロシージャが見つかりませんでした error_ljinxinのブログ - CSDN Blog
PostgreSQLのOracle_fdwのインストールと使用 - Kevin_zheng - Blogspot (cnblogs.com)
この記事は、PostgreSQLがoracle_fdwを介してOracleデータにアクセスすることに関するものです。PostgreSQLがOracleデータにアクセスすることについては、Script Houseの過去記事を検索していただくか、引き続き以下の関連記事をご覧ください。
関連
-
postgresのjsonbプロパティの利用について
-
Centos環境でのPostgresqlのインストールと設定、環境変数の設定Tips
-
postgresql いくつかのメソッドは、要約の重複するデータを削除する
-
Postgresqlの操作でSQL文の実行効率を表示する
-
PostgreSQLがバキュームテーブルの情報を収集する必要があることを発見する方法
-
postgreSQLのクエリ結果に自己インクリメントシーケンス演算が追加されました。
-
Postgresqlのセルフインクリメントidをキーにした場合の重複問題の解決
-
Postgresqlのシーケンススキップの問題を解決する
-
Postgresqlのデータベースにおける配列の作成と変更に関する操作
-
PostgreSQLのデータベースでLIKE文の効率を確保する方法(推奨)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PostgreSQLのJSONBのマッチングと交差の問題について
-
postgresql 重複データ削除 ケーススタディ
-
Postgresqlの高度なアプリケーションは、セルのアイデアをマージするの詳細
-
Postgresqlのユーザーログインエラーの回数を制限するサンプルコード
-
PostgreSQLのユーザーログイン失敗時の自動ロック解決策
-
エクセルテーブルのデータをpostgresqlのデータベースにインポートする方法
-
PostgreSQLで文字列が対象の文字列を含むかどうかを判断する様々な方法
-
GROUP BY句での定数使用に関するPostgreSQLの特別な制限について説明します。
-
pgAdmin for postgreSQLでサーバーのデータをバックアップする方法
-
PostgreSQLの自己インクリメント構文使用上の注意点