Configure 유틸리티

pureQuery Configure 유틸리티를 사용하여 결과적으로 SQL문에 대해 작성하는 DB2® 패키지의 여러 가지 특성을 pureQueryXML 파일에 설정할 수 있습니다. 특성은 DB2 패키지의 콜렉션, 버전 및 루트 패키지 이름 포함을 설정하고 패키지에 그룹화되는 최대 SQL문 수를 설정할 수 있습니다. 또한 입력 pureQueryXML 파일에 대해 XML 스키마 유효성 확인을 수행할 수 있습니다.

사용자가 설정한 특성은 pureQueryXML 파일에 추가됩니다. pureQueryXML 파일에 있는 SQL문을 DB2 패키지에 바인드하기 위해 StaticBinder 유틸리티를 실행하면 StaticBinder 유틸리티가 이들 특성을 읽습니다. pureQuery Runtime은 또한 SQL문을 정적으로 실행할 때 파일에 있는 콜렉션 ID, 패키지 ID, 버전 ID 및 섹션 번호와 같은 정보를 사용합니다.

주: -pureQueryXml 옵션으로 지정된 pureQueryXML 파일은 다음 방식으로 작성된 pureQueryXML 파일이 될 수 없습니다.
  • outputPureQueryXmlpureQueryXml pureQuery Runtime 특성이 모두 지정었을 때 파일이 추가 SQL문을 캡처하도록 작성되었습니다. 두 특성이 모두 지정되었을 때 outputPureQueryXml 특성으로 지정된 pureQueryXML 파일은 pureQueryXml 특성으로 지정된 pureQueryXML 파일에 표시되지 않는 캡처된 SQL문을 포함합니다. 구성하기 전에 여러 파일을 병합해야 합니다. pureQueryXml 특성으로 지정된 파일을 기본 파일로 사용하십시오.
  • 파일에는 저장소에서 추출된 캡처된 SQL 데이터가 포함되어 있고 활성 런타임 그룹 버전에는 pureQueryXML 데이터가 포함되어 있습니다. 구성하기 전에 런타임 그룹 버전에서 pureQueryXML 데이터를 추출하고 여러 파일을 병합해야 합니다. pureQueryXML 데이터를 포함하는 파일을 기본 파일로 사용하십시오.

이 주제에는 다음과 같은 섹션이 있습니다.

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

Configure 유틸리티 옵션 파일

Configure 유틸리티 옵션 파일은 pureQuery Configure 유틸리티가 처리할 pureQueryXML 파일 또는 pureQueryXML 파일 및 Configure 유틸리티에 pureQueryXML 파일의 처리 방법을 지시하는 옵션을 나열합니다. 일부 Configure 유틸리티를 옵션 파일에 나열한 모든 pureQueryXML 파일에 적용되는 기본 옵션으로 설정할 수 있습니다. 또한 pureQueryXml 파일에 옵션을 설정하여 기본 옵션을 겹쳐쓰고 개별 pureQueryXML 파일에 특정적인 다른 옵션을 설정할 수도 있습니다.

Configure 유틸리티를 실행할 명령에 -optionsFile 옵션과 함께 사용할 파일을 지정할 수 있습니다.

예를 들어, pureQuery Configure 유틸리티에 대한 단순 옵션 파일은 다음과 같습니다.
defaultOptions = -collection COLL01
C:\capture_files\capture_sales.pdqxml = -collection NULLID -rootPkgName SALES
C:\capture_files\capture_employee.pdqxml = -collection COLL02 -rootPkgName EMP
C:\capture_files\capture_orders.pdqxml = -rootPkgName ORDERS
이 예에서 defaultOptions로 시작된 행은 결과적으로 작성되고 바운드될 DB2 패키지의 콜렉션 ID를 지정합니다. 다음 두 행은 기본 콜렉션 ID를 겹쳐씁니다. 세 개의 모든 pureQueryXML 파일에 대해 필수 -rootPkgName 옵션은 DB2 패키지의 루트 패키지 이름을 지정합니다.
# 기호를 주석의 각 행 앞에 추가하여 옵션 파일에 주석을 포함시킬 수도 있습니다. 이 기호가 옵션 중 하나의 값에 나타나야 한다면 값을 큰따옴표로 표시합니다.
-pkgVersion "ver#1"
명령행에서 Configure 유틸리티를 실행하고 옵션 파일을 사용하면, pureQuery는 다음 우선순위 순서대로 옵션을 인식합니다.
  1. 명령행의 옵션
  2. 지정된 옵션 파일의 개별 pureQueryXML 파일에 대한 옵션
  3. 지정된 옵션 파일의 기본 옵션

옵션 파일을 사용하지 않고 Configure 유틸리티를 실행하기 위한 명령 구문

pureQueryXML 파일이 하나만 있는 경우, 이 명령을 사용하여 pureQueryXML 파일의 이름 및 DB2 패키지에 대한 옵션을 지정하도록 선택할 수 있습니다.

구문 도표 읽기시각적 구문 도표 생략
                                     (1)   
>>-java--com.ibm.pdq.tools.Configure---------------------------->

>--+-----------------------------------+------------------------>
   |               .-NULLID----------. |   
   '- -collection--+-collection-name-+-'   

>--+-----------------------------+------------------------------>
   '- -markDDLForBind--+-TRUE--+-'   
                       '-FALSE-'     

>--+--------------------------------+--------------------------->
   '- -pkgVersion-- -+-AUTO-------+-'   
                     '-version-ID-'     

>-- -rootPkgName--package-name-stem----------------------------->

>--+--------------------------------------------------------+--->
   '- -allowStaticRowsetCursors--+-READ_ONLY--------------+-'   
                                 +-READ_ONLY_SCROLLABLE---+     
                                 +-READ_ONLY_FORWARD_ONLY-+     
                                 '-NEVER------------------'     

>--+-----------------------------+------------------------------>
   |                   .-FALSE-. |   
   '- -cleanConfigure--+-TRUE--+-'   

>--+---------------------------------------+-------------------->
   |                             .-FALSE-. |   
   '- -forceSingleBindIsolation--+-TRUE--+-'   

>--+-----------------------------------------+------------------>
   |                               .-FALSE-. |   
   '- -groupSQLBySpecialRegisters--+-TRUE--+-'   

>--+-------------------------------------------+---------------->
   |                      .------------------. |   
   |                      |    .-|------.    | |   
   |                      V    V        |    | |   
   '- -groupSQLByStrings----(----string-+--)-+-'   

>--+----------------------------------+------------------------->
   |                       .- -1----. |   
   '- -maxMissingSections--+-number-+-'   

>--+--------------------------------------+--------------------->
   '- -removeSQLInactiveForDays----days---'   

>--+-------------------------------+---------------------------->
   |                     .-FALSE-. |   
   '- -removeInvalidSQL--+-TRUE--+-'   

                                           (2)   
>--+-------------------------------------+---------------------->
   |                           .-FALSE-. |       
   '- -restoreInvalidSQLForce--+-TRUE--+-'       

>--+----------------------------------------------------------------+-->
   |                        .----------------------------------.    |   
   |                        V                                  |    |   
   '- -replaceLocations--"----(--original_name-->--new_name--)-+--"-'   

>--+--------------------------------------------------------------+-->
   |                      .----------------------------------.    |   
   |                      V                                  |    |   
   '- -replaceSchemas--"----(--original_name-->--new_name--)-+--"-'   

>--+--------------------------+--+------------------------+----->
   |                .-FALSE-. |  |             .-100----. |   
   '- -showDetails--+-TRUE--+-'  '- -sqlLimit--+-number-+-'   

>--+---------------------------------------+-------------------->
   '- -setPreStatusOfAllPkgs--+-AUTO-----+-'   
                              +-FINAL----+     
                              '-REQUIRED-'     

>--+---------------------------------+-------------------------->
   '- -setPostStatusOfAllPkgs--FINAL-'   

>--+-------------------------------------------------------------+-->
   '- -optionsFileForBind--+-bind-options-file-----------------+-'   
                           '-DEFAULT_IN_PUREQUERYXML_DIRECTORY-'     

>--+--------------------------+--+-----------------------+------>
   |                .-FALSE-. |  |                   (3) |   
   '- -validateXml--+-TRUE--+-'  '-| Trace options |-----'   

>-- -pureQueryXml--pureQueryXML-file--+--------+---------------><
                                      '- -help-'   

주:
  1. 임의의 순서로 옵션을 지정할 수 있습니다.
  2. -replaceLocations 및 -replaceSchemas 옵션의 경우 JAR 파일 pdqsqlparser.jar가 클래스 경로에 있어야 합니다. 이 옵션은 z/OS®용 DB2 버전 10과, Linux, UNIX 및 Windows용 DB2 버전 9.8에 지원됩니다. 지원되지 않는 데이터베이스가 발견되면 경고가 발행됩니다.
  3. 구문의 경우 해당 옵션의 설명을 참조하십시오.

옵션 파일을 사용하여 Configure 유틸리티를 실행하기 위한 명령 구문

pureQueryXML 파일이 둘 이상 있는 경우, 명령과 옵션 파일을 사용하여 pureQueryXML 파일의 이름 및 DB2 패키지에 대한 옵션을 지정하십시오. pureQueryXML 파일이 하나만 있는 경우에도 명령 및 옵션 파일을 사용할 수 있습니다.

구문 도표 읽기시각적 구문 도표 생략
>>-java--com.ibm.pdq.tools.Configure---------------------------->

>-- -optionsFile--file-name--+-----------------------+---------><
                             |                   (1) |   
                             '-| Trace options |-----'   

주:
  1. 구문의 경우 해당 옵션의 설명을 참조하십시오.

Configure 유틸리티의 옵션 파일에 기본 옵션을 지정하기 위한 구문

이 구문 다이어그램에서는 옵션 파일에 나열하는 모든 pureQueryXML 파일에 대해 설정할 수 있는 기본 옵션을 표시합니다.

구문 도표 읽기시각적 구문 도표 생략
                     (1)   
>>-defaultOptions--=-------------------------------------------->

>--+-----------------------------------+------------------------>
   |               .-NULLID----------. |   
   '- -collection--+-collection-name-+-'   

>--+-----------------------------+------------------------------>
   '- -markDDLForBind--+-TRUE--+-'   
                       '-FALSE-'     

>--+--------------------------------+--------------------------->
   '- -pkgVersion-- -+-AUTO-------+-'   
                     '-version-ID-'     

>--+--------------------------------------------------------+--->
   '- -allowStaticRowsetCursors--+-READ_ONLY--------------+-'   
                                 +-READ_ONLY_SCROLLABLE---+     
                                 +-READ_ONLY_FORWARD_ONLY-+     
                                 '-NEVER------------------'     

>--+---------------------------------------+-------------------->
   |                             .-FALSE-. |   
   '- -forceSingleBindIsolation--+-TRUE--+-'   

>--+-----------------------------------------+------------------>
   |                               .-FALSE-. |   
   '- -groupSQLBySpecialRegisters--+-TRUE--+-'   

>--+-------------------------------------------+---------------->
   |                      .------------------. |   
   |                      |    .-|------.    | |   
   |                      V    V        |    | |   
   '- -groupSQLByStrings----(----string-+--)-+-'   

                                        (2)   
