2

Oracle がパラメータ化された SQL クエリの失敗をログに記録すると、「?」が表示されます。パラメータの代わりに、つまりパラメータを置き換える前のクエリです。例えば、

"SELECT * FROM table where col like '?'" 
SQL state [99999]; error code [29902]; 
ORA-29902: error in executing ODCIIndexStart() routine ORA-20000: 
  Oracle Text error: DRG-50901: 
  text query parser syntax error on line 1, column 48

パラメータ値を表示するようにロギングを変更する方法はありますか? 上記の情報は、実際の解析の問題が何であったかがわからない限り、まったく役に立ちません。

一般に、パラメータ化されたクエリ エラーでパラメータを表示するように Oracle でログを設定する方法はありますか?

4

1 に答える 1

2

Oracle 10g 以降を実行していて、V$ ビューにアクセスできる場合は、v$sql_bind_capture を使用して値を確認できます。

次のクエリは Burleson のサイトから借用したものです。

SELECT 
   a.sql_text, 
   b.name, 
   b.position, 
   b.datatype_string, 
   b.value_string 
FROM
   v$sql_bind_capture b,
   v$sqlarea          a
WHERE
   b.sql_id = 'The SQL ID'
AND 
   b.sql_id = a.sql_id;
于 2012-10-02T21:35:28.333 に答える