GeneratePureQueryXml 유틸리티는 SQL문과 명령문에 대한 정보를 포함하는 파일을 읽고 pureQueryXML 파일을 작성합니다. 파일 작성 후 Configure 유틸리티를 사용하여 pureQuery Runtime에 사용할 파일을 준비하십시오. pureQueryXML 파일 구성 후 StaticBinder 유틸리티를 사용하여 SQL문을 포함하는 DB2® 패키지를 구성된 pureQueryXML 파일에서 작성하고 바인드하십시오.
(1) >>-------java--java com.ibm.pdq.tools.GeneratePureQueryXml------> >-- -username--user-ID-- -password--password-- -url--JDBC-URL---> >--+---------------------------------------------+--------------> | .-com.ibm.db2.jcc.DB2Driver-. | '- -driverName--+-JDBC-driver---------------+-' >-- -pureQueryXml--fileName-- -inputSql--fileName---------------> >--+------------------------------------------+-----------------> | (2).- - - ------------. | '- -commentStart------+-commentIndicator-+-' >--+---------------------------------------+--------------------> | .-NOT_SET-. | '- -sqlLiteralSubstitution--+-DISABLE-+-' '-ENABLE--' >--+-------------------------------------+----------------------> | .-;---------. | '- -statementDelimiter -+-delimiter-+-' >--+------------------------------------------------------+-----> | .-HOLD_CURSORS_OVER_COMMIT-. | '- -resultSetHoldability -+-CLOSE_CURSORS_AT_COMMIT--+-' >--+----------------------------------------------+-------------> | .-CONCUR_READ_ONLY-. | '- -resultSetConcurrency--+-CONCUR_UPDATABLE-+-' >--+--------------------------------------------+---------------> | .-TYPE_FORWARD_ONLY-----. | '- -resultSetType--+-TYPE_SCROLL_SENSITIVE-+-' '-TYPE_SCROLL_SENSITIVE-' >--+-----------------------+--+--------+----------------------->< | (3) | '- -help-' '-| Trace options |-----'
다이어그램에서 사용되는 규칙을 이해하려면 구문 다이어그램 읽는 방법을 참조하십시오.
SQL 스크립트 파일의 형식에 대한 정보는 GeneratePureQueryXml 유틸리티에서 사용되는 SQL 스크립트 파일의 형식을 참조하십시오.
SQL문이 입력 파일에 여러 번 나타나는 경우 SQL문은 출력 pureQueryXML 파일에 한 번만 표시됩니다. 중복 SQL문이 판별되는 방법에 대한 정보는 SQL 파일의 중복 SQL문 판별을 참조하십시오.
이 옵션은 입력 파일이 XML 파일인 경우 지원되지 않습니다. 지정된 옵션이 무시된다는 경고 메시지가 표시됩니다.
다음 목록은 지원되는 값을 설명합니다.
출력 pureQueryXML 파일의 SQL 리터럴 대체 속성 값이 사용 안함으로 설정됩니다.
유틸리티는 SQL 리터럴 대체 프로세스 중에 작성된 중복 SQL문을 제거합니다.
출력 pureQueryXML 파일의 SQL 리터럴 대체 속성 값은 SET 또는 NOT SET입니다.
출력 pureQueryXML 파일은 SQL 리터럴 대체 속성을 설정하지 않고 작성됩니다.
pureQuery Runtime이 pureQueryXML 파일에서 SQL문을 캡처할 때 파일의 SQL 리터럴 대체 설정은 명령문이 캡처되었을 때 pureQuery Runtime 특성 sqlLiteralSubstitution의 값입니다.
pureQuery Runtime SQL 리터럴 대체에 대한 정보는 sqlLiteralSubstitution 특성을 참조하십시오.
pureQueryXML 파일이 병합될 때 SQL 리터럴 대체 속성에 대한 정보는 Merge 유틸리티의 내용을 참조하십시오.
입력 파일이 InfoSphere Optim Query Workload Tuner XML 파일인 경우 이 옵션은 지원되지 않습니다. 지정된 옵션이 무시된다는 경고 메시지가 표시됩니다.
기본값은 HOLD_CURSORS_OVER_COMMIT입니다.
SQL 스크립트 파일에서, SQL문 바로 앞에 오는 주석 행에 유지 가능성을 지정하여 파일의 특정 SQL문에 대해 유지 가능성 값을 겹쳐쓸 수 있습니다.
z/OS용 DB2의 Query Workload Tuner XML 파일의 경우 SQL문의 초기 준비를 위한 결과 세트 유지 가능성은 파일에 저장됩니다. 결과 세트 유지 가능성 정보가 파일에 있는 경우 유틸리티는 출력 pureQueryXML 파일에 있는 SQL문의 해당 값을 사용합니다.
InfoSphere Optim Query Workload Tuner XML 파일에 있는 SQL문의 결과 세트 유지 가능성에 대한 정보는 출력 pureQueryXML 파일에 대한 참고사항의 내용을 참조하십시오.
기본값은 CONCUR_READ_ONLY입니다.
SQL 스크립트 파일에서, SQL문 바로 앞에 오는 주석 행에 동시성을 지정하여 SQL문의 특정 SQL문에 대해 동시성 값을 겹쳐쓸 수 있습니다.
InfoSphere Optim Query Workload Tuner XML 파일에 있는 SQL문의 결과 세트 동시성 설정에 대한 정보는 출력 pureQueryXML 파일에 대한 참고사항의 내용을 참조하십시오.
기본값은 TYPE_FORWARD_ONLY입니다. SQL 스크립트 파일에서, SQL문 바로 앞에 오는 주석 행에 결과 세트 값을 지정하여 SQL문의 특정 SQL문에 대해 결과 세트 값을 겹쳐쓸 수 있습니다.
InfoSphere Optim Query Workload Tuner XML 파일에 있는 SQL문의 결과 세트 유형 설정에 대한 정보는 출력 pureQueryXML 파일에 대한 참고사항의 내용을 참조하십시오.
>>-+------------------------+--+---------------------------+--->< '- -traceFile--file-name-' | .-OFF-----. | '- -traceLevel--+-ALL-----+-' +-SEVERE--+ +-WARNING-+ +-INFO----+ +-CONFIG--+ +-FINE----+ +-FINER---+ '-FINEST--'
정보가 일치하지 않는 경우, pureQuery 클라이언트 최적화는 pureQuery Runtime executionMode 특성이 STATIC으로 설정되었거나 pureQuery Runtime capturedOnly 특성이 TRUE로 설정되었을 때 애플리케이션에서 실행한 명령문과 SQL문을 일치시키지 않습니다.
Configure 유틸리티로 pureQueryXML 파일을 구성하는 경우 -groupSQLBySpecialRegisters 옵션을 지정하여 특수 레지스터 설정에 따라 파일의 SQL문을 그룹화할 수 있습니다. 또한 -optionsFileForBind 옵션을 지정하여 특수 레지스터 설정을 기반으로 바인드 옵션을 포함하는 샘플 StaticBinder 옵션 파일을 생성할 수도 있습니다. 구성 옵션에 대한 정보는 Configure 유틸리티의 내용을 참조하십시오.
pureQuery Runtime에서 추적하고 기록하는 특수 레지스터 정보에 대한 내용은 pureQuery 클라이언트 최적화에 의한 DB2 특수 레지스터 변경사항 추적을 참조하십시오.
유틸리티가 SQL문의 시간소인을 찾지 않는 경우 유틸리티는 현재 날짜 및 시간을 사용합니다.
z/OS용 DB2의 XML 파일의 경우 SQL문의 초기 준비를 위한 결과 세트 유지 가능성은 파일에 저장됩니다. 결과 세트 유지 가능성 정보가 파일에 있는 경우 유틸리티는 출력 pureQueryXML 파일에 있는 SQL문의 해당 값을 사용합니다.
pureQuery Runtime은 SQL문을 실행하는 방법을 제어할 때 SQL문 및 명령문의 커서 속성을 고려합니다. 예를 들어, pureQuery Runtime을 구성하여 SQL문을 정적으로 실행할 수 있습니다. pureQueryXML 파일의 명령문 및 속성이 애플리케이션의 명령문 및 속성과 일치하지 않는 경우 pureQuery Runtime은 명령문을 정적으로 실행하지 않습니다.
값 REMOVE 또는 MARK_INVALID를 지정하여 -statementBindError 옵션으로 StaticBinder 유틸리티를 실행할 수 있습니다. StaticBinder 유틸리티는 바인드 프로세스 중에 SQL 오류를 리턴하는 SQL문을 건너뜁니다.
pureQuery 클라이언트 최적화를 사용하는 애플리케이션이 SQL문을 정적으로 실행하거나 캡처 전용 모드로 실행하도록 구성되고 GeneratePureQueryXml 유틸리티에 의해 작성된 pureQueryXML 파일을 사용하는 경우, 애플리케이션에서 실행되는 명령문은 세 가지 기능 중 하나라도 사용하면 SQL문의 텍스트가 동일해도 정적으로 실행되지 않습니다.
java com.ibm.pdq.tools.GeneratePureQueryXml -username db2admin –password mypass –url jdbc:db2://localhost:50000/mydb -sqlLiteralSubstitution ENABLE –pureQueryXml "C:\statements.pdqxml" –inputSql "C:\mystatements.sql"
SQL 파일의 다음 두 항목은 동일하다고 간주됩니다. SQL문의 경우 선행 및 후미 공백만 다릅니다.
-- resultSetType=TYPE_FORWARD_ONLY -- resultSetConcurrency=CONCUR_READ_ONLY SELECT * FROM EMPLOYEE ; -- resultSetType=TYPE_FORWARD_ONLY -- resultSetConcurrency=CONCUR_READ_ONLY SELECT * FROM EMPLOYEE ;
SQL 파일의 다음 두 항목은 동일하다고 간주되지 않습니다. SQL문 내의 공백 양이 다릅니다.
-- resultSetType=TYPE_FORWARD_ONLY -- resultSetConcurrency=CONCUR_READ_ONLY SELECT * FROM EMPLOYEE; -- resultSetType=TYPE_FORWARD_ONLY -- resultSetConcurrency=CONCUR_READ_ONLY SELECT * FROM EMPLOYEE;
다른 커서 속성이 지정되었으므로 SQL 파일의 두 항목은 동일하지 않습니다.
-- resultSetType=TYPE_FORWARD_ONLY -- resultSetConcurrency=CONCUR_READ_ONLY SELECT * FROM EMPLOYEE; -- resultSetType=TYPE_SCROLL_SENSITIVE -- resultSetConcurrency=CONCUR_READ_ONLY SELECT * FROM EMPLOYEE;
SELECT * FROM EMPLOYEE WHERE EMPNO = '000010' SELECT * FROM EMPLOYEE WHERE EMPNO = '000020' SELECT * FROM EMPLOYEE WHERE EMPNO = '000030'ENABLE로 설정된 sqlLiteralSubstitution 옵션의 값으로 GeneratePureQueryXml 유틸리티를 실행하는 경우 리터럴 값이 매개변수 표시문자로 대체되고 대체로 작성된 중복이 제거됩니다. 결과는 pureQueryXML 파일에 기록되는 단일 SQL문입니다.
SELECT * FROM EMPLOYEE WHERE EMPNO = ?