>--+----------------------------------+------------------------->
   |                       .- -1----. |       
   '- -maxMissingSections--+-number-+-'       

>--+----------------------------------------------------------------+-->
   |                        .----------------------------------.    |   
   |                        V                                  |    |   
   '- -replaceLocations--"----(--original_name-->--new_name--)-+--"-'   

>--+--------------------------------------------------------------+-->
   |                      .----------------------------------.    |   
   |                      V                                  |    |   
   '- -replaceSchemas--"----(--original_name-->--new_name--)-+--"-'   

>--+--------------------------------------+--------------------->
   '- -removeSQLInactiveForDays----days---'   

>--+-------------------------------+---------------------------->
   |                     .-FALSE-. |   
   '- -removeInvalidSQL--+-TRUE--+-'   

>--+-------------------------------------+---------------------->
   |                           .-FALSE-. |   
   '- -restoreInvalidSQLForce--+-TRUE--+-'   

>--+--------------------------+--+------------------------+----->
   |                .-FALSE-. |  |             .-100----. |   
   '- -showDetails--+-TRUE--+-'  '- -sqlLimit--+-number-+-'   

>--+---------------------------------------+-------------------->
   '- -setPreStatusOfAllPkgs--+-AUTO-----+-'   
                              +-FINAL----+     
                              '-REQUIRED-'     

>--+---------------------------------+-------------------------->
   '- -setPostStatusOfAllPkgs--FINAL-'   

>--+-------------------------------------------------------------+-->
   '- -optionsFileForBind--+-bind-options-file-----------------+-'   
                           '-DEFAULT_IN_PUREQUERYXML_DIRECTORY-'     

>--+--------------------------+--+-----------------------+-----><
   |                .-FALSE-. |  |                   (3) |   
   '- -validateXml--+-TRUE--+-'  '-| Trace options |-----'   

주:
  1. 임의의 순서로 옵션을 지정할 수 있습니다.
  2. -replaceLocations 및 -replaceSchemas 옵션의 경우 JAR 파일 pdqsqlparser.jar가 클래스 경로에 있어야 합니다. 이 옵션은 z/OS용 DB2 버전 10과, Linux, UNIX 및 Windows용 DB2 버전 9.8에 지원됩니다. 지원되지 않는 데이터베이스가 발견되면 경고가 발행됩니다.
  3. 구문의 경우 해당 옵션의 설명을 참조하십시오.

Configure 유틸리티의 옵션 파일에 개별 pureQueryXML 파일에 대한 옵션을 지정하기 위한 구문

이 구문 다이어그램에서는 옵션 파일에 나열하는 각 pureQueryXML 파일에 대해 설정할 수 있는 옵션을 표시합니다.

구문 도표 읽기시각적 구문 도표 생략
                        (1)   
>>-pureQueryXML-file--=----------------------------------------->

>--+-----------------------------------+------------------------>
   |               .-NULLID----------. |   
   '- -collection--+-collection-name-+-'   

>--+-----------------------------+------------------------------>
   '- -markDDLForBind--+-TRUE--+-'   
                       '-FALSE-'     

>--+--------------------------------+--------------------------->
   '- -pkgVersion-- -+-AUTO-------+-'   
                     '-version-ID-'     

>-- -rootPkgName--package-name-stem----------------------------->

>--+--------------------------------------------------------+--->
   '- -allowStaticRowsetCursors--+-READ_ONLY--------------+-'   
                                 +-READ_ONLY_SCROLLABLE---+     
                                 +-READ_ONLY_FORWARD_ONLY-+     
                                 '-NEVER------------------'     

>--+-----------------------------+------------------------------>
   |                   .-FALSE-. |   
   '- -cleanConfigure--+-TRUE--+-'   

>--+---------------------------------------+-------------------->
   |                             .-FALSE-. |   
   '- -forceSingleBindIsolation--+-TRUE--+-'   

>--+-----------------------------------------+------------------>
   |                               .-FALSE-. |   
   '- -groupSQLBySpecialRegisters--+-TRUE--+-'   

>--+-------------------------------------------+---------------->
   |                      .------------------. |   
   |                      |    .-|------.    | |   
   |                      V    V        |    | |   
   '- -groupSQLByStrings----(----string-+--)-+-'   

>--+----------------------------------+------------------------->
   |                       .- -1----. |   
   '- -maxMissingSections--+-number-+-'   

>--+--------------------------------------+--------------------->
   '- -removeSQLInactiveForDays----days---'   

>--+-------------------------------+---------------------------->
   |                     .-FALSE-. |   
   '- -removeInvalidSQL--+-TRUE--+-'   

                                           (2)   
>--+-------------------------------------+---------------------->
   |                           .-FALSE-. |       
   '- -restoreInvalidSQLForce--+-TRUE--+-'       

>--+----------------------------------------------------------------+-->
   |                        .----------------------------------.    |   
   |                        V                                  |    |   
   '- -replaceLocations--"----(--original_name-->--new_name--)-+--"-'   

>--+--------------------------------------------------------------+-->
   |                      .----------------------------------.    |   
   |                      V                                  |    |   
   '- -replaceSchemas--"----(--original_name-->--new_name--)-+--"-'   

>--+--------------------------+--+------------------------+----->
   |                .-FALSE-. |  |             .-100----. |   
   '- -showDetails--+-TRUE--+-'  '- -sqlLimit--+-number-+-'   

>--+---------------------------------------+-------------------->
   '- -setPreStatusOfAllPkgs--+-AUTO-----+-'   
                              +-FINAL----+     
                              '-REQUIRED-'     

>--+---------------------------------+-------------------------->
   '- -setPostStatusOfAllPkgs--FINAL-'   

>--+--------------------------+--------------------------------><
   |                .-FALSE-. |   
   '- -validateXml--+-TRUE--+-'   

주:
  1. 임의의 순서로 옵션을 지정할 수 있습니다.
  2. -replaceLocations 및 -replaceSchemas 옵션의 경우 JAR 파일 pdqsqlparser.jar가 클래스 경로에 있어야 합니다. 이 옵션은 z/OS용 DB2 버전 10과, Linux, UNIX 및 Windows용 DB2 버전 9.8에 지원됩니다. 지원되지 않는 데이터베이스가 발견되면 경고가 발행됩니다.

옵션에 대한 설명

pureQueryXML-file = options
옵션 파일에서 이 형식을 사용하여 pureQueryXML 파일의 이름과 파일의 옵션을 지정할 수 있습니다. 파일 이름으로 파일의 행이 시작되어야 합니다. 파일 이름에는 절대 경로 또는 상대 경로가 포함됩니다. 파일 이름의 확장자는 .pdqxml 또는 .xml이어야 합니다.
이 행에서 지정한 옵션은 defaultOptions 행에서 지정한 옵션을 겹쳐씁니다.
-allowStaticRowsetCursors
캡처하는 동안 행 세트 커서를 사용한 명령문과 정적 실행 동안 행 세트 커서를 사용한 명령문 사이에 차이가 있길 원할 경우 이 옵션을 사용합니다. 다음은 차이가 발생할 수 있는 상황의 예입니다.
  • 정적 실행 동안 행 세트 커서를 사용하려고 하지만 z/OS용 DB2가 아닌 다른 데이터베이스를 사용하여 캡처했습니다. 예를 들어 Linux, UNIX 및 Windows용 DB2를 사용하여 캡처했습니다.
  • 캡처 환경이 행 세트 커서를 사용했지만 정적 실행 동안 행 세트 커서를 사용하지 않으려는 경우입니다.
  • 정적 실행 동안 행 세트 커서를 사용하지 않으려는 경우입니다. z/OS용 DB2를 캡처했으며 z/OS용 DB2에 대해 정적으로 실행할 것이지만, 캡처하는 동안 사용된 드라이버가 아닌 다른 드라이버 유형을 정적 실행 동안 사용할 것입니다. 예를 들어, JDBC 및 SQLJ용 IBM® 데이터 서버 드라이버 T4 드라이버를 사용하여 캡처했지만, JDBC 및 SQLJ용 IBM 데이터 서버 드라이버 T2 드라이버로 정적으로 실행할 경우, "-allowStaticRowsetCursors READ_ONLY"를 지정하려고 할 수 있습니다. 이와 유사하게 JDBC 및 SQLJ용 IBM 데이터 서버 드라이버 T2 드라이버를 사용하여 캡처했지만, JDBC 및 SQLJ용 IBM 데이터 서버 드라이버 T4 드라이버로 정적으로 실행할 경우, "-allowStaticRowsetCursors READ_ONLY_SCROLLABLE"을 지정하려고 할 수 있습니다.
  • 정적 실행 동안 행 세트 커서를 사용하지 않으려는 경우입니다. 캡처 파일은 2.2 전의 pureQuery 버전으로 작성되며, 명령문은 행 세트 커서를 사용한다고 표시되지 않습니다.

z/OS용 DB2만 행 세트 커서를 지원합니다. 행 세트 커서는 JDBC 및 SQLJ용 IBM Data Server Driver 특성에서 해당 커서를 사용해야 한다고 표시하는 경우에만 사용합니다. 다른 유형의 데이터 소스에서 캡처하거나 행 세트 커서가 사용 가능하지 않다면 캡처한 명령문은 행 세트 커서를 사용하지 않습니다.

행 세트 커서가 포워드 온리(forward-only) 커서를 사용하지 않는 경우, 유형 4 연결은 내부적으로 유사한 메커니즘을 사용하여 네트워크 트래픽을 최소화할 수 있습니다.

이 옵션은 다음 4개의 값 중 하나입니다.

READ_ONLY
LOB 또는 XML 데이터 유형이 있는 컬럼을 선택하지 않는 SELECT문에서 (포워드 온리(forward-only) 또는 스크롤 가능한 읽기 전용 커서를 엽니다) 행 세트 커서를 사용할 수 있도록 지정합니다. 다른 SELECT문은 행 세트 커서를 사용하도록 허용되지 않습니다.
이 옵션은 해당 기준을 충족하는 pureQueryXML 파일의 각 SELECT문에 속성 allowStaticRowsetCursors를 추가하며 각 경우의 값을 TRUE로 설정합니다.
READ_ONLY_SCROLLABLE
읽기 전용, 스크롤 가능한 커서를 열며 LOB 또는 XML 데이터 유형이 있는 컬럼을 선택하지 않는 SELECT문에서 행 세트 커서를 사용할 수 있도록 지정합니다. 다른 SELECT문은 행 세트 커서를 사용하도록 허용되지 않습니다.
이 옵션은 해당 기준을 충족하는 pureQueryXML 파일의 각 SELECT문에 속성 allowStaticRowsetCursors를 추가하며 각 경우의 값을 TRUE로 설정합니다.
READ_ONLY_FORWARD_ONLY
읽기 전용, 포워드 온리(forward-only) 커서를 열며 LOB 또는 XML 데이터 유형이 있는 컬럼을 선택하지 않는 SELECT문에서 행 세트 커서를 사용할 수 있도록 지정합니다. 다른 SELECT문은 행 세트 커서를 사용하도록 허용되지 않습니다.
이 옵션은 해당 기준을 충족하는 pureQueryXML 파일의 각 SELECT문에 속성 allowStaticRowsetCursors를 추가하며 각 경우의 값을 TRUE로 설정합니다.
NEVER
SELECT문이 행 세트 커서를 사용할 수 없도록 지정합니다.
이 옵션은 pureQueryXML 파일의 각 SELECT문에 속성 allowStaticRowsetCursors를 추가하며 각 경우의 값을 FALSE로 설정합니다. 이들 SELECT문의 서브세트로 행 세트 커서를 사용하려면, 워크벤치에서 이 속성을 TRUE로 설정할 수 있습니다.

