Skip to Main Content

Breadcrumb

Connect 2 Worlds: Oracle Datenbank connect zu PostgreSQL

Dieses Webinar finden Sie auf unserem Youtube Webinar Channel.

In diesem Webinar zeigen wir, wie  von einer Oracle Datenbank mittels Heterogeneous Services und ODBC auf eine PostgreSQL Datenbank zugegriffen werden kann.

Architektur

Installieren von unixODBC (als root)

yum install unixODBC.x86_64 unixODBC-devel.x86_64

PostgreSQL ODBC (als postgres)

wget https://ftp.postgresql.org/pub/odbc/versions/src/psqlodbc-13.00.0000.tar.gz
tar xvfz psqlodbc*
cd psqlodbc*
./configure
make

und als root installieren

su   # ohne "-" !!
make install
exit

ODBC Einstellungen in /etc/odbcinst.ini als root anpassen

cat /etc/odbcinst.ini

[PostgreSQL]
Description = ODBC for PostgreSQL
Driver64    = /usr/local/lib/psqlodbcw.so
Setup64     = /usr/lib64/libodbcpsqlS.so
FileUsage   = 1

ODBC Datenquelle /etc/odbc.ini oder im ~oracle/.odbc.ini konfigurieren

[PG13]                                    <-- Name der Datenquelle (DNS)
Description         = Postgres13 Database
Driver              = PostgreSQL          <-- aus /etc/odbcinst.ini
Trace               = No
TraceFile           =
Database            = mydb                <-- PostgreSQL Database Name
Servername          = localhost           <-- PostgreSQL Server
UserName            = chris               <-- PostgreSQL User (temp für isql-Test)
Password            = chrispassword       <-- PostgreSQL Password (temp für isql-Test)
Port                = 5432
Protocol            = 13
ReadOnly            = No
RowVersioning       = No
ShowSystemTables    = No
ShowOidColumn       = No
FakeOidIndex        = No
ConnSettings        =

ODBC Connect zu PostgresSQL mittels isql testen

$ isql PG13

+---------------------------------------+
| Connected!                            |
...

Oracle HS als oracle Benutzer einrichten

init<odbcsid>.ora anlegen und konfigurieren

cd $ORACLE_HOME/hs/admin
cp initdg4odbc.ora initpg13.ora
cat initpg13.ora

HS_FDS_CONNECT_INFO = PG13
HS_LANGUAGE=AMERICAN_AMERICA.WE8ISO8859P15
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
set ODBCINI=/etc/odbc.ini

listener.ora Eintrag für Oracle HS erzeugen

cat $ORACLE_HOME/network/admin/listener.ora

SID_LIST_LISTENER=
 (SID_LIST=
    (SID_DESC=
      (SID_NAME=pg13)
      (ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE)
      (PROGRAM=dg4odbc)
      (ENV="LD_LIBRARY_PATH=/usr/lib64:/usr/local/lib:/opt/oracle/product/18c/dbhomeXE/lib")
    )
 )

lsnrctl stop
lsnrctl start

tnsnames.ora Eintrag erstellen

cat $ORACLE_HOME/network/admin/tnsnames.ora

PG13_connect =
 (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = postgres.shared)(PORT = 1521))
   (CONNECT_DATA = (SID = pg13))
   (HS=OK)
 )

Datenbank Link anlegen und auf PostgreSQL Tabellen zugreifen

CREATE [PUBLIC] DATABASE LINK PG13link CONNECT TO "chris" identified by "Chris" using 'pg13_connect';
select count(*) from "foo"@PG13link;

COUNT(*)
----------
       1

Weitere behandelte Themen

  • Probleme mit Datentyp-konvertierung
  • Boolean Datentyp
  • Case Sensitivität bei Objektnamen

PostgreSQL für Oracle DBAs Workshop

Mehr Informationen zu PostgreSQL für Oracle DBAs bieten wir in unserem Workshop.

Interesse an diesem Webinar geweckt?

Dann schauen Sie es sich doch direkt auf unserem Youtube Channel an: Connect 2 Worlds - Oracle Connect to PostgreSQL