GeneratePureQueryXml 유틸리티

GeneratePureQueryXml 유틸리티는 입력 파일에서 pureQueryXML 파일을 생성합니다. 입력 파일은 명령문 및 커서 속성 정보 또는 InfoSphere® Optim™ Query Workload Tuner XML 파일을 포함하는 SQL 스크립트 파일일 수 있습니다.

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 |-----'               

주:
  1. 임의의 순서로 옵션을 지정할 수 있습니다.
  2. 기본값은 이중 대시(--)입니다.
  3. 구문의 경우 해당 옵션의 설명을 참조하십시오.

다이어그램에서 사용되는 규칙을 이해하려면 구문 다이어그램 읽는 방법을 참조하십시오.

옵션에 대한 설명

-username user-ID
user-ID는 데이터베이스에 대한 인증에 사용할 사용자 ID를 지정합니다.
-password password
데이터베이스에 대한 인증에 사용할 암호를 지정합니다.
-url JDBC-URL
데이터베이스와의 연결을 설정하기 위해 사용할 JDBC URL을 지정합니다.
-driverName JDBC-driver
데이터베이스와의 연결을 설정하기 위해 사용할 JDBC 드라이버의 완전한 이름을 지정합니다. 기본값은 IBM® Data Server Driver for JDBC and SQLJ에 대한 드라이버인 com.ibm.db2.jcc.DB2Driver입니다.
-pureQueryXml file
출력 pureQueryXML 파일의 절대 경로 또는 상대 경로를 지정합니다.
-inputSql file
확장자가 .sql인 SQL 스크립트 파일 또는 확장자가 .xml인 XML 파일의 절대 또는 상대적 경로를 지정합니다.

SQL 스크립트 파일의 형식에 대한 정보는 GeneratePureQueryXml 유틸리티에서 사용되는 SQL 스크립트 파일의 형식을 참조하십시오.

XML 파일이 지정되면 파일은 유효한 InfoSphere Optim Query Workload Tuner 파일이어야 합니다. XML 파일이 유효하지 않은 경우 오류가 보고됩니다. Query Workload Tuner 파일에 대한 정보는 InfoSphere Optim Query Workload Tuner 문서를 참조하십시오. SQL문을 캡처할 때 InfoSphere Optim Query Workload Tuner가 다음 기능을 지원합니다.
  • Linux, UNIX 및 Windows용 DB2 데이터베이스의 경우 패키지 캐시에서 SQL문을 캡처할 수 있습니다.
  • z/OS®용 DB2 데이터베이스의 경우 명령문 캐시에서 SQL문을 캡처할 수 있습니다. 캡처 프로세스에서 실행한 동적 쿼리 제외 옵션을 사용하도록 설정하여 InfoSphere Optim Query Workload Tuner에서 실행하는 SQL문을 제외할 수 있습니다.

SQL문이 입력 파일에 여러 번 나타나는 경우 SQL문은 출력 pureQueryXML 파일에 한 번만 표시됩니다. 중복 SQL문이 판별되는 방법에 대한 정보는 SQL 파일의 중복 SQL문 판별을 참조하십시오.

-commentStart commentIndicator
SQL 스크립트 파일의 경우 주석행을 표시할 라인의 시작에 표시되는 문자 조합을 지정합니다. 주석행은 주석 뒤에 바로 오는 SQL문에 적용되는 명령문 커서 속성을 포함할 수 있습니다. 기본값은 이중 대시(--)입니다.시작 및 종료 주석 문자(/* 및 */)는 이 옵션에 지원되지 않습니다.

이 옵션은 입력 파일이 XML 파일인 경우 지원되지 않습니다. 지정된 옵션이 무시된다는 경고 메시지가 표시됩니다.

-sqlLiteralSubstitution ENABLE|DISABLE|NOT_SET
GeneratePureQueryXml 유틸리티가 SQL문의 리터럴 값을 매개변수 표시문자로 대체하는지 여부를 지정합니다. 기본값은 NOT_SET이며 리터럴 값이 SQL문에서 대체되지 않습니다. SQL 리터럴 대체 프로세스는 pureQuery Runtime이 SQL 리터럴 대체를 사용할 수 있는 SQL문을 캡처할 때 발생하는 대체 프로세스와 동일합니다.

다음 목록은 지원되는 값을 설명합니다.

DISABLE
유틸리티가 리터럴 대체를 수행하지 않음을 지정합니다. SQL문이 수정되지 않습니다.

출력 pureQueryXML 파일의 SQL 리터럴 대체 속성 값이 사용 안함으로 설정됩니다.

