問題タブ [odp.net-managed]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c#-4.0 - ODP.NET + CLOB = ORA-01461: LONG 列に挿入するためだけに LONG 値をバインドできます
CLOB 列を持つテーブルにオブジェクトを挿入または更新しようとして困っています。更新コマンドは次のとおりです。
CLOB 列は、シリアル化されたイメージであり、String64 として格納されるアイコンです。アイコンに 'test' のみを配置しようとしましたが、正常に挿入されました。次に、保存したい画像を入れます。これは次の文字列です。
そして、それは失敗します。
次に、別の画像でテストした魔女の連載は次のとおりです。
そしてそれは動作します。
最初の画像の連番文字列が挿入できないってどういうこと?
私は Oracle.ManagedDataAccess v4.121.2.0、.NET Framework 4.5.1 を使用しています。および Windows 7 x64 での Oracle 10g。
編集:したがって、最初のイメージのシリアル化文字列をコピーして PL/SQL を開き、自分の clob 列に貼り付けると、これが機能します。解決策ではないことはわかっていますが、DBではないと思いますので、データプロバイダーになることはできますか?
c# - Oracle マネージド ドライバーは async/await を適切に使用できますか?
async/await .NET 機能を使用して Oracle クエリを作成しようとしていました。結果セットは非常に大きく、返されるまでに約 5 ~ 10 秒かかります。Window_Loaded
UIスレッドがハングしています。基本的に、非同期/待機を使用してバックグラウンドでクエリを実行し、結果でデータビューを更新したかったのです。
これは Oracle ドライバーの問題ですか、それともコード エラーですか? たとえば、非同期ではなく同期的に行われていることはありますか? Oracle.ManagedDataAccess
Oracle の Web サイトから入手できる最新のものを使用しています。
私はこれを試しましたが、まだUIをブロックしています:
結局、ブロックしないようにメソッドをこんな感じに変更しました。Oracleマネージドライブラリが非同期メソッドを同期的に実装したというだけで、私は正しい考えを持っていたようです(インターフェースに準拠するためだけに)。
c# - Oracle マネージド ドライバーは TNS 名を解決できませんが、トレースに存在します
Oracle.ManagedDataAccess クライアントを正しい TNS_ADMIN 設定 (.NET 構成ファイル内) でインストールおよび構成しました。Oracle トレースを有効にすると、TNS_ADMIN 設定が正しく取得され、TNSNAMES.ORA からすべての TNS エントリが一覧表示されます。接続文字列で使用している TNS 名は、トレース出力に存在します。
ただし、接続文字列 ('Data Source=...;' セクション) で TNS 名を使用して接続しようとすると、依然として ORA-12154 (接続識別子を解決できません) が返されます。何が間違っているのかわかりません... Oracleマネージドプロバイダーは、トレースで接続識別子を識別します。問題があれば接続識別子をTNSPINGすることもできます。私のOracle管理構成は、TNSPINGで使用されるのと同じTNSNAMES.ORAを指しています。
何か案は?
ありがとう!
c# - マネージド ODP.net: 変更通知と LDAP
LDAP 解決を使用して Oracle データベースに接続しています。
これは、通常のクエリで正常に機能するようになりました。接続を開いて、それに対してコマンドを実行できます。
残念ながら、が呼び出されたSystem.DirectoryServices.Protocols.DirectoryOperationException: The object does not exist
ときに例外が発生する変更通知クエリでは機能しません。ExecuteNonQuery
C:\Program Files\Oracle\sqlnet.ora
C:\Program Files\Oracle\ldap.ora
web.config
届出登録
次の例外がスローされます。
トレース (ips は xs に置き換えられました)
c# - これは Oracle ODP.NET のバグですか?
これが Oracle ODP.NET プロバイダーのバグなのかどうか知りたいです。パラメータ化された挿入ステートメントを作成しました。パラメータの 1 つに「:EMPNO」という名前を付けました。テストすると、値は「8000」になりました。データベースでは、EMPNO 列は varchar2(4 バイト) として定義されていました。ただし、挿入により次のエラーメッセージが表示されました
ORA-12899: 列"HR"."HR_DEPARTURE"."EMPNO"の値が大きすぎます(実際: 6、最大: 4)
いくつかのコード スニペットを次に示します。
次に、パラメーターを追加します
コマンドを作成し、パラメーターを追加します (複数のパラメーターがあったため、配列)
私はいくつかの調査を行い、エンコーディングや、Oracle がデフォルトで (BindByName ではなく) 位置でバインドするという事実について検討しました。ただし、これらのいずれも問題を解決しませんでした。その後、暗闇で撮影し、パラメーター名を「:EMPN」に変更したところ、次のエラー メッセージが表示されました。
ORA-12899: 列"HR"."HR_DEPARTURE"."EMPNO"の値が大きすぎます(実際: 5、最大: 4)
これにより、クエリが機能するときにパラメーター名を「:EMP」に変更するようになりました。プロバイダーが C# のパラメーター名にデータベースの列サイズを適用しているのは非常に奇妙です。データベースのサイズは、値を強制する必要があります (「8000」は、すべてのテストで同じにしました)。
c# - ODP.NET 管理ライブラリはエイリアスを解決しますが、32 ビット ライブラリは解決します
ボックスに 32 ビット ドライバーがインストールされています (一部の DBA によってインストールおよび構成されています)。
次のようなドライバーをテストするための簡単なスクリプトを作成しました
このアプリケーションを 32 ビットの Oracle.DataAccess.dll で 32 ビットとしてコンパイルすると、問題なく実行されます。
ただし、Oracle.ManagedDataAccess.dll を使用してアプリケーションを AnyCPU としてコンパイルすると、ORA-12154 (指定された接続識別子を解決できませんでした) エラーが発生します。
エイリアスを tnsping すると、正しく動作し、接続識別子と実際のデータベース名が通知されます。
次に、エイリアスの代わりに実際のデータベース名を使用するように接続文字列を変更し、マネージ ライブラリで再度試行すると、問題なく実行されます。
私は読んでいて、管理されたドライバーがエイリアスを解決するためにtnsnames.oraファイルに依存しているというこの回答を見つけましたが、sqlnet.oraおよびldap.oraで定義されたLDAPサーバーに依存しています。
私がtnspingすると、sqlnet.oraを使用して名前を解決すると表示されます。
では、管理されたドライバーが機能しないのはなぜですか?
.net - .net Web サービスの Oracle データベース接続の問題
継承した .net Web サービス (asmx) があります。データベースがメンテナンスのためにダウンするまで、すべて問題ありません。これが発生すると、アプリケーション プールがリサイクルされるまで、Web サービスは Oracle 11g データベースに接続できません。Web サービスは、他のアプリケーションも使用するデータレイヤーを使用します。私は、何が問題を引き起こしているのかについて、運がなくても見回してきました。同様のことに関するアドバイスや経験は素晴らしいでしょう。
ありがとう