2016-05-31 3 views
-1

私は、テーブルをいくつかのデータ辞書ビューに結合するクエリを持っています。クエリは正しく動作することがありますが、実行に時間がかかりすぎることがあります。そうすると、100回もう一度キャンセルしても応答しません。Oracleクエリのさまざまなパフォーマンス

クエリは次のとおりです。

SELECT 
     /*+ PARALLEL(auto) */ 
    t.id 
    FROM table1 t , 
     (SELECT  /*+ PARALLEL(auto) */ DISTINCT r.INDEX_VALUE AS id, 
      r.LOCAL_ROWID, 
      r.REMOTE_ROWID 
     FROM DBA_COMPARISON_COLUMNS c, 
      DBA_COMPARISON_ROW_DIF r, 
      DBA_COMPARISON_SCAN s 
     WHERE R.SCAN_ID  = S.SCAN_ID 
     AND c.COMPARISON_NAME = 'CMP_name' 
     AND s.root_SCAN_ID = '{scan_id}' 
     AND r.STATUS   = 'DIF' 
     ) dif 
     WHERE t.id = dif.id; 

誰もがこの問題で私を助けてもらえますか?

+5

このような質問に答えることは不可能です。クエリが機能しない場合は、クエリとそのエラーを共有してください。 – Mureinik

+0

この質問はなぜ2回アップアップされますか?この質問には、見るためのコードさえありません。 –

+0

クエリにエラーがありません。実行すると時間がかかりすぎてキャンセルします。 –

答えて

1

あり、クエリが実行され続ける理由100の理由が依存する(これらに限定されない)、データベース、同じテーブルにデータを書き込む他のテーブル、テーブルのロックなどができ

は、V $ SESSION_LONGOPSをチェック拳必要がありますこの問合せが存在するかどうか、および他の詳細が表示されます。

一般的に以下のトラブルシューティングに使用します。あなたの質問がそこにあるかどうか確認することができます。そうならば、sidを見つけて

select sesion.sid,sql_text 
from v$sqltext sqltext, v$session sesion 
where sesion.sql_hash_value = sqltext.hash_value 
and sesion.sql_address = sqltext.address 
and sesion.username is not null 
order by sqltext.piece; 
1

があなたのクエリがDBMS_COMPARISONからの出力を表示するビューに基づいているなどのロックを確認するためのビューにそれをバックトラック。したがって、結果セットのサイズは比較によって生成されたデルタに応じて変化します。ドリフトが多い場合は、行の違いを照会するため、デルタが非常に大きくなる可能性があります。

その他の潜在的な問題:DBA_COMPARISON_COLUMNSを他の表に結合しない問合せ。おそらくCOMPARISON_NAMEを結合条件に含める必要があります。

FROM DBA_COMPARISON_COLUMNS c, 
     DBA_COMPARISON_ROW_DIF r, 
     DBA_COMPARISON_SCAN s 
    WHERE c.COMPARISON_NAME = 'CMP_name' 
    AND r.COMPARISON_NAME = c.COMPARISON_NAME 
    AND s.COMPARISON_NAME = c.COMPARISON_NAME 
    AND R.SCAN_ID  = S.SCAN_ID 
    AND s.root_SCAN_ID = '{scan_id}' 
    AND r.STATUS   = 'DIF' 
関連する問題