2012-02-28 13 views
-1

私はOracleで関数を呼び出すCrystalレポートを持っています。この関数はビューをテーブルの1つとして選択するselectを使用します。このビューは他のデータベースへの複数のリンクを使用します(ビューはいくつかのクエリの和集合です)。この関数が実行されるたびに、ビューのクエリが実行され、ビューを作成するすべてのリンクがenq- DXの競合になるように見えます。関数がenq- DXの競合を引き起こします

これはこの既知の問題に関連していますか? http://surachartopun.com/2008/12/dbink-hangs-enq-dx-contention.html

私が尋ねる理由は、これまで働いていた、このメソッドを持っている私の研究では、Oracleの異なるversiionsにリンクするとき、この問題が起こる必要があることを示しているようだが、私は使用していたもののすべてが10.2

+0

実際の症状はなんですか?レポートがハングしたり、エラーメッセージがスローされたりしますか? – kevinsky

+0

クリスタルがハング....オラクルグリッドに入ると、リンクプロセスがenq- DXの競合になっています。この関数はプラグマautonomous_transactionです。 – user1023993

+0

あなたの説明は、何が起こっているのかを何らかの形で伝えています。説明ではリモート選択について説明しますが、コメントでは自律的なトランザクションについて話しますか?あなたは完全な説明をつけることができますか? – steve

答えて

0

であるということですか?物事を行う良い方法のようには聞こえません。私は関数が各行を処理するときに莫大な量の往復を引き起こすと想像することができます。

これを行う他の方法には、可能な限り最大のデータテーブルの近くに関数を置き、そのデータベースで処理を続けるなどがあります。関数から必要なものだけを返します。

毎朝クエリから目的のデータセットを表すテーブルを作成し、Crystalを使用してそれを直接照会することができます。ストアドプロシージャまたは高度なキューを使用して、必要に応じてデータを更新するだけです。

リフレッシュされたデータベースソースのいずれかのマテリアライズドビューが別の方法です。

編集:はい、データベースリンクを使用すると、リソースを集中的に使用でき、見た種類の問題が発生します。これは今まで働いたのか、それとも解決策が必要な新しい要件があるのでしょうか? 変更されたものを使用していた場合は、 これが新しい場合は、私が示唆しているように、私は謙虚に別のアプローチを提案します。

+0

SQLステートメントとして機能の個々の部分を問題なく実行できます。関数内でselectの一部としてビューを含まないときに関数を実行することができます(私はこのようにして自分の基準を緩和します)。私はマテリアライズドビューがうまくいくと思います。作品が全体ではなく動作するのは奇妙に思えます。私はリンクを持たないビューに対してこれを実行すると、関数okを実行することもできます(これは、プロダクションではなく、設定されたdevにあります)。この機能は、リンクが関与していなくても即座に実行され、リンクが関与していないときに即座にハングします – user1023993

関連する問題