SQL문 캡처 프로세스에는 두 단계가 포함됩니다.
특정 등록 정보의 값을 설정한 후 응용프로그램을 실행하는 것입니다. 캡처 프로세스에서
먼저 등록 정보 captureMode를 ON으로 설정한 후
응용프로그램을 실행합니다. pureQuery는 SQL문과 스택 추적을 나열하는 파일을
작성합니다. 이 파일은 pureQueryXML 파일이라고 하며 .pdqxml
또는 .xml로 확장자를 지정할 수 있습니다.
captureMode를
ON으로 설정하고 pureQuery가 아닌 API 응용프로그램을 실행하는 경우, 정적으로 실행하려는 SQL문을 포함하는 모든 논리 경로를
성공적으로 실행해야 합니다. pureQuery는
SQL문이 성공적으로 실행되는 경우에만 SQL문을 캡처합니다.
일반 주의 사항
- Connection.prepareStatement() 메소드로는
SQL문이 캡처되지 않습니다.
- SQL을 정적으로 실행하기 위해
응용프로그램이 pureQuery에 대해 작업할 때 이 응용프로그램이 올바르게 작동하지 않는
경우가 있을 수 있습니다. SQL을 캡처할 때 pureQuery Log 유틸리티를
사용하십시오. 이 유틸리티가 로그하는 메시지를 사용하여 정적 SQL에 대한 응용프로그램의
호환성 레벨을 판별할 수 있습니다. 정적 SQL에 대해 응용프로그램을 호환 불가능하게 만들 수 있는
일부 상황에 대한 설명은 pureQuery가 아닌 API 응용프로그램이 SQL문을 정적으로 실행할 때 문제점의 원인이 될 수 있는 상황 또는 코딩 사례를 참조하십시오.
- 응용프로그램이 명령문을 정적으로 실행할 수 있도록 pureQuery의 어노테이션이 있는 메소드가 호출하는
SQL문을 캡처하는 것은 바람직하지 않습니다.
이와 같이 하면 결과적으로 성능이
준최적 상태가 될 수 있으며 이기종 일괄처리와 같은 특정 기능은
SQL 오류를 발생시킬 수 있습니다.
- pureQuery Runtime은 BEGIN ATOMIC을 시작하는 복합 명령문을 제외하고
복합 명령문을 정적으로 실행하는 것을 지원하지 않습니다.
사용자가 복합 명령문을 캡처할 때, pureQuery는 pureQueryXML 파일에서
이 명령문 각각의 isBindable 속성을 false로 설정합니다.
이 속성은 명령문을 바인드할 것인지 여부를 StaticBinder 유틸리티에 알립니다.
BEGIN
ATOMIC 복합 명령문의 경우 isBindable를 true로 설정할 수 있습니다. StaticBinder 유틸리티가
명령문을 바인드할 수 없는 경우 오류를 로그합니다.
- pureQuery Runtime은 특정 XML 제어 문자에 맵핑될 수 있는
16진수 문자를 포함하는 SQL문을 캡처하는 것을 지원하지
않습니다. 이러한 문자는 0x32(16진수) 이하의 범위에
있습니다.
SQL에서는 이러한 문자가 드물게 발생합니다. 해당 문자는
일반적이지 않은 소스에서 생성된 문자열 리터럴 값을 사용할 때
발생할 수 있습니다. 이러한 문자를 캡처할 수 있지만 이후에
캡처 파일을 처리하는 중에 오류가 발생할 수 있습니다. SQL에 이러한 리터럴 값을 사용해야 하는 경우,
sqlLiteralSubstitution 등록 정보를 사용하여
캡처 파일 처리 중에 발생할 수 있는 오류를 피할 수 있습니다.
sqlLiteralSubstitution 등록 정보는 pureQuery
Runtime에 모든 리터럴을 캡처된 SQL의 매개변수로 대체하도록 지시합니다.
- DB2® 데이터베이스에 대해 실행되는
SQL문을 캡처할 때 캡처 프로세스는 DB2 특수 레지스터에 대한 변경사항을
로그합니다. 일반적으로 사용되고 SQL문에 의해 리턴되는 데이터에 영향을 미칠 수 있는
특수 레지스터에 대한 변경사항도 pureQueryXML 파일에 캡처됩니다.