参考
https://dbaspot.wordpress.com/2013/05/29/how-to-access-postgresql-from-oracle-database/
準備
- Oracleに接続できるようにしておく
- Postgresqlに接続できるようにしておく
PostgreSQLのODBCドライバをインストール
以下のパッケージをインストールする
- unixODBC
- postgresql-odbc
各設定ファイルを作成、編集する
ODBCの設定
/etc/odbc.ini
[test] Driver = PostgreSQL Servername = localhost Database = postgres Username = postgres Password = postgres ;ConnSettings = set client_encoding to UNICODE ; ; [hogehoge] Driver = /usr/pgsql-9.4/lib/psqlodbc.so Servername = localhost Database = postgres Username = postgres Password = postgres Port = 5432 TRACE =Yes TraceFile = /tmp/sql.log Debug = 1 CommLog = 1 ;ConnSettings = set client_encoding to UNICODE ~ ~
ODBCのテスト
isql -v test postgres postgres
initSID.oraの編集
/u01/app/oracle/product/11.2.0/xe/hs/admin
にSIDのファイルを作成する。もしSIDがHOGEHOGEの場合は
/u01/app/oracle/product/11.2.0/xe/hs/admin/initHOGEHOGE.ora
になる。
# This is a sample agent init file that contains the HS parameters that are # needed for the Database Gateway for ODBC # # HS init parameters # HS_FDS_CONNECT_INFO=hogehoge <- ODBCのDSN #HS_FDS_TRACE_LEVEL = DEBUG #HS_FDS_SHAREABLE_NAME=/usr/lib64/psqlodbcw.so HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so #HS_FDS_SHAREABLE_NAME=/usr/pgsql-9.4/lib/psqlodbc.so #HS_FDS_SHAREABLE_NAME=/usr/pgsql-9.4/lib/psqlodbcw.so # # ODBC specific environment variables # set ODBCINI=/etc/odbc.ini # # Environment variables required for the non-Oracle system # # set <envvar>=<value>
Oracle Listenerの設定
/u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora
にSID_DESCを追加する。
もし、別にリスナーを立てる場合は、SID_LIST_LISTENER2とLISTENER2をポートを変えて立てる。
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe) (PROGRAM = extproc) ) (SID_DESC= (SID_NAME=HOGEHOGE) (ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe) (PROGRAM=dg4odbc) # (ENVS=LD_LIBRARY_PATH=/usr/lib64/:$ORACLE_HOME/lib) ) )
リスナー再起動
lsnrctl stop lsnrctl start
tnsnames.oraの編集
hogehoge = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) (CONNECT_DATA = (SID = HOGEHOGE) ) (HS = OK) )
データベースリンクの作成
create database link PG_LINK connect to "pguser" identified by "pgpass" using 'PG_LINK';
アクセスする
select * from "testtable"@PG_LINK;
OracleとPostgreSQLでは、テーブルの大文字、小文字の扱いが異なるので、テーブル名はダブルクォートで囲ったほうが無難。
[カテゴリ: データベース > Oracle]
[通知用URL]
Tweet
最終更新時間:2016年08月28日 23時20分37秒