ENABLE
유틸리티가 SQL문의 리터럴을 매개변수 표시문자로 대체하도록 지정합니다. SQL 리터럴은 유틸리티가 리터럴 대체가 SQL문의 결과에 영향을 미칠 수 있다고 판별하는 경우 대체되지 않습니다. SQL 리터럴 대체를 수행할 때 주석이 명령문에서 제거됩니다. SQL 리터럴 대체가 수행되는 SQL문의 경우 선행 및 후미 공백 문자를 포함하여 다중의 공백 문자는 단일의 공백 문자로 대체됩니다.

유틸리티는 SQL 리터럴 대체 프로세스 중에 작성된 중복 SQL문을 제거합니다.

출력 pureQueryXML 파일의 SQL 리터럴 대체 속성 값은 SET 또는 NOT SET입니다.

NOT_SET
리터럴 대체가 이 파일에 대해 수행되지 않음을 지정합니다. 이는 기본값입니다.

출력 pureQueryXML 파일은 SQL 리터럴 대체 속성을 설정하지 않고 작성됩니다.

pureQuery Runtime이 pureQueryXML 파일에서 SQL문을 캡처할 때 파일의 SQL 리터럴 대체 설정은 명령문이 캡처되었을 때 pureQuery Runtime 특성 sqlLiteralSubstitution의 값입니다.

pureQuery Runtime SQL 리터럴 대체에 대한 정보는 sqlLiteralSubstitution 특성을 참조하십시오.

pureQueryXML 파일이 병합될 때 SQL 리터럴 대체 속성에 대한 정보는 Merge 유틸리티의 내용을 참조하십시오.

-statementDelimiter delimiter
SQL 스크립트 파일에서 명령문을 구분하는 데 사용되는 문자 조합을 지정합니다. 기본 문자는 세미콜론(;)입니다.

입력 파일이 InfoSphere Optim Query Workload Tuner XML 파일인 경우 이 옵션은 지원되지 않습니다. 지정된 옵션이 무시된다는 경고 메시지가 표시됩니다.

-resultSetHoldability holdability
파일의 모든 명령문에 적용되도록 결과 세트 유지 가능성을 지정하십시오. holdability의 값은 다음 중 하나입니다.
  • CLOSE_CURSORS_AT_COMMIT는 결과 세트 유지 가능성을 커미트 시 닫기로 설정합니다.이 값은 JDBC 값 java.sql.ResultSet.CLOSE_CURSORS_AT_COMMIT를 설정합니다.
  • HOLD_CURSORS_OVER_COMMIT는 결과 세트 유지 가능성을 커미트 동안 커서 유지로 설정합니다. 이 값은 JDBC 값 java.sql.ResultSet.HOLD_CURSORS_OVER_COMMIT를 설정합니다.

기본값은 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 파일에 대한 참고사항의 내용을 참조하십시오.

-resultSetConcurrency concurrency
모든 명령문에 적용되는 결과 세트 동시성을 지정합니다. 동시성의 값은 다음 중 하나입니다.
  • CONCUR_READ_ONLY는 커서 동시성을 읽기 전용으로 설정합니다.
  • CONCUR_UPDATABLE은 커서 동시성을 업데이트 가능으로 설정합니다.

기본값은 CONCUR_READ_ONLY입니다.

SQL 스크립트 파일에서, SQL문 바로 앞에 오는 주석 행에 동시성을 지정하여 SQL문의 특정 SQL문에 대해 동시성 값을 겹쳐쓸 수 있습니다.

InfoSphere Optim Query Workload Tuner XML 파일에 있는 SQL문의 결과 세트 동시성 설정에 대한 정보는 출력 pureQueryXML 파일에 대한 참고사항의 내용을 참조하십시오.

-resultSetType type
모든 명령문에 적용되는 결과 세트 유형을 지정합니다. 유형의 값은 다음 중 하나입니다.
  • TYPE_FORWARD_ONLY는 결과 세트 유형을 앞으로만으로 설정합니다.
  • TYPE_SCROLL_SENSITIVE는 결과 세트 유형을 스크롤 구별함으로 설정합니다.
  • TYPE_SCROLL_INSENSITIVE는 결과 세트 유형을 스크롤 구별 안 함으로 설정합니다.

기본값은 TYPE_FORWARD_ONLY입니다. SQL 스크립트 파일에서, SQL문 바로 앞에 오는 주석 행에 결과 세트 값을 지정하여 SQL문의 특정 SQL문에 대해 결과 세트 값을 겹쳐쓸 수 있습니다.

InfoSphere Optim Query Workload Tuner XML 파일에 있는 SQL문의 결과 세트 유형 설정에 대한 정보는 출력 pureQueryXML 파일에 대한 참고사항의 내용을 참조하십시오.

