2012-09-21 2 views
2

오라클이 매개 변수화 된 SQL 쿼리를 로그에 기록 할 때 "?" 매개 변수 대신에, 즉 매개 변수를 대체하기 전에 질의를 사용합니다. 그것은 파라미터 값 도시하므로, 예를 들어, Oracle : 오류시 매개 변수 표시

"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에 로그를 설정하는 방법이 있습니까?

답변

2

Oracle 10g 이상을 실행 중이고 V $보기에 액세스 할 수있는 경우 v $ sql_bind_capture를 사용하여 값을 볼 수 있습니다.

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; 
:

다음 쿼리는 Burleson의 사이트에서 빌려

관련 문제