トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

OracleからPostgresqlへODBC接続する

参考

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では、テーブルの大文字、小文字の扱いが異なるので、テーブル名はダブルクォートで囲ったほうが無難。

[カテゴリ: データベース > Postgresql]
[カテゴリ: データベース > Oracle]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2016年08月28日 23時20分37秒