概要
Oracle とPostgreSQLの連携方法で手間取ったので、忘備録として残しときますー。
対象読者
windowsに立てたpostgreSQLからOracle Databaseにアクセスしたい方
配置図
環境
名称 | バージョン | 説明 |
---|---|---|
Windows | 10 | クライアントのOS |
Oracle instant client | 21.9 | Oracle Databaseにアクセスするためのツール |
A5:SQL | 2.20.1 | SQLのGUIクライアント 確認するために使う。 |
docker | -- | コンテナ型仮想環境 OracleDatabaseを構築するために使用 |
Oracle Database | 23ai Free Release 23.0.0.0.0 | 連携先のデータべース |
PostgreSQL | 14.5 | -- |
Oracle_fdw | 2.50 | PostgreSQLのプラグイン Oracle Databaseとアクセスするためのプラグイン |
前提条件
・Windows版 PostgreSQL 導入済み
・Oracle instant 導入済み
https://qiita.com/RYA234/items/3b5f9f584b9cca7ef686
・Oracle Database 構築済み
https://qiita.com/RYA234/items/19abe4a44e9820c9efd3
手順
oracle側の設定
無し。PostgresSQL側の設定だけです。
一応明記しておきます。
postgreSQL側の設定
フォルダ・ファイルの上書き
oracle_fdwのダウンロード
下のリンクから「oracle_fdw-2.5.0-pg14-win64.zip」をダウンロードして解凍する。
https://github.com/laurenz/oracle_fdw/releases/tag/ORACLE_FDW_2_5_0
PostgreSQLのデータベースクラスタに oracle_fdwを上書き保存する
方法としては、ダウンロードしたフォルダをPostgreSQLのデータベースクラスに上書き保存します。
コピー元のファイル:
4点のフォルダ
・debug_symbols
・doc
・lib
・share
コピー先の親フォルダ
C:\Program Files\PostgreSQL\14
SQL部分
1.PostgresSQL側で oracle_fdwを有効化する
-- 1.oracle_fdwをロード
CREATE EXTENSION oracle_fdw;
-- 1.pg_extensionにoracle_fdwが追加されていることを確認
select * from pg_catalog.pg_extension;
2.Oracle DatabaseのIP PORT サービス名を登録
-- 2.Oracle DatabaseのIP PORT サービス名を登録
-- 今回の場合はIP=127.0.0.1 PORT=11521 サービス名=FREE
CREATE SERVER oracle_server FOREIGN DATA WRAPPER oracle_fdw OPTIONS (dbserver '//127.0.0.1:11521/FREE');
-- 2.権限追加 確認の仕方わからない..........
GRANT USAGE ON FOREIGN SERVER oracle_server TO postgres;
-- 2.pg_foreign_serverにoracle_serverが作成されていることを確認
select * from pg_catalog.pg_foreign_server;
3.ユーザーマッピング Oracle側のユーザとパスワードを登録
-- 3.ユーザーマッピング Oracle側のユーザとパスワードを登録
CREATE USER MAPPING FOR postgres SERVER oracle_server OPTIONS ( USER 'system', PASSWORD 'pass');
-- 3.pg_user_mappingで確認
select * from pg_catalog.pg_user_mapping;
4.外部テーブルを作成する
-- 4.外部テーブルを作成
CREATE FOREIGN TABLE help(TOPIC varchar(50) , SEQ integer OPTIONS (key 'true'), INFO varchar(80)) SERVER oracle_server OPTIONS (SCHEMA 'SYSTEM', TABLE 'HELP');
-- 4.作成した外部テーブルを確認
SELECT * FROM help;
感想
・次はDocker上のpostgreSQLで連携できるようにしときます!
参考