이들 조건이 참인 경우 이 옵션을 사용하지 않아도 됩니다.

  • 스크롤 가능한 커서에 대해 다중 행 페치를 사용하도록 JDBC 및 SQLJ용 IBM 데이터 서버 드라이버를 설정합니다. z/OS용 DB2 데이터 서버에 대해 실행하고 T4 연결을 사용하여 SELECT문을 캡처했습니다. T4 연결을 사용하여 같은 데이터 서버 또는 호환 가능한 서버에 대해 명령문을 정적으로 실행하도록 계획합니다.
  • 포워드 온리(forward-only) 및 스크롤 가능한 커서에 대해 다중 행 페치를 사용하도록 JDBC 및 SQLJ용 IBM 데이터 서버 드라이버를 설정합니다. z/OS용 DB2 데이터 서버에 대해 실행하고 T2 연결을 사용하여 SELECT문을 캡처했습니다. T2 연결을 사용하여 같은 데이터 서버 또는 호환 가능한 서버에 대해 명령문을 정적으로 실행하도록 계획합니다.
pureQuery가 해당 명령문을 정적으로 실행할 때 행 세트 커서를 사용하도록 허용하려는 SQL문은 다음 조건을 충족해야 합니다.
  • 캡처된 명령문은 SELECT문입니다.
  • SELECT문이 스토어드 프로시저에서 실행되지 않습니다.
  • 쿼리 결과의 컬럼은 LOB 또는 XML 데이터 유형이 아닙니다.
  • 명령문이 여는 커서는 읽기 전용입니다. 정적 업데이트 가능한 커서가 행 세트를 사용하면 결과는 예상할 수 없습니다.

    이들 조건 중 하나가 참인 경우 pureQuery는 명령문을 업데이트할 수 있는 것으로 간주합니다.

    • 동시 속성은 java.sql.ResultSet.CONCUR_UPDATABLE로 설정됩니다.
    • SQL문에 FOR UPDATE 절이 포함됩니다.
    명령문을 업데이트할 수 없다면 pureQuery는 명령문을 읽기 전용으로 간주합니다.

행 세트 커서를 지원하지 않는 데이터 소스에 대해 명령문을 정적으로 실행하면, pureQuery는 행 세트 커서를 사용하도록 지정된 명령문에 대해 행 세트 커서를 사용하려고 시도하지 않습니다.

pureQuery Runtime이 행 세트 커서를 지원하지 않는 SQL문의 경우 JDBC 및 SQLJ용 IBM Data Server Driver가 이러한 명령문에 행 세트 커서를 사용했더라도 Configure 유틸리티는 이러한 SQL 명령문에 행 세트 커서를 사용하지 않습니다.

이 옵션을 지정하지 않았고 pureQuery Runtime은 명령문에 대해 행 세트 커서를 지원하는 경우 명령문을 캡처할 때 JDBC 및 SQLJ용 IBM Data Server Driver가 행 세트 커서를 사용했던 명령문에 대해 pureQuery는 행 세트 커서를 사용합니다.

-cleanConfigure TRUE | FALSE
Configure 유틸리티가 pureQueryXML 파일을 처리하기를 원하는 Extent를 지정합니다.
TRUE
처리 동안 sqlLimit, groupSQLByStringgroupSQLBySpecialRegister와 같이 지정된 옵션에 따라 모든 SQL문이 명령문 세트로 구성됩니다. Configure 유틸리티가 필요에 따라 SQL문을 명령문 세트로 인식합니다.

모든 명령문 세트에 대해 Configure 유틸리티는 구성 프로세스에서 configureStatus의 값을 AUTO로 설정합니다. 명령문 세트 configureStatus 값 FINAL을 겹쳐씁니다.

FALSE
Configure 유틸리티가 pureQueryXML 파일의 명령문 세트 이름과 콜렉션 ID를 설정하게 됩니다. 영향을 받는 명령문 세트는 configureStatus 플래그가 REQUIRED 또는 AUTO로 설정되고 이름이 없는 명령문 세트입니다. Configure 유틸리티는 명령문 세트를 수정해야 한다고 판별하는 경우에만 configureStatus 플래그가 AUTO로 설정된 명령문 세트를 수정합니다.

FALSE가 기본값입니다.

이름 지정되지 않은 명령문 세트의 경우, 구성은 지정된 모든 옵션을 적용합니다.

configureStatus 값을 REQUIRED로 설정한 이름 지정된 명령문 세트의 경우, 일부 옵션이 적용됩니다. 적용되는 옵션으로 -collection, -pkgVersion, -forceSingleBindIsolation 및 -markDDLForBind 옵션이 있습니다. 일관성 토큰이 업데이트됩니다. 명령문 세트의 SQL문을 정적으로 실행할 경우, 명령문 세트에서 작성한 패키지를 리바인드해야 합니다.

구성 프로세스에서 Configure 유틸리티는 configureStatus의 값을 REQUIRED에서 AUTO로 변경합니다.

configureStatus의 값을 AUTO로 설정한 이름 지정된 명령문 세트의 경우, Configure 유틸리티가 명령문 세트를 수정해야 한다고 판별하는 경우에만 옵션을 적용합니다. 명령문 세트가 수정되지 않으면 일관성 토큰은 업데이트되지 않습니다. configureStatus 플래그를 AUTO로 설정하고 -pkgVersion 옵션을 지정한 경우, 유틸리티는 버전 ID를 사용하여 명령문 세트를 업데이트합니다. 명령문 세트의 SQL문을 정적으로 실행하고 명령문 세트를 수정하는 경우, 명령문 세트에서 작성한 패키지를 리바인드해야 합니다.

configureStatus 플래그가 FINAL로 설정된 이름 지정된 명령문 세트의 경우, Configure 유틸리티는 명령문 세트에 문제점이 발견된 경우 오류를 표시합니다. 오류에는 상향식 순서가 아닌 섹션 번호와 SELECT문과 연관되지 않은 위치 업데이트 명령문이 포함됩니다. Configure 유틸리티는 명령문 세트에서 명령문이 제거되어야 하는 경우 경고를 표시합니다. 예를 들어, -removeSQLInactiveForDays 옵션이 지정되고 명령문의 시간소인이 제거 기준과 일치하는 경우 명령문 세트에서 명령문이 제거될 수 있습니다. 해당 명령문과 연관된 특수 레지스터 값이 변경되는 경우, 명령문은 다른 명령문 세트로 이동할 수 있습니다.

-groupSQLBySpecialRegisters 옵션이 지정되면 특수 레지스터 속성 변경 시 경고가 로그됩니다. 이 경우 오류가 발행되지는 않습니다.

-collection collection-name
pureQuery StaticBinder 유틸리티가 바인드하는 패키지의 규정자입니다. 규정자는 사용 중인 DB2 데이터베이스의 콜렉션 이름에 대한 제한조건을 충족해야 합니다.
이 매개변수를 지정하지 않으면 NULLID가 기본값으로 설정됩니다.
-forceSingleBindIsolation TRUE | FALSE
단일 분리 레벨로 DB2 패키지를 작성할 지 그리고 패키지 이름에 번호를 추가하여 분리 레벨을 표시할 지 여부를 지정합니다. 기본 값은 false이며 숫자 표시기가 추가된다는 것을 의미합니다.
StaticBinder 유틸리티의 -isolationLevel 옵션과 함께 이 옵션을 사용합니다.

-isolationLevel 옵션을 사용하여 단일 명령문 세트를 두 개 또는 세 개의 다른 패키지(각 패키지는 다른 분리 수준에 있음)에 바인드하려는 경우, 명령문 세트가 표시되는 pureQueryXML 파일에 대해 Configure 유틸리티를 실행할 때 -forceSingleBindIsolation 옵션을 사용하지 마십시오.

예를 들어, StaticBinder 유틸리티에 대한 옵션 파일에서 다음 두 엔트리를 포함시켰다고 가정하겠습니다.

C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel UR
C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel CS

captureFile.pdqxml 파일에 대해 Configure 유틸리티를 실행할 때 -forceSingleBindIsolation 옵션을 사용한 경우 StaticBinder 유틸리티는 다음 조치를 수행합니다.

  1. UR 분리 수준에서 패키지 MYPKGA를 바인드합니다.
  2. CS 분리 수준에서 패키지 MYPKGA를 리바인드합니다.

결과는 CS 분리 수준에서 바인드된 단일 MYPKGA 패키지입니다.

결과가 두 개의 MYPKGA 패키지(하나는 UR 분리 수준에서 다른 하나는 CS 분리 수준에서)가 되도록 하려면, captureFile.pdqxml에 대해 Configure 유틸리티를 실행할 때 -forceSingleBindIsolation 옵션을 사용하지 마십시오.

-groupSQLBySpecialRegisters TRUE|FALSE
SQL문이 명령문과 연관된 기록된 특수 레지스터 값을 기준으로 명령문 세트로 그룹화되는지 여부를 지정합니다. 기본값은 FALSE이고 SQL문이 기록된 특수 레지스터 값을 기준으로 그룹화되지 않습니다. 값이 TRUE인 경우, 특수 레지스터 설정을 기준으로 SQL문이 명령문 세트로 그룹화됩니다. 동일한 명령문에 있는 각 SQL문에는 SQL이 캡처되었을 때 기록된 것과 동일한 특수 레지스터 값이 있습니다. 특수 레지스터를 기반으로 명령문 세트를 작성하는 경우 다음 규칙이 적용됩니다.
  • 단일 세트의 기록된 특수 레지스터 값이 있는 SQL문은 명령문 세트로 그룹화됩니다. 각각의 다른 기록된 특수 레지스터 값 세트에 대해 명령문 세트가 작성됩니다.
  • 기록된 특수 레지스터 정보가 없는 SQL문은 단일 명령문 세트로 그룹화됩니다.
  • 둘 이상의 기록된 특수 레지스터 값 세트와 연관된 SQL문은 단일 명령문 세트로 그룹화됩니다. 애플리케이션에서 SQL문을 여러 번 발행하고 특수 레지스터 정보가 SQL문 캡처 사이에 변경된 경우, SQL문을 여러 개의 기록된 특수 레지스터 값 세트와 연관시킬 수 있습니다.

-groupSQLBySpecialRegisters 및 -groupSQLByStrings 옵션을 모두 사용하여 명령문 세트를 작성하는 경우, 명령문은 먼저 특수 레지스터 값으로 그룹화됩니다. 특수 레지스터를 기준으로 한 각 그룹에 대해 -groupSQLByStrings 옵션으로 지정된 값을 기준으로 SQL문이 그룹화됩니다. 그룹화가 완료된 후, 필요에 따라 -sqlLimit를 기준으로 한 그룹화가 수행됩니다. 명령문 세트가 작성된 후 이름이 지정됩니다.

