3

これはより具体的には SQL Server Reporting Services に関するものですが、これは典型的な .Net アプリケーションの問題でもあると考えています。

これが問題です。SSRSを使用して、Oracleデータベースからデータを報告しています。初日から、ユーザーは ORA-2396: Exceeded maximum idle time、ORA-01012-Not Logon などのエラーが発生すると不平を言っています。

DBA、アプリ開発者、ネットワーク エンジニアを含めましたが、これまでのところ、これ以上の手がかりは見つかりませんでした。

最近、いくつかの調査を行っているときに、Oracle への .Net 接続に関する 1 つの「既知の」問題が多くの人々によって文書化されていることに気付きました。彼らが言及しているように、接続プールを使用している場合、役に立たない接続でもプールで使用できる可能性があります。次のリクエストで、この接続が使用される可能性があり、その時点でエラーがスローされます。DBA によって確認されたように、Oracle インスタンスは、X 分間アイドル状態になると接続を切断するように設定されています。

前述の言及があるリンクは次のとおりです http://msdn.microsoft.com/en-us/library/8xx3tyca(v=VS.90).aspx

http://www.codeproject.com/KB/dotnet/ADONET_ConnectionPooling.aspx

他にもいくつかあります。ただし、はい、これは現在の問題です(最新バージョンの.Netおよびoracleなど)という非常に確認された声明はどこにもありません。

ソリューションの部分では、接続文字列の一部として「Validate Connection = true」属性を使用することに言及しています。しかし、それを使用しようとすると、「キーワードはサポートされていません - 接続を検証してください」と表示されます。(Validconも試しました)

私が持っている質問は次のとおりです。1.接続プールからのこの「ダーティ」読み取りの問題が存在することが確認されていますか? 2. もしそうなら、解決策は何ですか? 3. そうでない場合、問題の原因は何か。

さらに情報が必要な場合は、お気軽にコメントしてください。

4

2 に答える 2

1

ここでの根本的な問題は、DBA に属します。DBA が実行しているのと同じアイドル接続のクリーンアップの影響を受けやすいアカウント (つまり、私の個人的なオラクル アカウント) を使用すると、同じエラーが表示されます。最善の解決策は、アイドル時間後に終了しない「サービス」アカウントを割り当ててもらうことです。

つまり、Oracle プロバイダーではなく Microsoft プロバイダーを使用しているため、「サポートされていないキーワード - 接続の検証」というメッセージが表示されると思います。私は SSRS 接続にあまり詳しくないので、どちらを選択するかわかりません。ただし、.net では、System.Data.OracleClient と Oracle.DataAccess の違いです。

それが解決された場合、検証接続オプションは、接続を使用する前に接続を事前にpingすることでオーバーヘッドを追加し、単にプーリングを無効にするよりもわずかに良くなります. 試してみることができるもう 1 つの方法は、最小プール サイズ = 0 に設定することです。これにより、プールがゼロになり、接続が長時間アイドル状態になる可能性が低くなります。残念ながら、プロバイダーは使用された後にのみ古い接続をチェックするため、完全な修正ではありません.

まだ持っていない場合は、Oracle のデータ プロバイダーの接続文字列パラメーターへの参照を次に示します

于 2011-07-19T15:45:57.467 に答える
0

これは既知の問題であり、接続プールを使用する場合は常に発生し、いくつかのことに依存します。そのうちの1つはサーバーの設定です...OracleRACを使用する場合は複雑になることもあります...一部のOracle.NETプロバイダーはこの問題をシームレスに処理するプーリングのソリューションでは...そのようなプロバイダーの1つは、Devartによって販売されているプロバイダーです... http://www.devart.com/dotconnect/oracle/

私はDevartと提携していません、ただ幸せな顧客です...

于 2011-07-19T00:59:09.593 に答える