トップ 一覧 置換 検索 ヘルプ 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では、テーブルの大文字、小文字の扱いが異なるので、テーブル名はダブルクォートで囲ったほうが無難。
{{category2 データベース,Postgresql}}
{{category2 データベース,Oracle}}