pureQueryXML 파일에 이름 지정된 패키지 및 이름 지정되지 않은 패키지 조합이 포함되어 있고 -cleanConfigure 옵션이 FALSE로 설정된 경우, 이름 지정되지 않은 패키지만 그룹화되며 이름 지정된 패키지의 그룹화는 변경되지 않습니다. -cleanConfigure 옵션이 TRUE로 설정된 경우, 모든 패키지(이름 지정된 패키지 및 이름 지정되지 않은 패키지)에 있는 SQL문이 그룹화됩니다.

SQL문을 정적으로 실행하는 경우, -groupSQLBySpecialRegisters 옵션과 -optionsFileForBind 옵션을 사용하여 패키지를 DB2 데이터베이스에 바인드할 수 있습니다.

pureQuery Runtime이 기록한 특수 레지스터 정보에 대한 정보는 이 주제의 맨 끝에 있는 관련 링크를 참조하십시오.

-groupSQLByStrings (String1|String2|...)...(StringN|StringM|...)
옵션으로 지정된 문자열을 사용하여 서브스트링 일치항목을 기준으로 SQL문 그룹화를 지정합니다. 옵션이 지정되지 않는 경우 그룹화를 제어하는 기타 옵션을 기준으로 그룹화가 발생합니다.

각 괄호 세트로 묶인 문자열은 SQL문을 검색하고 이를 명령문 세트로 그룹화하는 데 사용됩니다. SQL문을 명령문 세트에 지정할 때 문자열을 수직바( | )로 구분하여 여러 문자열을 사용할 수 있습니다. 동일한 문자열이 여러 번 표시되거나 문자열이 다른 문자열의 서브스트링인 경우 경고가 로그됩니다.

문자열에 명령문이 포함된 경우 SQL문이 명령문 세트에 지정됩니다. 명령문 세트를 작성하는 데 여러 문자열이 사용된 경우, SQL문에 해당 문자열이 포함되어 있으면 이 명령문이 명령문 세트에 지정됩니다.

명령문 세트를 작성할 때 명령문 세트는 groupSQLByStrings 옵션에 나열된 순서로 작성되며 일치하는 명령문에 대한 검색이 옵션에 나열된 순서로 수행됩니다. 예를 들어, 옵션이 (Table1) (Table2 | Table3) 값을 지정하는 경우, Configure 유틸리티는 pureQueryXML 파일에 대해 다음 명령문 세트를 작성합니다.
  • 문자열 Table1을 포함하는 SQL문이 명령문 세트에 지정됩니다.
  • 문자열 Table2 또는 문자열 Table3를 포함하는 SQL문이 두 번째 명령문 세트에 지정됩니다.
  • 지정된 문자열을 포함하지 않는 SQL문이 세 번째 문자열 세트에 지정됩니다.

-groupSQLBySpecialRegisters 및 -groupSQLByStrings 옵션을 모두 사용하여 명령문 세트를 작성하는 경우, 명령문은 먼저 특수 레지스터 값으로 그룹화됩니다. 특수 레지스터가 있는 각 그룹 내에서 SQL문은 -groupSQLByStrings 옵션이 지정하는 값을 기준으로 그룹화됩니다. 그룹화가 완료된 후, 필요에 따라 -sqlLimit가 적용되고 작성된 명령문 세트에 이름이 지정됩니다.

pureQueryXML 파일에 이름 지정된 패키지 및 이름 지정되지 않은 패키지 조합이 포함되어 있고 -cleanConfigure 옵션이 FALSE로 설정된 경우, 이름 지정되지 않은 패키지만 그룹화되며 이름 지정된 패키지의 그룹화는 변경되지 않습니다. -cleanConfigure 옵션이 TRUE로 설정된 경우, 모든 패키지(이름 지정된 패키지 및 이름 지정되지 않은 패키지)에 있는 SQL문이 그룹화됩니다.

문자열로 SQL문을 그룹화하는 예제는 예제를 참조하십시오.

-markDDLForBind
Configure 유틸리티가 pureQueryXML 파일의 모든 DDL문의 isBindable 속성으로 설정한 값을 지정합니다. 또한 Configure 유틸리티는 DDL문만을 포함하는 명령문 세트에서 isBindable 속성으로 이 값을 설정합니다.

올바른 값은 대소문자를 구별하지 않는 문자열 TRUE 및 FALSE입니다. 기본 값은 없습니다.

TRUE
StaticBinder 유틸리티가 pureQueryXML 파일을 처리할 경우 isBindable 값이 TRUE면, 해당 DDL문 또는 DDL문 세트가 바운드됩니다.
FALSE
StaticBinder 유틸리티가 pureQueryXML 파일을 처리할 경우 isBindable 값이 FALSE면, 해당 DDL문 또는 DDL문 세트가 바운드되지 않습니다.

이 옵션을 지정하지 않으면 Configure 유틸리티는 pureQueryXML 파일에서 이름이 지정되지 않은 명령문 세트에 있는 DDL문에 대해 isBindable이 TRUE인지를 점검합니다. Configure 유틸리티가 DDL문을 이름 지정된 단일 DDL문 세트로 결합할 때 isBindable이 그러한 DDL 문 중 최소 하나에 대해 TRUE이면, 유틸리티는 DDL문 세트의 isBindable 속성을 TRUE로 설정합니다.

명령문 세트의 isBindable 속성의 값이 TRUE이면 StaticBinder 유틸리티는 해당 명령문 세트에서 isBindable 속성의 값이 TRUE인 명령문을 바인드하려고 합니다.

-optionsFile file-name
pureQuery StaticBinder 유틸리티로 메타데이터를 수정하려는 pureQueryXML 파일을 나열하는, 절대 또는 상대 경로를 포함한 파일 이름입니다.
-maxMissingSections number
Configure 유틸리티가 명령문 세트에 있는 섹션 번호 간의 불필요한 갭을 제거하는 시기를 지정합니다. 섹션 번호는 SQL문에 지정됩니다. pureQuery StaticBinder 유틸리티가 pureQueryXML 파일을 바인드할 때 섹션 번호 간의 불필요한 갭은 바인드 조작으로 작성된 DB2 패키지에서 사용되지 않는 섹션 홀(hole)이 됩니다.

number는 Configure 유틸리티가 섹션 번호를 재지정하기 전에 명령문 세트에서 허용되는 불필요한 갭의 최대 수를 지정합니다. 값 number는 정수 -1 이상일 수 있습니다. 기본값이 -1이며 Configure 유틸리티는 섹션 번호를 재지정하지 않습니다. 예를 들어, number의 값이 0(영(0)) 또는 1인 경우 섹션 번호 간의 모든 불필요한 갭은 제거됩니다.

세트의 configureStatus 속성이 FINAL이 아니고 이름이 지정되는 명령문 세트에서만 Configure 유틸리티가 섹션 번호를 재지정합니다.

옵션 -removeInvalidSQL 또는 옵션 -removeSQLInactiveForDays를 사용하는 경우 일부 SQL문이 명령문 세트에서 제거될 수 있습니다. Configure 유틸리티는 남아 있는 SQL문의 섹션 번호를 자동으로 재지정하지 않습니다. 섹션 번호를 재지정하려면 리바인드할 해당 데이터베이스 패키지가 필요합니다.

옵션 -removeInvalidSQL 또는 옵션 -removeSQLInactiveForDays를 -maxMissingSections 옵션과 함께 지정하는 경우 섹션 번호가 재지정되기 전에 SQL문이 제거됩니다.

-optionsFileForBind bind-options-file|DEFAULT_IN_PUREQUERYXML_DIRECTORY
Configure 유틸리티가 StaticBinder 옵션 파일을 생성하는 것을 지정합니다. 옵션 파일은 pureQueryXML 파일에 있는 SQL문, 명령문 세트 및 DB2 특수 레지스터 정보에 기반한 바인드 옵션 및 기타 정보를 포함합니다. 파일이 있는 경우, 파일을 새 파일로 바꿉니다.
이 옵션은 다음 값을 가집니다.
bind-options-file
절대 경로 또는 상대 경로를 포함하여 파일 이름을 지정합니다.
DEFAULT_IN_PUREQUERYXML_DIRECTORY
observed.bindProps 파일이 pureQueryXML 파일이 있는 디렉토리에 작성되는 것을 지정합니다.

Configure 유틸리티의 defaultOptions 행에 이 값이 지정될 경우, 파일에 나열되어 있는 모든 pureQueryXML 파일이 하나의 디렉토리 안에 있어야 합니다.

파일에 있는 바인드 옵션과 기타 정보는 정적으로 실행되는 SQL문이 애플리케이션에서 발행되고 동적으로 실행되는 SQL문과 유사하게 작동되도록 바인드 옵션 세트를 지정하는 데 도움을 줍니다. pureQuery StaticBinder 유틸리티에서 이 바인드 옵션을 사용하여 DB2 데이터베이스에 패키지를 작성하고 패키지를 데이터베이스에 바인드하십시오.

StaticBinder 옵션 파일은 pureQueryXML 파일에 있는 명령문 세트와 SQL문에 대해 다음 유형의 정보를 포함합니다.
  • 명령문 세트에 대한 바인드 옵션
  • SQL문 및 명령문 세트에 대한 정보 및 경고

    Configure 유틸리티는 파일에 참조된 명령문 세트 및 특수 레지스터 값에 대한 정보를 포함한 주석을 추가합니다.

    Configure 유틸리티는 경고와 함꼐 StaticBinder 옵션 -configureWarning을 추가합니다. 경고는 명령문 세트에서 데이터베이스에 패키지를 바인드한 후 SQL문을 정적으로 실행할 때 SQL문이 예상대로 작동하지 않는 이유를 표시합니다.

Configure 유틸리티를 사용하여 작성한 StaticBinder 옵션 파일에 대한 정보 및 SQL문을 캡처할 때 기록된 특수 레지스터 정보는 이 주제의 맨 끝에 있는 관련 링크를 참조하십시오.

-pkgVersion AUTO|version-ID
패키지가 바인드될 때 사용할 패키지 버전을 지정합니다.

DB2에서는 패키지의 여러 버전이 동시에 존재할 수 있으므로 같은 이름으로 지정된 패키지의 이전 버전을 바꾸지 않고 새 패키지를 바인드할 수 있습니다. 새 패키지에서 문제점이 발생하는 경우 해당 패키지의 이전 버전을 사용할 수 있습니다.

또한 Configure 유틸리티는 버전 ID를 파일 이름에 추가하여 pureQueryXML 파일의 사본을 작성합니다.

AUTO
현재 시간소인을 사용하여 버전 ID가 자동으로 생성되도록 지정합니다. 버전 ID에는 단일 시간소인이 사용됩니다.
version-ID
패키지의 버전 ID를 지정합니다. 이 문자열은 사용 중인 DB2의 버전에 대해 유효해야 합니다.

버전 ID에는 사용 중인 운영 체제에서 파일 이름에 유효한 문자만을 포함할 수 있습니다. 또한 문자열의 길이 및 패키지 이름은 운영 체제가 파일 이름으로 지원하는 길이를 초과할 수 없습니다.

