!!!参考 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 = !!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}}