skip to Main Content

So I am building a DOTNET application that runs on Debian, and makes use of ogr2ogr to copy data from an oracle database towards an Postgres database.

The problem is that I cannot get GDAL to recognize the OCI driver.

OCI support

These are the installation commands that I have collected for now:

#Install dependencies used by GDAL and ora2pg
apt-get update && apt-get install -y -q --no-install-recommends 
        libc-bin unzip curl ca-certificates rpm libaio1 
        #Package manager for installing Oracle
        alien 
        # Install postgresql
        postgresql-client 
        # Used for the POSTGRES_HOME variable
        libpq-dev 
        #Package manager used for installation of perl database drivers
        cpanminus 
        # Proj build
        sqlite libsqlite3-dev pkg-config g++ make

#Install Oracle
curl -o oracle-instantclient-basic.x86_64.rpm https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-basic-19.9.0.0.0-1.x86_64.rpm
curl -o oracle-instantclient-devel.x86_64.rpm https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-devel-19.9.0.0.0-1.x86_64.rpm
curl -o oracle-instantclient-sqlplus.x86_64.rpm https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-sqlplus-19.9.0.0.0-1.x86_64.rpm

alien -i oracle-instantclient-basic.x86_64.rpm && alien -i oracle-instantclient-devel.x86_64.rpm && alien -i oracle-instantclient-sqlplus.x86_64.rpm

EXPORT ORACLE_HOME=/usr/lib/oracle/19.9/client64
EXPORT TNS_ADMIN=/usr/lib/oracle/19.9/client64/network/admin
EXPORT LD_LIBRARY_PATH=/usr/lib/oracle/19.9/client64/lib
EXPORT PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/oracle/19.9/client64/bin

#Install Postgres en Oracle drivers for perl, ora2pg  
cpanm DBD::Oracle
cpanm DBD::Pg

#Setup
wget https://download.osgeo.org/proj/proj-6.3.2.tar.gz
tar -zxf proj-6.3.2.tar.gz -C /opt/
/opt/proj-6.3.2/configure --prefix=/usr --disable-static --enable-lto
make -C /opt/proj-6.3.2/
make install -C /opt/proj-6.3.2/

RUN wget http://download.osgeo.org/gdal/3.2.2/gdal-3.2.2.tar.gz
/opt/gdal-3.2.2/configure
make -C /opt/proj-6.3.2/
make install -C /opt/proj-6.3.2/

Is there anyone who can tell me what I am missing, because I cannot find any answers on the internet…

2

Answers


  1. Chosen as BEST ANSWER

    So after a lot off testing, my colleague found the problem.
    Apparently the scripts search for a folder in $ORACLE_HOME/sdk.
    Now by installing it, like above, it doesn't install the sdk folder on the correct location.
    So we solved it by adding an extra step extracting the SDK zip package on the correct location.

    This is the result: Result

    Dockerfile


  2. Above solution did not work for me. I needed a GDAl container with OCI. Based on some other info I found I build an image that works.

    https://github.com/botenvouwer/gdal-oci

    Currently you have to clone and build the image yourself. You should (but don’t have to) pass the version to your docker build as ARG GDAL_VERSION.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search