Selasa, 24 Januari 2012

PYTHON: Instalasi cx_Oracle di Linux 64bit

Bingung meng-Compile cx_Oracle, salah satu library yang di gunakan oleh python untuk melakukan koneksi ke Oracle database, di linux 64bit? Sekedar berbagi pengalaman saya yang sempat kewalahan. Begini selengkapnya, saya sedang men-Develop sebuah web-app dengan Turbogears 2.1.4 dengan menggunakan sqlAlchemy sebagai ORM. Kebetulan database yang saya gunakan adalah Oracle maka akhir nya mendapatkan cx_Oracle dalam bentuk source code. Berhubung "how-to" untuk 64bit linux tidak dapat saya temukan. Maka saya coba untuk melakukan kompilasi seperti biasa yang saya lakukan dalam lingkungan Linux, hasil kompilasi ok. Tetapi ketika library hendak di gunakan langsung muncul error

" Wrong lcntsh -ELF32..." *) kira2 seperti ini error nya, karena lupa untuk snapshot error message nya secara lengkap.

Setelah saya coba perlahan-lahan mencari tahu apa nya yang salah. Ternyata python yang terinstall dalam Fedora 14 64bit saya adalah yg 64bit, Oracle-XE yang terinstall adalah 32-bit, dan library Oracle-client 32bit. Problem nya adalah di Oracle-client nya, ketika saya ganti dengan client yang versi 64bit. Woolaahh, sqlAlchemy dapat terkoneksi ke Oracle secara sempurna!

Langkah-langkah selengkap nya adalah sebagai berikut:

1. Download cx_oracle source code di sini
2. Download oracle instant client 64 bit basic & devel dari website oracle.com atau di sini
3. Unzip Oracle Instant Client basic and devel zip file
4. Do
    $ export ORACLE_HOME=~/Downloads/instant_clientxx/
    $ export LD_LIBRARY_PATH=$ORACLE_HOME
    *) Penting untuk diketahui path ORACLE_HOME di arahkan ke direktori
        di mana Oracle instant client di extract
5. cd $ORACLE_HOME
    $ ln -s libclntsh.so.10.1 libclntsh.so
    $ ln -s libocci.so.10.1 libocci.so
6. Kembali ke direktori di mana cx_oracle di extract lalu eksekusi perintah ini
    $ python setup.py build
7. Jika semua nya lancar maka cx_oracle.so akan tergenerasi sempurna, cara
    mengetahui nya adalah eksekusi perintah
    # updatedb
    $ locate cx_oracle.so
8. Dan yang terakhir adalah
    $ python setup.py install

Have fun!

1 komentar:

  1. koreksi: link disini harusnya http://cx-oracle.sourceforge.net

    mau tanya: ada tutorial utk cx_Oracle windows xp 64bit dan oracle 10g 64bit windows, python ver 2.7

    krn ada error ketika setup

    C:\Python27\cx_Oracle-5.1.1>python setup.py install build --compiler=mingw32
    running install
    running build
    running build_ext
    building 'cx_Oracle' extension
    c:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -ID:\oracle\product\10.2.0\db_1\
    oci\include -ID:\oracle\product\10.2.0\db_1\rdbms\demo -IC:\Python27\include -IC
    :\Python27\PC -c cx_Oracle.c -o build\temp.win32-2.7-10g\Release\cx_oracle.o -DB
    UILD_VERSION=5.1.1
    cc1.exe: error: unrecognized command line option '-mno-cygwin'
    error: command 'gcc' failed with exit status 1

    tks

    BalasHapus