sql >> データベース >  >> RDS >> Oracle

cx oracle ImportError

    これは、El Capitanのシステム整合性保護(SIP)の変更に関連しており、特にDYLD_LIBRARY_PATHが生成されたプロセスに継承されるのを防ぎます。

    cx_Oracle.soを変更できます ライブラリは、機能しなくなった検索パスの代わりに、Oracleクライアントライブラリへの実際のパスを使用します。 ORACLE_HOMEがあることを確認してください 実際のインスタントクライアントの場所を指すように設定されたままであり、ImportErrorによって報告された正確なパスにも注意してください 使用する必要があります-3071542110 値は、インストールしたInstant Clientのバージョン/ビルドによって異なる場合があります:

    export ORACLE_HOME=/usr/local/lib/share/oracle/installclient_11_2
    
    install_name_tool -change \
      /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 \
      $ORACLE_HOME/libclntsh.dylib.11.1 \
      /Library/Python/2.7/site-packages/cx_Oracle.so
    

    ...しかし、そのライブラリは別のOracleライブラリを見つけることができません:

    ImportError: dlopen(/Library/Python/2.7/site-packages/cx_Oracle.so, 2): Library not loaded: /ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib
      Referenced from: /usr/local/lib/share/oracle/installclient_11_2/libclntsh.dylib.11.1
      Reason: image not found
    

    そのため、そのライブラリも変更する必要がありますが、これにはあまり慣れていない可能性があります。

    install_name_tool -change \
      /ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib \
      $ORACLE_HOME/libnnz11.dylib \
      $ORACLE_HOME/libclntsh.dylib.11.1
    

    正確なクライアントのバージョン/ビルドによっては、次のコマンドを実行する前に、ファイルを書き込み可能にする必要がある場合があります。

    chmod 755 $ORACLE_HOME/libclntsh.dylib.11.1
    

    これらの変更により、cx_Oracleを実行できます。 エルキャピタンでのテスト。

    install_name_changeの詳細 ここ。

    12cインスタントクライアントはこの問題を回避するように構築されているようです。そのため、11gファイルをハッキングするよりも簡単にアップグレードできます。



    1. 別の列に基づくPostgreSQLシーケンス

    2. MySQLで現在の合計を計算する

    3. データベースの監視-SCUMMダッシュボードを使用したPrometheusのトラブルシューティング

    4. NaviCatMySQLクライアントを使用してデータベースに接続する方法