3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

oracle_fdwを使って、Windows10上のPostgresとOracle Databaseを繋ぐ

Posted at

概要

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

image.png

PostgreSQLのデータベースクラスタに oracle_fdwを上書き保存する

方法としては、ダウンロードしたフォルダをPostgreSQLのデータベースクラスに上書き保存します。

コピー元のファイル:
4点のフォルダ
・debug_symbols
・doc
・lib
・share

コピー先の親フォルダ 
C:\Program Files\PostgreSQL\14

画像
image.png

SQL部分

1.PostgresSQL側で oracle_fdwを有効化する

-- 1.oracle_fdwをロード
CREATE EXTENSION oracle_fdw;
-- 1.pg_extensionにoracle_fdwが追加されていることを確認
select * from pg_catalog.pg_extension;

image.png

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;

image.png

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;

image.png

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;

image.png

感想

・次はDocker上のpostgreSQLで連携できるようにしときます!

参考

富士通のサイト
https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/article-index/oracle-fdw-basic/

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?