0

スクリプトを作成し、Oracle db (10g) とデスクトップ 'B' のアプリケーション サーバーを対象とするデスクトップ 'A' で実行しました。何の問題もなく走りました。

次に、スクリプトをデスクトップ「B」にコピーすると、次のスニペットで「ORA-24315: 無効な属性タイプ」が吐き出されました。

cx_dsn = cx_Oracle.makedsn(cx_hostname, cx_port, cx_SID)
cx_connection = cx_Oracle.Connection(cx_username + '/' + cx_password + '@'+ cx_dsn )

両方のマシンは次のように構成されました。

  • Windows 7 (64 ビット)
  • 32 ビット バージョンの Python (ActiveState)
  • pypm install cx-oracle (バージョン cx_Oracle.clientversion() = (11, 2, 0, 3, 0) になりました - はい、これは v11 を示していますが、デスクトップ 'A' の 10g バージョンに対して機能しました)

デスクトップ「B」には Oracle 10g と WebSphere 7 がインストールされていましたが、デスクトップ「A」にはインストールされていませんでした。

私が検索したところ、多くの人がこの問題または同様の問題に遭遇しましたが、一般的に提案された唯一の解決策は次のとおりです。

  1. パスが Python ライブラリの前に Oracle ライブラリを参照していないことを確認してください。ここでの提案は、デスクトップ B にインストールされた Oracle が干渉していることだと思います。そのため、Pythonのみを参照するようにパスを構成しました(Oracleなどについては言及していません)-それは役に立ちませんでした
  2. すべての 32 ビット バージョンまたはすべての 64 ビット バージョンを使用していることを確認してください。Python に関する限り、全面的に 32 ビットを使用しました。
  3. cx-Oracle がターゲットとするデータベースと一致することを確認してください...問題があるように見えますが...奇妙なことに、スクリプトはデスクトップ 'A' で動作するので、環境上の何かに違いないと思いますデスクトップ「B」。そこで、専用の 10g バージョンの cx_Oracle をインストールします。どちらも成功しません。(このクエリhttps://stackoverflow.com/questions/10456598/cx-oracle-multiple-instances-of-oracle-10-and-11-plus-oracle-homeは回答されませんでしたが、本質的に似ています)

だから私は立ち往生しています - 何か提案はありますか?

4

2 に答える 2

0

別のバージョンの 2 つ目の Oracle クライアントをインストールした後、ORA-24315 エラーが発生しました。PATH 環境変数では、Oracle パス エントリの順序を変更しただけです。おそらく cx_Oracle は、PATH 変数に最初に出現した Oracle のみを考慮します。

構成: Win 7、Oracle 11.2.0.3、cx_Oracle-5.1.1-11g.win32-py2.6

変更: 追加でインストールされた Oracle 10.2.0

結果のエラー メッセージ: cx_Oracle.DatabaseError: ORA-24315: 不正な属性タイプ

再び動作させる方法: PATH の順序を path_to_Oracle10;path_to_Oracle11;... から path_to_Oracle11;path_to_Oracle10;... に変更しました。

于 2015-01-12T12:54:53.613 に答える