Trace options
메시지를 로그할 파일 및 로그할 정보 레벨을 지정할 수 있습니다.
구문 도표 읽기시각적 구문 도표 생략
>>-+------------------------+--+---------------------------+---><
   '- -traceFile--file-name-'  |               .-OFF-----. |   
                               '- -traceLevel--+-ALL-----+-'   
                                               +-SEVERE--+     
                                               +-WARNING-+     
                                               +-INFO----+     
                                               +-CONFIG--+     
                                               +-FINE----+     
                                               +-FINER---+     
                                               '-FINEST--'     

-traceFile file-name
조작에 대한 정보를 로그하는데 사용하려는 절대 또는 상대 경로 및 파일 이름을 지정합니다.
파일이 이미 존재한다면 pureQuery는 새 메시지를 파일의 기존 컨텐츠에 추가합니다. 기본적으로, 엔트리는 System.err에 기록됩니다.
-traceLevel OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST|ALL
로그할 정보 유형을 지정합니다. 기본 레벨은 OFF입니다. 로그 엔트리를 기록할 파일을 지정하지 않고 이 옵션을 OFF가 아닌 다른 값으로 설정하는 경우, 엔트리는 System.err에 기록됩니다.
-help
요약 사용 정보를 표시합니다.

출력 pureQueryXML 파일에 대한 참고사항