이 옵션을 지정하고 Configure 유틸리티가 pureQueryXML 파일을 변경하지 않으면 유틸리티는 pureQueryXML 파일의 사본을 작성하지 않습니다.

이 옵션을 지정하지 않으면 후속 바인드에서 발생하는 데이터베이스 패키지가 버전 없이 작성되고 파일 사본이 작성되지 않습니다.

런타임 시 버전 검증은 버전 이름이 아닌 일관성 토큰을 기반으로 합니다.

-pureQueryXml pureQueryXML-file
pureQueryXML 파일의 이름입니다. 이 파일의 확장자는 .pdqxml 또는 .xml이어야 합니다.파일에 대한 전체 경로 또는 상대 경로를 제공해야 합니다.
-removeSQLInactiveForDays days
명령문의 최종 사용 시간소인을 기준으로 사용되지 않은 SQL문이 제거되는 경과 일 수를 지정합니다. days 변수가 0인 경우, 모든 SQL문이 출력 파일에 기록됩니다. 기본 설정은 모든 SQL문을 출력 파일에 기록하는 것입니다. days의 값이 양수인 경우, 명령문의 최종 사용 시간소인이 현재 날짜에서 해당 일 수 이전이거나 그 이전이면(기준 날짜 포함) Configure 유틸리티는 SQL문을 출력 파일에 쓰지 않습니다. days 변수가 1인 경우, 시간소인이 전날이거나 그보다 이전이면 SQL문은 기록되지 않습니다.

예를 들어, days 변수가 5이고 현재 날짜가 11/25(11월 25일)인 경우, 시간소인이 11/20(11월 20일)인 SQL문은 기록되지 않습니다.

pureQuery Runtime이 SQL문을 캡처하거나 증분 캡처 파일로 Merge 유틸리티를 실행할 때 시간소인이 업데이트됩니다.

SQL문에 시간소인이 없는 경우에는 SQL문이 출력 파일에 기록됩니다. 예를 들어, 이전 버전 pureQueryXML 파일에 시간소인 정보가 없을 수 있습니다. 시간소인 정보가 없는 pureQueryXML 파일을 구성할 경우(버전 3 또는 그 이전) 이 옵션이 무시되고 모든 SQL문이 출력 파일에 기록되며 메시지가 표시됩니다.

출력 pureQueryXML 파일에 기록되지 않는 SQL문에 대한 메시지가 로그 파일에 기록됩니다. -showDetails 옵션이 true인 경우, 출력 파일에 기록되지 않은 모든 명령문이 표시됩니다.

