2009-07-31 14 views
1

ここに問題があります。私はDB2 v8.1を使用しています。ここでは、私が照会またはオープンできないこの特定の表があります。データを照会またはサンプリングしようとするたびに、長い時間の後にタイムアウト/デッドロックの問題が発生します。誰もこのテーブルを使用していないので、デッドロックすることはできません。とにかく私はこのテーブルを回復することができますか?ありがとう。大きなテーブルを照会または開くときにDB2がハングする

SELECT * FROM YOUR_TABLE 
FETCH FIRST 10 ROWS ONLY 
WITH UR 

それがテーブルから10行を取得します。この方法:

答えて

4

は、あなただけのすべての最終的なロックを迂回するためにUNCOMMITED READ分離レベルで選択を行うことができます。それが機能する場合は、FETCH FIRST句を使用せずにもう一度やり直してください。他の接続によって効果的にロックされています。

また、単に統計がある場合は、ここで犯人かもしれないすべてのそれらの効率的な、しかし、多くの場合、高価なHASH JOIN &友人なし、FULL SCAN & NESTED LOOPSを活性化するために

SET CURRENT QUERY OPTIMIZATION 0 

を発行することにより、changing the optimisation levelで試すことができます計算が間違っています。

編集

コメントで、私はあなたの最善の策は、あなたのデータベースをチェックするdb2dartであろうと思います。

+0

こんにちは、これは私がそれを実行するときに得たエラーです。 DBA2191E SQL実行エラー。 com.ibm.db.DataException:A データベース・マネージャー・エラーが発生しました。 [IBM] [CLIドライバ] [DB2/NT] SQL0911Nデッドロックまたはタイムアウトの が原因で、現在のトランザクションがロールバックされました。理由コード "68"。 SQLSTATE = 40001 –

+0

"68"はタイムアウトを意味し、 "2"はデッドロックを意味します。 (ニーモニック:68> 2& "timeout"> "deadlock") –

+0

リクエストの最後に "FOR READ ONLY"を試してみませんか? –

関連する問題