다음 목록에는 pureQueryXML 파일에 대한 사용 정보가 포함되어 있습니다.
  • SQL 스크립트 파일 또는 InfoSphere Optim Query Workload Tuner XML 파일에서 pureQueryXML 파일을 작성할 때 각 SQL문에 대해 다음 기준이 충족되는지 확인하십시오.
    • 파일의 SQL문 텍스트가 애플리케이션이 실행한 SQL문과 일치합니다. 명령문의 공백과 대문자 표기가 일치해야 합니다.
    • 파일의 SQL문에 대한 결과 세트 유지 가능성, 동시성 및 유형 설정이 애플리케이션에서 발행한 SQL문에 대한 설정과 일치합니다.

    정보가 일치하지 않는 경우, pureQuery 클라이언트 최적화는 pureQuery Runtime executionMode 특성이 STATIC으로 설정되었거나 pureQuery Runtime capturedOnly 특성이 TRUE로 설정되었을 때 애플리케이션에서 실행한 명령문과 SQL문을 일치시키지 않습니다.

    다음 항목은 입력 파일이 Query Workload Tuner XML 파일인 경우 적용됩니다.
    • XML 파일은 SQL문에 대한 일부 특수 레지스터 정보를 포함합니다. GeneratePureQueryXml 유틸리티가 XML 파일에서 pureQueryXML 파일을 생성하는 경우 특수 레지스터 정보는 pureQueryXML 파일에 메타데이터로 포함됩니다. pureQuery Runtime 및 Query Workload Tuner가 캡처한 특수 레지스터 정보 간에 차이가 있습니다. GeneratePureQueryXml은 pureQuery Runtime이 일반적으로 캡처하는 특수 레지스터 정보를 포함합니다.

      Configure 유틸리티로 pureQueryXML 파일을 구성하는 경우 -groupSQLBySpecialRegisters 옵션을 지정하여 특수 레지스터 설정에 따라 파일의 SQL문을 그룹화할 수 있습니다. 또한 -optionsFileForBind 옵션을 지정하여 특수 레지스터 설정을 기반으로 바인드 옵션을 포함하는 샘플 StaticBinder 옵션 파일을 생성할 수도 있습니다. 구성 옵션에 대한 정보는 Configure 유틸리티의 내용을 참조하십시오.

      pureQuery Runtime에서 추적하고 기록하는 특수 레지스터 정보에 대한 내용은 pureQuery 클라이언트 최적화에 의한 DB2 특수 레지스터 변경사항 추적을 참조하십시오.

    • SQL문을 pureQueryXML 파일에 추가하기 전에 유틸리티는 이에 대한 메타데이터를 수집하기 위한 명령문을 준비합니다. 현재 스키마 특수 레지스터의 값이 XML 파일에 있는 경우 유틸리티는 준비를 수행할 때 현재 스키마 특수 레지스터의 값을 사용합니다.
    • 유틸리티가 XML 파일의 SQL문이 정적으로 실행됨을 판별하는 경우 명령문은 출력 pureQueryXML 파일에 포함되지 않습니다.
    • GeneratePureQueryXml 유틸리티는 일부 통계를 XML 파일에서 출력 pureQueryXML 파일로 복사합니다. 입력 XML 파일의 통계는 데이터베이스의 유형 및 버전과 InfoSphere Optim Query Workload Tuner의 버전에 따라 다릅니다. 이러한 통계는 pureQueryXML 파일의 SQL문이 바인드되는 방법 또는 pureQuery Runtime이 애플리케이션에서 실행된 명령문과 SQL문을 일치시키는 방법에 영향을 미치지 않습니다.

      유틸리티가 SQL문의 시간소인을 찾지 않는 경우 유틸리티는 현재 날짜 및 시간을 사용합니다.

    • 커서 속성은 XML 파일에서 지정할 수 없습니다. GeneratePureQueryXml 유틸리티 옵션 -resultSetType, -resultSetHoldability 및 -resultSetConcurrency로 커서 속성을 지정할 수 있습니다. 옵션은 XML 파일의 모든 SQL문에 적용됩니다.

      z/OS용 DB2의 XML 파일의 경우 SQL문의 초기 준비를 위한 결과 세트 유지 가능성은 파일에 저장됩니다. 결과 세트 유지 가능성 정보가 파일에 있는 경우 유틸리티는 출력 pureQueryXML 파일에 있는 SQL문의 해당 값을 사용합니다.

      pureQuery Runtime은 SQL문을 실행하는 방법을 제어할 때 SQL문 및 명령문의 커서 속성을 고려합니다. 예를 들어, pureQuery Runtime을 구성하여 SQL문을 정적으로 실행할 수 있습니다. pureQueryXML 파일의 명령문 및 속성이 애플리케이션의 명령문 및 속성과 일치하지 않는 경우 pureQuery Runtime은 명령문을 정적으로 실행하지 않습니다.

    • 출력 pureQueryXML 파일의 SQL문에 정적으로 실행할 다른 바인드 옵션이 필요하지 않은 경우 워크벤치의 pureQueryXML 편집기를 사용하여 SQL문을 명령문 세트에 그룹화하십시오. 그런 다음 StaticBinder 유틸리티를 실행할 때 명령문 세트에 다른 바인드 옵션을 지정할 수 있습니다.

      REMOVE 또는 MARK_INVALID를 지정하여 -statementBindError 옵션으로 StaticBinder 유틸리티를 실행할 수 있습니다. StaticBinder 유틸리티는 바인드 프로세스 중에 SQL 오류를 리턴하는 SQL문을 건너뜁니다.

  • SQL문을 정적으로 실행하기 위해 출력 pureQueryXML 파일을 pureQuery 클라이언트 최적화에 직접 사용할 수 없습니다. StaticBinder 유틸리티를 사용하기 전에 클라이언트 최적화에 사용 가능하도록 Configure 유틸리티를 사용하여 pureQueryXML 파일을 수정해야 합니다.
  • 출력 pureQueryXML 파일에는 pureQuery 클라이언트 최적화를 사용하는 애플리케이션에서 SQL문을 캡처할 때 작성되는 pureQueryXML 파일에 사용 가능한 특수 레지스터 정보 및 스택 추적 정보와 같은 애플리케이션 실행 정보가 포함되어 있지 않습니다.
  • 출력 pureQueryXML 파일은 런타임 시 일치 SQL문으로 명령문을 식별하기 위해 pureQuery 클라이언트 최적화에 의해 사용되는 다음 SQL문 정보를 포함하지 않습니다.
    • 자동 생성된 키 컬럼 이름
    • 자동 생성된 키 컬럼 인덱스
    • 자동 생성된 키 표시기

    pureQuery 클라이언트 최적화를 사용하는 애플리케이션이 SQL문을 정적으로 실행하거나 캡처 전용 모드로 실행하도록 구성되고 GeneratePureQueryXml 유틸리티에 의해 작성된 pureQueryXML 파일을 사용하는 경우, 애플리케이션에서 실행되는 명령문은 세 가지 기능 중 하나라도 사용하면 SQL문의 텍스트가 동일해도 정적으로 실행되지 않습니다.

다음 예는 SQL 스크립트 파일 c:\mystatements.sql에 있는 명령문에 대한 정보를 포함하는 pureQueryXML 파일 c:\statements.pdqxml을 작성합니다. sqlLiteralSubstitution 옵션의 값은 ENABLE이며 이는 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문 판별

GeneratePureQueryXml은 선행 및 후미 공백을 제외한 두 SQL문의 텍스트가 동일하고 다음 속성이 동일한 경우 두 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;
다음 항목은 입력 SQL 파일에 있습니다. SQL문은 리터럴 값을 제외하고 동일합니다.
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 = ?

피드백