-replaceLocations "(original_name1>new_name1 ) ... (original_nameN>new_nameN )"
pureQuery 파일에서 기존 데이터베이스 위치 이름을 새 위치 이름으로 대체하도록 지정합니다. 기존 이름은 오른쪽 꺾쇠괄호(>)로 새 이름과 분리됩니다. 각 위치 이름 쌍은 괄호로 묶습니다. 대체 목록은 큰따옴표(") 문자로 묶습니다. 이름을 구분하기 위해 사용되는 큰따옴표 문자에는 \ 문자가 선행해야 합니다. 다음 예제 옵션은 두 개의 데이터베이스 위치 이름을 교체합니다.
-replaceLocations "(SAMPLE > SAMPLE1) (STLEC1 > STLEC2)"
다음 예에서는 큰따옴표 문자를 사용합니다.
-replaceLocations "(\"test1\">\"prod1\")"

이름 대체는 단일 전달 프로세스입니다. 예를 들어, 대체 문자열 "(S1>S2) (S2>S3)"을 지정하는 경우, S1은 S2로 대체되고 원래의 S2는 S3으로 대체됩니다. Configure 유틸리티는 한 번의 전달로 S1을 S2로 대체하지 않으며 또 다른 전달에서 S2를 S3으로 대체합니다. 이름 대체의 예는 이 주제의 끝에 나오는 예를 참조하십시오.

이 옵션은 z/OS용 DB2 버전 10 및 Linux, UNIX 및 Windows용 DB2 버전9.8에만 지원됩니다. Configure 유틸리티는 지원되는 다른 버전의 데이터베이스에서 위치 이름 대체를 금지하지 않습니다. 이후 버전의 데이터베이스에서 사용되는 pureQueryXML 파일을 지정하는 경우 유틸리티는 경고를 표시합니다. 더 이전의 데이터베이스 버전에서는 경고가 표시되지 않습니다. Configure 유틸리티는 pureQueryXML 파일의 정보로 데이터베이스와 버전을 판별합니다.

Configure 유틸리티를 -replaceLocations 옵션과 함께 사용하려면 JAR 파일 pdqsqlparser.jar을 사용자의 클래스 경로에 추가해야 합니다. JAR 파일은 pureQuery Runtime 설치 디렉토리 lib/sqlparser에 있습니다.

configureStatus 속성의 값은 -replaceLocations 옵션의 영향을 받는 명령문 세트를 Configure 유틸리티가 처리하는 방식에 영향을 줍니다.
  • configureStatus의 값이 REQUIRED인 경우 대체 옵션이 지정하는 값으로 이름이 변경됩니다. 명령문 세트 일관성 토큰이 업데이트됩니다.
  • configureStatus의 값이 AUTO인 경우 대체 옵션이 지정하는 값으로 이름이 변경됩니다. 이름 대체가 수행되면 명령문 세트 일관성 토큰이 업데이트됩니다.
  • configureStatus의 값이 FINAL인 경우 이름이 변경되지 않습니다. Configure 유틸리티는 명령문이 포함된 명령문 세트의 configureStatus 값이 FINAL이기 때문에 SQL문의 데이터베이스 위치나 스키마 이름을 변경하지 않았다는 내용의 메시지를 인쇄합니다.
-cleanConfigure 및 -setPreStatusOfAllPkgs 옵션의 값이 이름 대체에 영향을 미칩니다.
  • -cleanConfigure가 true로 설정된 경우 -setPreStatusOfAllPkgs 값은 무시되고 -replaceLocations 및 -replaceSchemas의 값으로 대체됩니다,
  • -cleanConfigure가 false인 경우 configureStatus가 REQUIRED 및 AUTO인 명령문 세트에 대해서만 대체가 이루어집니다. -setPreStatusOfAllPkgs의 값을 FINAL로 설정하면 이름 지정된 명령문 세트에서 대체가 이루어지는 것을 방지할 수 있습니다. 그러나 이름 지정되지 않은 모든 명령문 세트의 ID는 원래대로 대체됩니다.

다른 옵션의 값은 -replaceLocations 및 -replaceSchemas 옵션에 영향을 주지 않습니다. 이름 대체는 -cleanConfigure 및 -setPreStatusOfAllPkgs는 제외한 다른 옵션에 우선하여 적용됩니다.

-replaceSchemas "(original_name1>new_name1 ) ... (original_nameN>new_nameN )"
pureQuery 파이에서 기존 스키마 이름을 새 스키마 이름으로 대체하도록 지정합니다. 기존 이름은 오른쪽 꺾쇠괄호(>)로 새 이름과 분리됩니다. 각 스키마 이름 쌍은 괄호로 묶습니다. 대체 목록은 큰따옴표(") 문자로 묶습니다. 이름을 구분하기 위해 사용되는 큰따옴표 문자에는 \ 문자가 선행해야 합니다. 다음 예제 옵션은 두 개의 스키마 이름을 대체합니다.
-replaceSchemas "(MYSCH1 > MYSCH2) (MYSCH3 > MYSCH4)"
다음 예에서는 큰따옴표 문자를 사용합니다.
-replaceSchemas "(\"schmTest\">\"schmProd\")"

이름 대체는 단일 전달 프로세스입니다. 예를 들어, 대체 문자열 "(S1>S2) (S2>S3)"을 지정하는 경우, S1은 S2로 대체되고 원래의 S2는 S3으로 대체됩니다. Configure 유틸리티는 한 번의 전달로 S1을 S2로 대체하지 않으며 또 다른 전달에서 S2를 S3으로 대체합니다. 이름 대체의 예는 이 주제의 끝에 나오는 예를 참조하십시오.

이 옵션은 z/OS용 DB2 버전 10 및 Linux, UNIX 및 Windows용 DB2 버전9.8에만 지원됩니다. Configure 유틸리티는 지원되는 다른 버전의 데이터베이스에서 스키마 이름 대체를 금지하지 않습니다. 이후 버전의 데이터베이스에서 사용되는 pureQueryXML 파일을 지정하는 경우 유틸리티는 경고를 표시합니다. 더 이전의 데이터베이스 버전에서는 경고가 표시되지 않습니다. Configure 유틸리티는 pureQueryXML 파일의 정보로 데이터베이스와 버전을 판별합니다.

Configure 유틸리티를 -replaceSchemas 옵션과 함께 사용하려면 JAR 파일 pdqsqlparser.jar을 사용자의 클래스 경로에 추가해야 합니다. JAR 파일은 pureQuery Runtime 설치 디렉토리 lib/sqlparser에 있습니다.

configureStatus 속성 및 -cleanConfigure와 -setPreStatusOfAllPkgs 옵션 값의 영향에 대한 정보는 -replaceLocations 옵션을 참조하십시오.

-removeInvalidSQL TRUE|FALSE
Configure 유틸리티가 pureQueryXML 파일에서 유효하지 않다고 표시되는 SQL문을 제거할지 여부를 지정합니다.

유효한 값은 TRUEFALSE입니다. 기본값은 FALSE이며 유효하지 않은 SQL문은 pureQueryXML 파일에서 제거됩니다.

TRUE
Configure 유틸리티는 pureQueryXML 파일에서 유효하지 않다고 표시되는 SQL문을 제거합니다.

명령문 세트의 configureStatus 속성 값이 FINAL인 경우 명령문 세트의 유효하지 않은 SQL문이 제거됩니다. 경고 메시지가 표시됩니다.

-restoreInvalidSQLForce 옵션을 값 TRUE와 함께 지정하는 경우에도 오류가 표시됩니다.

FALSE
값이 FALSE이거나 옵션이 지정되지 않는 경우 pureQueryXML 파일에서 유효하지 않다고 표시되는 SQL문에 조치가 수행되지 않습니다.

유효하지 않다고 표시되는 SQL문에 대한 정보는 pureQuery StaticBinder 유틸리티 옵션 -statementBindError를 참조하십시오.

-restoreInvalidSQLForce TRUE|FALSE
Configure 유틸리티가 pureQueryXML 파일에서 유효하지 않다고 표시되는 SQL문을 복원할지 여부를 지정합니다. SQL문이 복원된 후에 pureQuery Runtime과 함께 사용할 수 있습니다. 이 옵션을 사용하여 실수로 유효하지 않다고 표시된 SQL문을 복원하십시오.

유효한 값은 TRUEFALSE입니다. 기본값은 FALSE이며 유효하지 않다고 표시되는 SQL문이 복원되지 않습니다.

TRUE
Configure 유틸리티는 pureQuery Runtime이 일반적으로 사용하도록 유효하지 않은 SQL문을 복원합니다.

-removeInvalidSQL 옵션을 값 TRUE와 함께 지정하는 경우에도 오류가 표시됩니다.

주: 세트의 configureStatus 속성이 FINAL이라도 Configure 유틸리티는 명령문 세트에서 SQL문을 복원합니다.
FALSE
값이 FALSE이거나 옵션이 지정되지 않는 경우 유효하지 않은 SQL이 변경되지 않습니다.

유효하지 않은 SQL문을 복원할 때 Configure 유틸리티는 더 이상 유효하지 않다고 표시되지 않도록 유효하지 않은 SQL문을 업데이트합니다. 또한 pureQuery Runtime이 SQL문을 유효한 명령문으로 인식하도록 Configure 유틸리티가 pureQueryXML 파일에서 기타 변경사항을 작성합니다. 예를 들어, SQL문에 섹션 번호가 지정됩니다.

유효하지 않다고 표시되는 SQL문에 대한 정보는 pureQuery StaticBinder 유틸리티 옵션 -statementBindError를 참조하십시오.

-rootPkgName package-name-stem
DB2 패키지로 사용할 이름의 어간을 지정합니다. Configure 유틸리티의 DB2 패키지 이름 작성 방법에 대해서는 sqlLimit 설명을 참조하십시오.

package-name-stem은 사용 중인 DB2 데이터베이스에서 설정한 제한조건 내에 있어야 합니다.

DB2 패키지를 작성하지 않고 DBRM 파일을 생성하는 pureQuery StaticBinder 유틸리티를 사용하려는 경우, package-name-stem은 대문자여야 하며 6자를 초과해서는 안됩니다. pureQueryXml 파일에 DDL문을 포함하거나 패키지당 명령문 수(sqlLimit로 지정된)에 도달하면 구성 유틸리티는 이름 어간에 문자를 추가합니다. StaticBinder 유틸리티를 사용하여 DBRM 파일과 package-name-stem의 조합을 생성하면, 구성 유틸리티의 활동 때문에 추가 문자 및 분리 레벨이 8자보다 길며 StaticBinder 유틸리티가 예외로 처리합니다.

-setPreStatusOfAllPkgs AUTO|FINAL|REQUIRED
패키지 상태를 지정합니다. Configure 구성요소는 명령문 세트를 처리하기 전에 모든 명령문 세트를 지정된 상태로 설정합니다. 값은 AUTO, FINAL 또는 REQUIRED로 설정될 수 있습니다.
-cleanConfigure 옵션이 FALSE로 설정되거나 지정되지 않은 경우, -setPreStatusOfAllPkgs 값이 지정되면 다음 처리가 발생합니다.
  • AUTO: 이름 지정되지 않은 명령문 세트가 평소대로 구성됩니다. 필요한 경우에만 이름 지정된 세트를 유효성 확인하고 구성합니다.
  • FINAL: 모든 이름 지정된 명령문 세트의 상태를 FINAL로 설정합니다. 이름 지정되지 않은 패키지의 상태를 무시하고 패키지를 구성합니다. 이름 지정된 명령문 세트를 유효성 확인하고 경고를 인쇄합니다.
  • REQUIRED: 이름 지정되지 않은 패키지의 경우, 이 값이 기본입니다. 이름 지정된 명령문 세트의 경우, 구성이 수행되고 -collection, -forceSingleBindIsolation, -markDDLForBind, pkgVersion 및 -allowStaticRowsetCursors 옵션에 지정된 모든 새 옵션 값이 이름 지정된 패키지에 적용됩니다.

-cleanConfigure 옵션이 TRUE로 설정된 경우, -setPreStatusOfAllPkgs 옵션은 무시됩니다. 메시지가 로그되지 않습니다.

-setPostStatusOfAllPkgs FINAL
처리 후 Configure 유틸리티가 출력 pureQueryXML 파일에 있는 모든 명령문 세트의 상태를 FINAL로 설정함을 지정합니다.
-setPostStatusOfAllPkgs 옵션의 값이 FINAL일 때 다음이 발생합니다.
  • -cleanConfigure 옵션이 FALSE로 설정되거나 지정되지 않는 경우 이름 지정되지 않은 모든 명령문 세트가 구성되고 이름 지정된 모든 명령문 세트가 필요에 따라 유효성 검증되고 구성되며 모든 패키지의 상태는 FINAL로 설정됩니다.
  • -cleanConfigure 옵션이 TRUE로 설정되면 모든 SQL문을 구성하고 모든 명령문 세트의 상태를 FINAL로 설정하십시오.
-showDetails TRUE|FALSE
구성 유틸리티가 활동 요약을 표시하는지 여부를 지정합니다. 기본값은 FALSE입니다.
-sqlLimit number
DB2 패키지에 허용된 SQL문 수의 한계를 지정합니다. 일반적으로 SQL문의 수가 이 한계를 초과하면 pureQuery StaticBinder 유틸리티는 초과 명령문을 포함하는 다른 패키지를 바인드합니다. 일부의 경우 StaticBinder 유틸리티는 패키지에 추가 SQL문을 포함합니다.

기본값은 100입니다.

예를 들어, 루트 이름 myPackage를 사용하여 네 개의 패키지(네 개의 다른 분리 레벨에 대한 패키지)를 바인드하고 데이터베이스가 긴 패키지 이름을 지원한다고 가정하십시오. 사용 중인 pureQueryXML 파일에 101 - 199개 사이의 명령문이 포함되어 있고 sqlLimit의 기본값을 사용하는 경우, 바인드 조작으로 다음 패키지가 작성됩니다.
표 1. 패키지 테이블
  처음 100개의 SQL문을 포함한 패키지 다음 n개의 SQL문을 포함한 패키지(100 < n < 200)
CS 분리 레벨 myPackageA1 myPackageB1
RR 분리 레벨 myPackageA2 myPackageB2
RS 분리 레벨 myPackageA3 myPackageB3
UR 분리 레벨 myPackageA4 myPackageB4

숫자는 패키지의 분리 레벨을 지정하고 문자는 sqlLimit 값으로 인해 작성된 패키지 수 및 pureQueryXML 파일의 명령문 수를 지정합니다. 문자는 영문자 순입니다. z자에 도달하고 패키지를 더 작성해야 하는 경우, AA, AB, AC 등으로 문자가 계속 추가됩니다. 데이터베이스의 이름이 너무 길어지면 루트 패키지 이름의 길이를 줄이거나 sqlLimit의 값을 늘리십시오. 단일 분리 레벨로 패키지를 작성하려는 경우 -forceSingleBindIsolation 옵션을 사용하여 분리 레벨을 표시하는 번호를 제거할 수도 있습니다.

DB2 패키지를 나타내는 명령문 세트를 작성할 때 Configure 유틸리티가 SQL문 한계를 초과하는 경우입니다. 커서를 조작하는 모든 SQL문은 해당 커서에 대한 DECLARE CURSOR문과 같은 패키지에 있어야 합니다. 예를 들어, 애플리케이션에서 같은 커서를 참조하는 15개의 다른 UPDATE문을 실행하는 경우, 15개 명령문 모두 해당 커서의 DECLARE CURSOR문이 있는 DB2 패키지에 있어야 합니다.

최상의 애플리케이션 성능을 위해 sqlLimit를 400보다 높은 값으로 설정하지 마십시오.

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에 기록됩니다.
-validateXml TRUE|FALSE
Speci입력 pureQueryXML 파일에 대해 pureQueryXML 스키마를 사용하여 XML 스키마 유효성 확인이 수행되는지 여부를 지정합니다. 값이 TRUE이면 유효성 확인이 수행됩니다. 값이 FALSE이거나 옵션이 지정되지 않으면 유효성 확인이 수행되지 않습니다. 기본값은 FALSE입니다.

각 입력 파일에 대해 XML 스키마 유효성 확인의 성공 또는 실패가 판별 및 보고됩니다. 하나의 입력 파일이 실패하는 경우 구성 처리가 중지되지 않고 연속 파일이 프로세스됩니다.

pureQueryXML 파일이 스키마 유효성 확인에 실패하는 경우, 해당 파일에 대해 구성 조치가 완료되지 않습니다. 첫 번째 스키마 유효성 확인 오류 및 파일 구성 실패가 보고됩니다.

현재 릴리스 또는 이전 버전의 pureQueryXML 파일(버전 4 또는 3)에 대해서만 유효성 확인이 수행됩니다. 이전 버전의 pureQueryXML 파일이 발견되는 경우, 해당 파일에 대해 유효성 확인이 수행되지 않습니다.

유효성 확인 오류는 Configure 유틸리티 출력의 일부로 인쇄됩니다.

-help
요약 사용 정보를 표시합니다.
옵션 파일에서 유효하지 않습니다.

Configure 유틸리티의 출력

Configure 유틸리티는 업데이트하는 모든 pureQueryXML 파일에 대해 한 개에서 네 개까지의 추가 파일을 생성합니다.
  • Configure 유틸리티가 항상 작성하는 첫 번째 생성 파일은 사용자가 제공한 pureQueryXML 파일의 사본입니다. pureQueryXML 파일의 이름이 sampleJDBC.pdqxml인 경우, 사본은 sampleJDBC.pdqxml.org입니다. 여기서 "org"는 "original"의 약어입니다.
  • Configure 유틸리티를 실행할 때 -pkgVersion 옵션으로 버전 ID를 지정하는 경우 두 번째 파일이 생성됩니다. Configure 유틸리티가 파일을 변경하면 pureQueryXML 파일의 사본 이름에 버전 ID를 추가합니다. 예를 들어, -pkgVersion Ver1.0 -pureQueryXml sampleJDBC.pdqxml은 이름이 sampleJDBC.pdqxml_Ver1.0인 파일을 생성합니다. Configure 유틸리티가 파일을 변경하지 않으면 버전 ID가 있는 파일 사본을 작성하지 않습니다.
    애플리케이션과 연관된 DB2 패키지의 이전 버전으로 전환할 수 있기를 원하는 경우, 버전화를 사용할 수 있습니다. 예를 들어, 다음 세 개의 pureQueryXML 파일이 있다고 가정하십시오.
    • 동일한 sampleJDBC.pdqxmlsampleJDBC.pdqxml_3.0
    • sampleJDBC.pdqxml_2.5
    • sampleJDBC.pdqxml_2.0
    또한 동일한 버전 번호를 사용하는 해당 DB2 패키지도 있습니다. 최신 DB2 패키지(버전 3.0)에 대해 애플리케이션을 실행한 후 이전 패키지(버전 2.5)로 되돌아가기로 결정합니다. 현재 sampleJDBC.pdqxml 파일을 sampleJDBC.pdqxml_2.5의 사본으로 바꾼 다음 애플리케이션을 실행합니다. 그런 다음, DB2 패키지의 버전 3.0으로 되돌아가려는 경우에는 간단히 sampleJDBC.pdqxmlsampleJDBC.pdqxml_3.0 사본으로 바꿉니다.
  • 세 번째 파일은 pureQueryXML 파일에 DDL문이 포함되어 있는 경우에 생성됩니다. DECLARE GLOBAL TEMPORARY TABLE문을 제외하고 Configure 유틸리티는 pureQueryXML 파일에 있는 모든 DDL문을 파일 유형이 .ddl인 텍스트 파일에 복사합니다. 이 파일을 통해, 데이터베이스 관리자는 DDL문을 참조하는 DML문을 바인드하기 전에 목표 DBMS에서 명령문을 실행할 수 있습니다. DDL문이 작성하거나 변경하는 데이터베이스 오브젝트가 있어야 해당 오브젝트를 참조하는 DML문이 바인드될 수 있습니다. 이 .ddl 파일을 편집해야 할 수도 있습니다. 예를 들어, 일치하는 CREATE TABLE 또는 CREATE VIEW 명령문 후에 파일이 DROP 명령문을 포함하는 경우 DROP 명령문을 제거해야 합니다.
  • -optionsFileForBind 옵션을 지정하면 네 번째 파일이 생성됩니다. Configure 유틸리티는 DB2 바인드 옵션을 포함하고 있는 StaticBinder 옵션 파일을 생성합니다. Configure 유틸리티는 경고 및 파일의 내용에 대한 기타 정보를 포함하고 있는 주석을 파일에 추가합니다. 바인드 옵션은 pureQuery StaticBinder 유틸리티에서 사용될 수 있습니다.

Configure 유틸리티가 pureQueryXML 파일에 대해 작성한 업데이트사항을 확인하기 위해 편집기에서 해당 파일을 열 수 있습니다.

Configure 유틸리티로 이미 처리한 pureQueryXML 파일에 더 많은 SQL문을 캡처할 수 있습니다. Configure 유틸리티를 사용하여 pureQueryXML 파일의 새 SQL문을 처리할 때 -cleanConfigure 옵션 사용은 기존 SQL문 및 명령문 세트를 처리하는 방법에 영향을 미칩니다.
  • -cleanConfigure 옵션에 기본값을 사용하면 Configure 유틸리티는 이전에 구성되고 바인드된 기존 명령문 세트를 pureQueryXML 파일에 보존합니다. 정보를 보존할 수 없는 경우 메시지가 표시됩니다.

    pureQueryXML 파일의 SQL문을 사용하여 작성된 DB2 패키지를 계속 사용하려면 이 설정을 사용하십시오.

  • -cleanConfigure 옵션의 값을 TRUE로 설정하면 Configure 유틸리티가 명령문 세트 정보를 보존하지 않습니다.

pureQueryXML 파일에 있는 XML 속성 isBindable

pureQueryXML 파일은 pureQuery Runtime이 캡처한 SQL문 및 관련 정보가 있는 XML 파일입니다. 파일에서 SQL문은 하나 이상의 명령문 세트로 그룹화됩니다. 이름이 isBindable인 XML 속성은 명령문 세트 및 개별 SQL문의 속성입니다. isBindable 속성은 SQL문이 DB2 데이터베이스에서 정적으로 실행되는지 여부를 제어합니다. 속성의 값은 TRUE 또는 FALSE가 될 수 있으며 다음 조치를 제어합니다.
  • 바인드 조작을 수행할지 여부를 나타냅니다. StaticBinder 유틸리티를 실행하여 DB2 데이터베이스에 패키지를 바인드할 때, 유틸리티는 isBindable 속성의 값을 사용하여 패키지를 SQL문 또는 명령문 세트를 사용하여 바인드할 것인지 여부를 결정합니다.
    • 값이 명령문 세트에 대해 TRUE이면 StaticBinder가 바인딩 조작을 수행합니다.
    • 값이 명령문 세트에 대해 FALSE이면 조작을 수행하지 않습니다.
    • 값이 명령문 세트에 대해 TRUE이고 SQL문에 대해 FALSE이면, 바인드 조작을 수행하지만 명령문을 제외합니다.
  • SQL문을 정적으로 실행할지 여부를 나타냅니다. pureQuery Runtime 특성 executionMode이 STATIC으로 설정되고 isBindable 속성의 값이 명령문 세트 및 SQL문에 대해 TRUE일 경우, pureQuery Runtime은 명령문을 정적으로 실행하려고 시도합니다.

    isBindable 속성의 값이 명령문 세트에 대해 TRUE이고 명령문 세트에 있는 SQL문에 대해 FALSE일 경우, 이름이 allowDynamicSQL인 pureQuery Runtime 특성의 값은 pureQuery Runtime이 명령문을 동적으로 실행하려고 시도하는지 여부를 제어하고 오류를 리턴합니다.

    isBindable 속성의 값이 명령문 세트에 대해 FALSE인 경우, pureQuery Runtime 특성allowDynamicSQL의 값은 pureQuery Runtime이 명령문 세트에 있는 SQL문을 동적으로 실행하려고 시도하는지 여부를 제어하거나 오류를 리턴합니다.

워크벤치에 있는 pureQueryXML 편집기를 사용하여 명령문 세트 또는 명령문에 대해 pureQueryXML 파일에 있는 isBindable 속성의 값을 변경할 수 있습니다.

권장사항: IBM은 워크벤치만을 사용하여 pureQueryXML 파일을 편집할 것을 매우 권장합니다. 워크벤치 외의 편집기에서 pureQueryXML 파일을 편집한 경우 파일을 사용하지 못할 수 있습니다.

pureQueryXML 파일을 수동으로 편집하는 경우, 먼저 파일의 백업 사본을 작성한 후 편집해야 합니다. -validateXml 옵션을 pureQuery Merge, Configure 또는 StaticBinder 유틸리티에 사용하여 입력 pureQueryXML 파일에 대한 XML 스키마 유효성 검증을 수행하십시오.

워크벤치 외의 편집기에서 pureQueryXML 파일을 편집해야 하는 경우, 편집하는 명령문 세트의 statementSet 요소 시작 태그에서 configureStatus 속성 값을 REQUIRED로 설정하십시오 파일 편집을 완료한 후, 파일에 대해 Configure 유틸리티를 실행하십시오.

다음 XML 단편은 configureStatus 속성의 값을 REQUIRED로 설정합니다.
<statementSet configureStatus="REQUIRED">

워크벤치 외의 편집기에서 pureQueryXML 파일을 편집하는 경우, 명령문 세트 또는 명령문에 대한 isBindable 속성의 값을 변경할 수 있습니다.

명령문 세트에 대한 isBindable 속성을 변경하려면 명령문 세트 요소의 하위 요소인 패키지 요소에 대한 isBindable 속성의 값을 변경하십시오.

SQL문에 대한 isBindable 속성을 변경하려면 명령문 요소의 하위 요소인 tatementAttributes 요소에 대한 isBindable 속성의 값을 변경하십시오.

다음 XML 단편은 pureQueryXML 파일에 있는 명령문 세트의 일부입니다.
<statementSet configureStatus="AUTO">
      <package collection="NULLID" consistencyToken="0000012551b7579f" isBindable="true" 
            isDDLPackage="false" name="pureQu" version=""/>
      <statements>
         <statement id="1" sectionNumber="1">
            <statementDescriptor>
               <prepareSql>SELECT CID FROM CUSTOMER WHERE CID &gt; 1002 </prepareSql>
               <statementType>QUERY</statementType>
               <resultSetMetadata>
                  <column columnName="CID" columnNameX="CID" databaseName="XMLTEST" 
                      databaseSchema="TEST " db2type="492" length="8" nullable="false" 
                      tableName="CUSTOMER"/>
               </resultSetMetadata>
               <statementAttributes cursorName="DB_PDQ_SPC2" isBindable="true" 
                    prepareOptions="FOR READ ONLY " resultSetConcurrency="CONCUR_READ_ONLY" 
                    resultSetHoldability="HOLD_CURSORS_OVER_COMMIT" 
                    resultSetType="TYPE_FORWARD_ONLY"/>
               <processedSql />
            </statementDescriptor>
            <statementMetadata>
               <traceInfo>
                  <sqlDefinitionStackTraces>
                     <trace>
          . . .
</statementSet>

예제의 XML 단편에서 isBindable 속성은 패키지 요소의 시작 태그에 있습니다. 값은 true입니다.

<package collection="NULLID" consistencyToken="0000012551b7579f" isBindable="true" 
     isDDLPackage="false" name="pureQu" version=""/>

예 명령문 세트에 SQL문 SELECT CID FROM CUSTOMER WHERE CID > 1002가 포함되어 있습니다. XML 단편에서 SQL문의 isBindable 속성은 statementAttributes 요소의 속성입니다. statementAttributes 요소는 SQL문이 포함되어 있는 명령문 요소의 하위 요소입니다. 값은 true입니다.

<statementAttributes cursorName="DB_PDQ_SPC2" isBindable="true" 
      prepareOptions="FOR READ ONLY " resultSetConcurrency="CONCUR_READ_ONLY" 
      resultSetHoldability="HOLD_CURSORS_OVER_COMMIT" 
      resultSetType="TYPE_FORWARD_ONLY"/>

DB2 특수 레지스터

pureQuery Runtime이 DB2 데이터베이스에 대해 실행되는 SQL문을 캡처할 때 일부 DB2 특수 레지스터 값이 추적되어 SQL문과 함께 기록됩니다. 기록된 특수 레지스터 값은 일반적으로 설정되며 변경될 경우 SQL문의 작동에 영향을 줄 수 있습니다.

Configure 유틸리티는 pureQueryXML 파일에 기록된 특수 레지스터 활동을 Configure 유틸리티 활동의 일부로 표시합니다.

SQL문과 함께 기록된 특수 레지스터 정보에 기반한 명령문 세트를 작성하려면 -groupSQLBySpecialRegisters 옵션을 지정하십시오.

SQL문이 캡처될 때 기록된 특수 레지스터 정보에 기반한 바인드 정보를 포함하는 StaticBinder 옵션 파일을 작성하려면 -optionsFileForBind 옵션을 지정하십시오. SQL문 특수 레지스터 정보에 기반한 명령문 세트를 작성하도록 -groupSQLBySpecialRegisters 옵션을 지정하지 않았더라도 StaticBinder 옵션 파일을 작성할 수 있습니다. pureQuery Runtime에 의해 기록된 특수 레지스터 정보 및 파일에 대한 정보는 이 주제의 맨 끝에 있는 관련 링크를 참조하십시오.

pureQueryXML 파일에 있는 특수 레지스터 정보

pureQuery Runtime은 pureQueryXML 파일에 있는 SQL문을 캡처할 때 명령문에 대한 특수 레지스터 정보를 기록합니다. 파일에서 특수 레지스터 정보는 이름이 specialRegValuesSet인 XML 요소에 저장합니다.

specialRegValuesSet 요소는 이름이 specialRegValue인 XML 요소의 인스턴스를 하나 이상 포함합니다. specialRegValueId 속성은 specialRegValue 요소의 속성입니다. specialRegValueId 속성의 값은 specialRegValue 요소의 ID입니다.

specialRegValue 요소는 또한 SQL문이 캡처될 때 기록되는 특수 레지스터 정보 세트를 포함합니다. 캡처된 SQL문은 이름이 statementSet인 XML 요소의 인스턴스에 저장됩니다. 각 statementSet 요소는 이름이 statement인 XML 요소의 인스턴스를 하나 이상 포함합니다. 각 statement 요소는 캡처된 SQL문에 대한 SQL 정보를 포함합니다.

specialRegValueId 속성의 값은 specialRegValue 요소에 있는 특수 레지스터 정보를 SQL문과 관련시키는 데 사용됩니다. pureQuery Runtime은 specialRegValueId 속성의 값을 SQL문의 statementAttributes 요소의 속성 값으로 지정합니다.

pureQuery Runtime에 의해 기록된 특수 레지스터 정보에 대한 내용은 이 주제의 맨 끝에 있는 관련 링크를 참조하십시오.

다음 XML 단편은 pureQueryXML 파일에 있는 specialRegValuesSet 요소의 예제입니다.

<specialRegValuesSet>
    <specialRegValue specialRegValueId="0" 
         specialRegisterVectorValue="UNTRACKED_SET: FALSE|
         SCHEMA: MYTEST |
         PATH: &quot;SYSIBM&quot;,&quot;SYSFUN&quot;,&quot;SYSPROC&quot;,
            &quot;SYSIBMADM&quot;,&quot;MYTEST&quot;|
         SQLID: MYTEST |
         DECFLOAT ROUNDING: ROUND_HALF_EVEN"/>
    <specialRegValue specialRegValueId="1" 
         specialRegisterVectorValue="UNTRACKED_SET: FALSE|
         SCHEMA: DB2ADMIN|
         PATH: &quot;SYSIBM&quot;,&quot;SYSFUN&quot;,&quot;SYSPROC&quot;,
            &quot;SYSIBMADM&quot;,&quot;DB2ADMIN&quot;|
         SQLID: DB2ADMIN|
         DECFLOAT ROUNDING: ROUND_HALF_EVEN"/>
</specialRegValuesSet> 
다음 pureQueryXML 파일의 단편은 pureQueryXML 파일에 있는 SQL문의 명령문 요소의 일부를 보여줍니다.
<statement id="1" sectionNumber="1">
     <statementDescriptor>
        <prepareSql>SELECT count(EMPNO) FROM EMPLOYEE WHERE WORKDEPT NOT LIKE 'E21' </prepareSql>
        <statementType>QUERY</statementType>
        <resultSetMetadata>
           <column columnName="1" databaseName="SAMPLE" db2type="496" length="4" nullable="false" 
               unnamedColumn="1"/>
        </resultSetMetadata>
        <statementAttributes cursorName="DB_PDQ_SPC5" 
            isBindable="true" prepareOptions="FOR READ ONLY " resultSetConcurrency="CONCUR_READ_ONLY" 
            resultSetHoldability="HOLD_CURSORS_OVER_COMMIT" resultSetType="TYPE_FORWARD_ONLY" 
            specialRegValuesUsed="0,1"/>
        <processedSql />
     </statementDescriptor>
     . . .
</statement>

예제에서 statementAttributes 요소에 대한 specialRegValuesUsed 속성의 값은 두 개의 특수 레지스터 세트 ID를 지정합니다. 세트 ID의 값은 0 및 1입니다. pureQuery Runtime이 SQL문을 여러 번 캡처했습니다. pureQuery가 명령문을 캡처할 때 두 개의 다른 특수 레지스터 정보 세트가 기록되었습니다.

처음 두 파일에 대해 Configure 유틸리티를 실행하는 예제

pureQuery가 아닌 API 애플리케이션이 작성하는 각 연결에 대해 하나씩 두 개의 pureQueryXML 파일이 있다고 가정하십시오. 파일의 이름은 capture_sales.pdqxml(450개의 SQL문을 포함) 및 capture_employee.pdqxml(역시 450개의 SQL을 포함하고 그 중 50개는 DDL문임)입니다.

이러한 파일에 대해 처음 유틸리티를 실행하려는 경우 다음 값을 Configure 유틸리티에 제공하려고 합니다.

표 2. Configure 유틸리티에 대한 예제 값
Configure 유틸리티의 옵션 capture_sales.pdqxml capture_employee.pdqxml
-collection 첫 번째 두 번째
-markDDLForBind FALSE FALSE
-pkgVersion 1.0 1.0
-rootPkgName PK001S PK005E
-sqlLimit 200 200
이 상황에서 Configure 유틸리티를 실행하는 데 사용할 수 있는 두 가지 메소드가 있습니다.
  • Configure 유틸리티를 두 번 실행하고 매번 다른 .pdqxml 파일을 제공합니다.
    java com.ibm.pdq.tool.Configure -collection first -pkgVersion 1.0 -rootPkgName PK001S \
    -sqlLimit 200 -pureQueryXml C:\capture_files\capture_sales.pdqxml
    java com.ibm.pdq.tool.Configure -collection second -pkgVersion 1.0 -rootPkgName PK005E \
    -sqlLimit 200 -pureQueryXml C:\capture_files\capture_employee.pdqxml
  • Configure 유틸리티를 한 번 실행하고 .pdqxml 파일이 나열되어 있는 옵션 파일을 제공합니다.

    명령은 다음 명령과 같을 수 있습니다.

    java com.ibm.pdq.tool.Configure -optionsFile myOptionsFile.txt

    운영 체제가 지원하는 이름 및 확장자를 가질 수 있는 옵션 파일에는 다음 항목이 있습니다.

    defaultOptions = -pkgVersion 1.0 -sqlLimit 200
    
    C:\capture_files\capture_sales.pdqxml = -collection first -rootPkgName PK001S
    
    C:\capture_files\capture_employee.pdqxml = -collection second -rootPkgName PK005E
사용하는 메소드와 관계없이 Configure 유틸리티는 다른 옵션에 지정한 값으로 두 .pdqxml 파일을 업데이트합니다. Configure 유틸리티는 또한 다음 파일을 생성합니다.
capture_sales.pdqxml에 기반한 파일
capture_sales.pdqxml.org

capture_sales.pdqxml_1.0

capture_employee.pdqxml에 기반한 파일
capture_employee.pdqxml.org

capture_employee.pdqxml_1.0

capture_employee.ddl

-groupSQLByStrings 옵션을 사용한 명령문 세트 작성 예제

다음 예제는 pureQueryXML 파일에 다음 세 가지 SQL문이 포함되어 있다고 가정합니다.
SELECT * FROM TABLE3
SELECT * FROM TABLE2
SELECT * FROM TABLE1
-groupSQLByStrings 옵션의 값이 (TABLE3) (TABLE2) (TABLE1)인 경우, 명령문은 다음 명령문 세트에 지정됩니다.
Statement set 1: 
    SELECT * FROM TABLE3
Statement set 2: 
    SELECT * FROM TABLE2
Statement set 3: 
    SELECT * FROM TABLE1
값이 (TABLE1) (TABLE3|TABLE2)인 경우, 명령문은 다음 명령문 세트에 지정됩니다.
Statement set 1: 
    SELECT * FROM TABLE1
Statement set 2: 
    SELECT * FROM TABLE2
    SELECT * FROM TABLE3
값이 (TABLE1|TABLE2) (TABLE3|TABLE2)인 경우, 명령문은 다음 명령문 세트에 지정됩니다.
Statement set 1: 
    SELECT * FROM TABLE1, 
    SELECT * FROM TABLE2
Statement set 2: 
    SELECT * FROM TABLE3
주: 여러 명령문 세트 정의에 동일한 테이블 이름을 사용하는 것은 권장되지 않으며 경고 메시지가 로그됩니다.

스키마 이름 및 데이터베이스 위치 업데이트

이름 대체는 단일 패스 프로세스입니다. 예를 들어, "(S1>S2) (S2>S3)" 대체 문자열을 지정하는 경우 S1의 발생은 S2로 대체되며 S2의 원래 발생은 S3로 대체됩니다. Configure 유틸리티는 하나의 패스로 S1을 S2로 대체하지 않으며 다른 패스로 S2를 S3로 대체하지 않습니다.

"(SCH1>SCH2) (SCH2>SCH3)"와 유사한 대체 문자열을 지정하는 경우 pureQueryXML 파일을 여러 번 구성하면 예상치 못한 결과가 발생할 수 있습니다. 처음으로 구성할 때 이름 SCH1은 SCH2로 변경되고 파일에서 원래 SCH2인 이름은 SCH3로 변경됩니다. 두 번째로 파일을 구성할 때, 처음으로 파일을 구성할 때 변경된 이름인 SCH2 인스턴스를 포함하여 이름 SCH2가 SCH3로 변경됩니다. 파일에서 원래 SCH1 또는 SCH2였던 모든 이름은 SCH3로 변경됩니다.

스키마 이름 SCH1을 SCH2로 대체한 후 SCH2를 SCH1으로 대체하는 것과 같은 이름 대체를 수행하려고 합니다. Configure 유틸리티를 두 번 실행하십시오. 먼저 -replaceSchemas "(SCH1>SCH2)" 옵션과 함께 유틸리티를 실행한 후 -replaceSchemas "(SCH2>SCH1)" 옵션과 함께 유틸리티를 다시 실행하십시오.

이름 대체 예

Configure 유틸리티는 ID와 문자열 리터럴 간을 구별할 수 있습니다. 예를 들어, pureQueryXML 파일은 다음 SQL문을 포함합니다. 명령문에서 동일한 ID는 문자열 리터럴에서 스키마 이름으로 표시됩니다.
INSERT INTO "schm0".table0 (col1, col2, col3) values (1, 'schm0', 'col3')
-replaceSchemas "(\"schm0\">\"prodSch\")" 지정 시 유틸리티는 리터럴이 아닌 스키마 이름을 대체합니다.
INSERT INTO "prodSch".table0 (col1, col2, col3) values (1, 'schm0', 'col3')
대체 이름이 공백 문자를 포함하는 경우 유틸리티는 인용 부호 내의 공백 문자를 잘라냅니다. 예를 들어, 다음 두 -replaceLocations 옵션은 동일합니다.
-replaceLocations " (   sample >   testDB ) "
-replaceLocations "(sample > testDB)"
SQL문의 구분된 스키마 및 데이터베이스 위치 이름의 경우 유틸리티는 다음 두 명령문에 표시된 스키마 이름을 변경할 수 있습니다.
SET CURRENT SCHEMA = "schm0"
SET CURRENT SCHEMA = 'schm0';
"('schm0'>'prodSchm')" 또는 "(\"schm0\">\"prodSchm\")" 대체 문자열을 사용하면 두 이름이 인용 부호를 유지한 채 대체됩니다.
SET CURRENT SCHEMA = "prodSchm"
SET CURRENT SCHEMA = 'prodSchm';
다음 SQL문이 Linux, UNIX 및 Windows용 DB2 데이터베이스의 pureQueryXML 파일에 있는 경우:
SET PACKAGE PATH = 'schema1, schema2'
Configure 유틸리티는 두 이름을 스키마 이름으로 인식하고 필요한 경우 이를 대체합니다.
그러나 이 SQL문이 z/OS용 DB2 데이터베이스의 pureQueryXML 파일에 있는 경우 값 abc는 콜렉션 ID이며 변경되지 않습니다.
SET PACKAGE PATH = 'abc'
다음 SET PATH 명령문의 경우 값 schema1은 z/OS용 DB2 및 Linux, UNIX, Windows용 DB2의 스키마 이름입니다.
SET PATH = 'schema1';
이름은 필요한 경우 유틸리티에 의해 변경됩니다.

피드백