(管理者ツールを使用して)完全なOracleクライアントをインストールすると、問題が解決したようです。ただし、注意が必要なニュアンスがいくつかあります。
wsgi.py シェルから渡されないため、ORACLE_HOMEの場所が必要です。私の場合、これはwsgi.py次のようになります。
import os, sys
sys.path.append('/var/www/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
os.environ['ORACLE_HOME'] = '/client/oracle/product/11.2.0/db'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Oracle 11.2.0クライアントでは、ライブラリのリンクにバグがあります。Oracleライブラリのリンクを修正するには:
- $ ORACLE_HOME / lib(私の場合は/client/oracle/product/11.2.0/db/lib/)に移動します
- ファイルlibexpat.so.1を削除します
- ユーザーoracleとして:シンボリックリンクを作成します:libexpat.so.1-> libexpat.so.1.5.2
さらに、Linuxローダーを適切に設定することが重要です。(注:これはLD_LIBRARY_PATHを設定するのと同じですが、以下の方がよりクリーンな解決策だと思います)。OracleHomeライブラリパス/etc/ld.so.conf.d/oracle.confへの1行のエントリでファイルを作成します。私の場合、それはです。次に、を実行します。ローダーが正しく構成されていることを確認するには、cx_Oracleの共有オブジェクトパスを確認します。/client/oracle/product/11.2.0/db/libldconfig
ファイルを見つけるには:スーパーユーザーとして、実行updatedbしてからlocate cx_Oracle.so | grep cx_Oracle\.so$
ファイルをテストするには:ldd <path>
出力は次のようになります(以下)。「見つかりません」というフレーズが表示された場合は、ローダーパスに問題があります。
# ldd /usr/lib/python2.7/site-packages/cx_Oracle.so
    linux-gate.so.1 =>  (0xb775c000)
    libclntsh.so.11.1 => /client/oracle/product/11.2.0/db/lib/libclntsh.so.11.1 (0xb5a25000)
    libpython2.7.so.1.0 => /usr/lib/libpython2.7.so.1.0 (0xb588e000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xb5873000)
    libc.so.6 => /lib/libc.so.6 (0xb56c2000)
    libnnz11.so => /client/oracle/product/11.2.0/db/lib/libnnz11.so (0xb5474000)
    libdl.so.2 => /lib/libdl.so.2 (0xb546f000)
    libm.so.6 => /lib/libm.so.6 (0xb5444000)
    libnsl.so.1 => /lib/libnsl.so.1 (0xb5429000)
    libaio.so.1 => /lib/libaio.so.1 (0xb5427000)
    libutil.so.1 => /lib/libutil.so.1 (0xb5422000)
    /lib/ld-linux.so.2 (0x487b9000)
便宜上、/etc/profile.d/oracle.sh次の内容のファイルも作成することをお勧めします(ORACLE_HOMEを特定のインストールパスに変更することに注意してください)。
export ORACLE_HOME=/client/oracle/product/11.2.0/db
export PATH=$PATH:$ORACLE_HOME/bin
これらのグローバル環境変数を有効にするために再起動します。
その後、Oracle接続はどのシナリオでも機能するはずです。この情報が、Oracleで問題を抱えている他の人に役立つことを願っています。