View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Instalar oracle_fdw en postgres (Debian 11, postgres 13)

Se siguen instrucciones de: oracle_fdw wiki, esta thread de stack overflow y estas instrucciones para debian 8.

NOTA: Hay una tabla de versiones soportadas en este documento y en la página 5 de este otro. En el primero dan la siguiente información:
Client
version

Server 12.1.0

Server 11.2.0

Server 11.1.0

Server 10.2.0

Server 10.1.0

Server 9.2.0
12.1.0YESYESwasMSD #7no #3no #3
11.2.0YESYESwasMSD #7nowas #5
11.1.0waswaswaswas #7was #6was #5
10.2.0MDS #7MDS #7was #7MDSwaswas #5
10.1.0(#4)nowas #6was #6waswaswas
9.2.0no #8was #5was #5was #5waswas
En el segundo, dan la siguiente:
  • Oracle Client 12.2 can connect to Oracle Database 11.2 or greater.
  • Oracle Client 12.1 can connect to Oracle Database 10.2 or greater.
  • Oracle Client 11.2 can connect to Oracle Database 9.2 or greater.
  • The technical restrictions on creating connections may be more flexible. For example Oracle Client 12.2 can successfully connect to Oracle Database 10.2.

1. Se descargan los paquetes del oracle instant client (bugmenot)(he descargado la versión AMD64 en zip a uiharu:/data/oracle-intantclient-amd64/ y a main1:/incoming/oracle-intantclient-amd64/ ). ALternativamente tb. se pueden usar los de x86_64.

2. se descomprimen los zip en /opt/oracle-instantclient de serv_tce/serv_tce2:

En la máquina en la que se quiere instalar el oracle_fdw (en nuestro caso servtce11 o servtce2), como root:
apt-get install libaio1
cd /opt/
mkdir oracle-instantclient
cd oracle-instantclient/
scp metro@16.0.62.18:/incoming/oracle-intantclient-amd64/*.zip .
scp metro@16.0.62.18:/incoming/oracle-intantclient-amd64/12.1/*.zip .
for i in *zip ; do unzip $i ; done
( cd /opt/oracle-instantclient/instantclient10_1 && ln -s libclntsh.so.10.1 libclntsh.so )
( cd /opt/oracle-instantclient/instantclient_12_1 && ln -s libclntsh.so.12.1 libclntsh.so )
(cd /usr/lib && ln -s /opt/oracle-instantclient/instantclient_12_1/*.so .)
(cd /usr/lib && ln -s /opt/oracle-instantclient/instantclient_12_1/*.so.* .)
cat > env.sh.10.1 <<'EOF'
export ORACLE_HOME=/opt/oracle-instantclient/instantclient10_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle-instantclient/instantclient10_1
export PATH=$PATH:$ORACLE_HOME
EOF
cat > env.sh <<'EOF'
export ORACLE_HOME=/opt/oracle-instantclient/instantclient_12_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle-instantclient/instantclient_12_1
export PATH=$PATH:$ORACLE_HOME
EOF
chmod a+x env.sh.10.1 env.sh
. env.sh
sqlplus metro/metro1@//metrosun11:1521/captura
SELECT COUNT(*) FROM ESTACIONES;
quit
echo ". /opt/oracle-instantclient/env.sh" >> /etc/profile
sed -i "/^set -e/a. /opt/oracle-instantclient/env.sh" /etc/init.d/postgresql


3. Se compila/instala el oracle_fdw

En uiharu, como metro:
cd /tmp
wget https://github.com/laurenz/oracle_fdw/archive/master.zip -O oracle_fdw.zip
scp oracle_fdw.zip metro@main1:/tmp/


En la máquina en la que se quiere instalar el oracle_fdw (en nuestro caso servtce11 o servtce2), como root:
cd /opt
scp metro@16.0.62.18:/tmp/oracle_fdw.zip .
unzip oracle_fdw
cd oracle_fdw-master
apt-get install postgresql-server-dev-13
# Obtenido de https://github.com/kevincolyar/ruby_oracle_libs/blob/master/linux_x86_64/instantclient_11_1/sdk/include/oci.h
sed -i "/include..oci.h/a#ifndef OCI_ATTR_DRIVER_NAME\n#define OCI_ATTR_DRIVER_NAME 424\n#endif" oracle_utils.c
sed -i "/include..oci.h/a#ifndef OCI_NCHAR_LITERAL_REPLACE_ON\n#define OCI_NCHAR_LITERAL_REPLACE_ON 0x00400000\n#endif" oracle_utils.c
make
make install