사용자가 설정한 특성은 pureQueryXML 파일에 추가됩니다. pureQueryXML 파일에 있는 SQL문을 DB2 패키지에 바인드하기 위해 StaticBinder 유틸리티를 실행하면 StaticBinder 유틸리티가 이들 특성을 읽습니다. pureQuery Runtime은 또한 SQL문을 정적으로 실행할 때 파일에 있는 콜렉션 ID, 패키지 ID, 버전 ID 및 섹션 번호와 같은 정보를 사용합니다.
이 주제에는 다음과 같은 섹션이 있습니다.
다이어그램에서 사용되는 규칙을 이해하려면 구문 다이어그램 읽는 방법을 참조하십시오.
Configure 유틸리티 옵션 파일은 pureQuery Configure 유틸리티가 처리할 pureQueryXML 파일 또는 pureQueryXML 파일 및 Configure 유틸리티에 pureQueryXML 파일의 처리 방법을 지시하는 옵션을 나열합니다. 옵션 파일에서 나열된 pureQueryXML 파일 모두에 적용되는 기본 옵션을 설정할 수 있습니다. pureQueryXml 파일에 옵션을 설정하여 기본 옵션을 겹쳐쓰고 개별 pureQueryXML 파일에 특정적인 기타 옵션을 설정할 수도 있습니다.
Configure 유틸리티를 실행할 명령에 -optionsFile 옵션과 함께 사용할 파일을 지정할 수 있습니다.
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"
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-. | '- -showDetails--+-TRUE--+-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+------------------------+-----------------------------------> | .-100----. | '- -sqlLimit--+-number-+-' >--+--------------------------------------+---------------------> '- -removeSQLInactiveForDays----days---' >--+---------------------------------------+--------------------> '- -setPreStatusOfAllPkgs--+-AUTO-----+-' +-FINAL----+ '-REQUIRED-' >--+---------------------------------+--------------------------> '- -setPostStatusOfAllPkgs--FINAL-' >--+-----------------------------------------+------------------> | .-FALSE-. | '- -groupSQLBySpecialRegisters--+-TRUE--+-' >--+-------------------------------------------+----------------> | .------------------. | | | .-|------. | | | V V | | | '- -groupSQLByStrings----(----string-+--)-+-' >--+-------------------------------------------------------------+--> '- -optionsFileForBind--+-bind-options-file-----------------+-' '-DEFAULT_IN_PUREQUERYXML_DIRECTORY-' >--+--------------------------+--+-----------------------+------> | .-FALSE-. | | (2) | '- -validateXml--+-TRUE--+-' '-| Trace options |-----' >-- -pureQueryXml--pureQueryXML-file--+--------+--------------->< '- -help-'
pureQueryXML 파일이 둘 이상 있는 경우, 명령과 옵션 파일을 사용하여 pureQueryXML 파일의 이름 및 DB2 패키지에 대한 옵션을 지정하십시오. pureQueryXML 파일이 하나만 있는 경우에도 명령 및 옵션 파일을 사용할 수 있습니다.
>>-java--com.ibm.pdq.tools.Configure----------------------------> >-- -optionsFile--file-name--+-----------------------+--------->< | (1) | '-| Trace options |-----'
이 구문 다이어그램에서는 옵션 파일에 나열하는 모든 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-. | '- -showDetails--+-TRUE--+-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+------------------------+-----------------------------------> | .-100----. | '- -sqlLimit--+-number-+-' >--+--------------------------------------+---------------------> '- -removeSQLInactiveForDays----days---' >--+---------------------------------------+--------------------> '- -setPreStatusOfAllPkgs--+-AUTO-----+-' +-FINAL----+ '-REQUIRED-' >--+---------------------------------+--------------------------> '- -setPostStatusOfAllPkgs--FINAL-' >--+-----------------------------------------+------------------> | .-FALSE-. | '- -groupSQLBySpecialRegisters--+-TRUE--+-' >--+-------------------------------------------+----------------> | .------------------. | | | .-|------. | | | V V | | | '- -groupSQLByStrings----(----string-+--)-+-' >--+-------------------------------------------------------------+--> '- -optionsFileForBind--+-bind-options-file-----------------+-' '-DEFAULT_IN_PUREQUERYXML_DIRECTORY-' >--+--------------------------+--+-----------------------+----->< | .-FALSE-. | | (2) | '- -validateXml--+-TRUE--+-' '-| Trace options |-----'
이 구문 다이어그램에서는 옵션 파일에 나열하는 각 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-. | '- -showDetails--+-TRUE--+-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+------------------------+-----------------------------------> | .-100----. | '- -sqlLimit--+-number-+-' >--+--------------------------------------+---------------------> '- -removeSQLInactiveForDays----days---' >--+---------------------------------------+--------------------> '- -setPreStatusOfAllPkgs--+-AUTO-----+-' +-FINAL----+ '-REQUIRED-' >--+---------------------------------+--------------------------> '- -setPostStatusOfAllPkgs--FINAL-' >--+-----------------------------------------+------------------> | .-FALSE-. | '- -groupSQLBySpecialRegisters--+-TRUE--+-' >--+-------------------------------------------+----------------> | .------------------. | | | .-|------. | | | V V | | | '- -groupSQLByStrings----(----string-+--)-+-' >--+--------------------------+-------------------------------->< | .-FALSE-. | '- -validateXml--+-TRUE--+-'
z/OS용 DB2만 행 세트 커서를 지원합니다. 행 세트 커서는 IBM Data Server Driver for JDBC and SQLJ 특성에서 해당 커서를 사용해야 한다고 표시하는 경우에만 사용합니다. 다른 유형의 데이터 소스에서 캡처하거나 행 세트 커서가 사용 가능하지 않다면 캡처한 명령문은 행 세트 커서를 사용하지 않습니다.
행 세트 커서가 포워드 온리(forward-only) 커서를 사용하지 않는 경우, 유형 4 연결은 내부적으로 유사한 메커니즘을 사용하여 네트워크 트래픽을 최소화할 수 있습니다.
이 옵션은 다음 4개의 값 중 하나입니다.
이들 조건이 참인 경우 이 옵션을 사용하지 않아도 됩니다.
이들 조건 중 하나가 참인 경우 pureQuery는 명령문을 갱신할 수 있는 것으로 간주합니다.
행 세트 커서를 지원하지 않는 데이터 소스에 대해 명령문을 정적으로 실행하면, pureQuery는 행 세트 커서를 사용하도록 지정된 명령문에 대해 행 세트 커서를 사용하려고 시도하지 않습니다.
이 옵션을 지정하지 않은 경우, 명령문을 캡처했을 때 JDBC 및 SQLJ용 IBM 데이터 서버 드라이버가 행 세트 커서를 사용한 명령문에 대해 기본으로 pureQuery는 행 세트 커서를 사용합니다.
모든 명령문 세트에 대해 Configure 유틸리티는 구성 프로세스에서 configureStatus의 값을 AUTO로 설정합니다. 명령문 세트 configureStatus 값 FINAL을 겹쳐씁니다.
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 옵션이 지정되고 명령문의 시간소인이 제거 기준과 일치하는 경우 명령문 세트에서 명령문이 제거될 수 있습니다. 해당 명령문과 연관된 특수 레지스터 값이 변경되는 경우, 명령문은 다른 명령문 세트로 이동할 수 있습니다.
-isolationLevel 옵션을 사용하여 단일 명령문 세트를 두 개 또는 세 개의 다른 패키지(각 패키지는 다른 분리 수준에 있음)에 바인드하려는 경우, 명령문 세트가 표시되는 pureQueryXML 파일에 대해 Configure 유틸리티를 실행할 때 -forceSingleBindIsolation 옵션을 사용하지 마십시오.
예를 들어, StaticBinder 유틸리티에 대한 옵션 파일에서 다음 두 엔트리를 포함시켰다고 가정하겠습니다.
C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel UR C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel CS
captureFile.pdqxml 파일에 대해 Configure 유틸리티를 실행할 때 -forceSingleBindIsolation 옵션을 사용한 경우 StaticBinder 유틸리티는 다음 조치를 수행합니다.
결과는 CS 분리 수준에서 바인드된 단일 MYPKGA 패키지입니다.
결과가 두 개의 MYPKGA 패키지(하나는 UR 분리 수준에서 다른 하나는 CS 분리 수준에서)가 되도록 하려면, captureFile.pdqxml에 대해 Configure 유틸리티를 실행할 때 -forceSingleBindIsolation 옵션을 사용하지 마십시오.
-groupSQLBySpecialRegisters 및 -groupSQLByStrings 옵션을 모두 사용하여 명령문 세트를 작성하는 경우, 명령문은 먼저 특수 레지스터 값으로 그룹화됩니다. 특수 레지스터를 기준으로 한 각 그룹에 대해 -groupSQLByStrings 옵션으로 지정된 값을 기준으로 SQL문이 그룹화됩니다. 그룹화가 완료된 후, 필요에 따라 -sqlLimit를 기준으로 한 그룹화가 수행됩니다. 명령문 세트가 작성된 후 이름이 지정됩니다.
pureQueryXML 파일에 이름 지정된 패키지 및 이름 지정되지 않은 패키지 조합이 포함되어 있고 -cleanConfigure 옵션이 FALSE로 설정된 경우, 이름 지정되지 않은 패키지만 그룹화되며 이름 지정된 패키지의 그룹화는 변경되지 않습니다. -cleanConfigure 옵션이 TRUE로 설정된 경우, 모든 패키지(이름 지정된 패키지 및 이름 지정되지 않은 패키지)에 있는 SQL문이 그룹화됩니다.
SQL문을 정적으로 실행하는 경우, -groupSQLBySpecialRegisters 옵션과 -optionsFileForBind 옵션을 사용하여 패키지를 DB2 데이터베이스에 바인드할 수 있습니다.
pureQuery Runtime에 의해 기록된 특수 레지스터 정보에 대한 내용은 이 주제의 맨 끝에 있는 관련 링크를 참조하십시오.
각 괄호 세트로 묶인 문자열은 SQL문을 검색하고 이를 명령문 세트로 그룹화하는 데 사용됩니다. SQL문을 명령문 세트에 지정할 때 문자열을 수직바( | )로 구분하여 여러 문자열을 사용할 수 있습니다. 동일한 문자열이 여러 번 표시되거나 문자열이 다른 문자열의 서브스트링인 경우 경고가 로그됩니다.
문자열에 명령문이 포함된 경우 SQL문이 명령문 세트에 지정됩니다. 명령문 세트를 작성하는 데 여러 문자열이 사용된 경우, SQL문에 해당 문자열이 포함되어 있으면 이 명령문이 명령문 세트에 지정됩니다.
-groupSQLBySpecialRegisters 및 -groupSQLByStrings 옵션을 모두 사용하여 명령문 세트를 작성하는 경우, 명령문은 먼저 특수 레지스터 값으로 그룹화됩니다. 특수 레지스터를 사용하는 각 그룹 내에서 SQL문은 -groupSQLByStrings 옵션으로 지정한 값을 기준으로 그룹화됩니다. 그룹화가 완료된 후, 필요에 따라 -sqlLimit가 적용되고 작성된 명령문 세트에 이름이 지정됩니다.
pureQueryXML 파일에 이름 지정된 패키지 및 이름 지정되지 않은 패키지 조합이 포함되어 있고 -cleanConfigure 옵션이 FALSE로 설정된 경우, 이름 지정되지 않은 패키지만 그룹화되며 이름 지정된 패키지의 그룹화는 변경되지 않습니다. -cleanConfigure 옵션이 TRUE로 설정된 경우, 모든 패키지(이름 지정된 패키지 및 이름 지정되지 않은 패키지)에 있는 SQL문이 그룹화됩니다.
문자열로 SQL문을 그룹화하는 예제는 예제를 참조하십시오.
올바른 값은 대소문자를 구별하지 않는 문자열 TRUE 및 FALSE입니다. 기본 값은 없습니다.
이 옵션을 지정하지 않으면 Configure 유틸리티는 pureQueryXML 파일에서 이름이 지정되지 않은 명령문 세트에 있는 DDL문에 대해 isBindable이 TRUE인지를 점검합니다. Configure 유틸리티가 DDL문을 이름 지정된 단일 DDL문 세트로 결합할 때 isBindable이 그러한 DDL 문 중 최소 하나에 대해 TRUE이면, 유틸리티는 DDL문 세트의 isBindable 속성을 TRUE로 설정합니다.
명령문 세트의 isBindable 속성의 값이 TRUE이면 StaticBinder 유틸리티는 해당 명령문 세트에서 isBindable 속성의 값이 TRUE인 명령문을 바인드하려고 합니다.
Configure 유틸리티의 defaultOptions 행에 이 값이 지정될 경우, 파일에 나열되어 있는 모든 pureQueryXML 파일이 하나의 디렉토리 안에 있어야 합니다.
파일에 있는 바인드 옵션과 기타 정보는 정적으로 실행되는 SQL문이 응용프로그램에서 발행되고 동적으로 실행되는 SQL문과 유사하게 작동되도록 바인드 옵션 세트를 지정하는 데 도움을 줍니다. pureQuery StaticBinder 유틸리티에서 이 바인드 옵션을 사용하여 DB2 데이터베이스에 패키지를 작성하고 패키지를 데이터베이스에 바인드하십시오.
Configure 유틸리티는 파일에 참조된 명령문 세트 및 특수 레지스터 값에 대한 정보를 포함한 주석을 추가합니다.
Configure 유틸리티는 경고와 함꼐 StaticBinder 옵션 -configureWarning을 추가합니다. 경고는 명령문 세트에서 데이터베이스에 패키지를 바인드한 후 SQL문을 정적으로 실행할 때 SQL문이 예상대로 작동하지 않는 이유를 표시합니다.
Configure 유틸리티를 사용하여 작성한 StaticBinder 옵션 파일에 대한 정보 및 SQL문을 캡처할 때 기록된 특수 레지스터 정보는 이 주제의 맨 끝에 있는 관련 링크를 참조하십시오.
DB2에서는 패키지의 여러 버전이 동시에 존재할 수 있으므로 같은 이름으로 지정된 패키지의 이전 버전을 바꾸지 않고 새 패키지를 바인드할 수 있습니다. 새 패키지에서 문제점이 발생하는 경우 해당 패키지의 이전 버전을 사용할 수 있습니다.
또한 Configure 유틸리티는 버전 ID를 파일 이름에 추가하여 pureQueryXML 파일의 사본을 작성합니다.
버전 ID에는 사용 중인 운영 체제에서 파일 이름에 유효한 문자만을 포함할 수 있습니다. 또한 문자열의 길이 및 패키지 이름은 운영 체제가 파일 이름으로 지원하는 길이를 초과할 수 없습니다.
이 옵션을 지정하고 Configure 유틸리티가 pureQueryXML 파일을 변경하지 않으면 유틸리티는 pureQueryXML 파일의 사본을 작성하지 않습니다.
이 옵션을 지정하지 않으면 후속 바인드에서 발생하는 데이터베이스 패키지가 버전 없이 작성되고 파일 사본이 작성되지 않습니다.
런타임 시 버전 검증은 버전 이름이 아닌 일관성 토큰을 기반으로 합니다.
예를 들어, days 변수가 5이고 현재 날짜가 11/25(11월 25일)인 경우, 시간소인이 11/20(11월 20일)인 SQL문은 기록되지 않습니다.
pureQuery Runtime이 SQL문을 캡처할 때 시간소인이 갱신됩니다.
SQL문에 시간소인이 없는 경우에는 SQL문이 출력 파일에 기록됩니다. 예를 들어, 이전 버전 pureQueryXML 파일에 시간소인 정보가 없을 수 있습니다. 시간소인 정보가 없는 pureQueryXML 파일을 구성할 경우(버전 3 또는 그 이전) 이 옵션이 무시되고 모든 SQL문이 출력 파일에 기록되며 메시지가 표시됩니다.
출력 pureQueryXML 파일에 기록되지 않는 SQL문에 대한 메시지가 로그 파일에 기록됩니다. -showDetails 옵션이 true인 경우, 출력 파일에 기록되지 않은 모든 명령문이 표시됩니다.
package-name-stem은 사용 중인 DB2 데이터베이스에서 설정한 제한조건 내에 있어야 합니다.
DB2 패키지를 작성하지 않고 DBRM 파일을 생성하는 pureQuery StaticBinder 유틸리티를 사용하려는 경우, package-name-stem은 대문자여야 하며 6자를 초과해서는 안됩니다. pureQueryXml 파일에 DDL문을 포함하거나 패키지당 명령문 수(sqlLimit로 지정된)에 도달하면 구성 유틸리티는 이름 어간에 문자를 추가합니다. StaticBinder 유틸리티를 사용하여 DBRM 파일과 package-name-stem의 조합을 생성하면, 구성 유틸리티의 활동 때문에 추가 문자 및 분리 레벨이 8자보다 길며 StaticBinder 유틸리티가 예외로 처리합니다.
-cleanConfigure 옵션이 TRUE로 설정된 경우, -setPreStatusOfAllPkgs 옵션은 무시됩니다. 메시지가 로그되지 않습니다.
기본값은 100입니다.
처음 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보다 높은 값으로 설정하지 마십시오.
>>-+------------------------+--+---------------------------+--->< '- -traceFile--file-name-' | .-OFF-----. | '- -traceLevel--+-ALL-----+-' +-SEVERE--+ +-WARNING-+ +-INFO----+ +-CONFIG--+ +-FINE----+ +-FINER---+ '-FINEST--'
각 입력 파일에 대해 XML 스키마 유효성 확인의 성공 또는 실패가 판별 및 보고됩니다. 하나의 입력 파일이 실패하는 경우, 구성 처리가 중지되지 않고 후속 파일이 처리됩니다.
pureQueryXML 파일이 스키마 유효성 확인에 실패하는 경우, 해당 파일에 대해 구성 조치가 완료되지 않습니다. 첫 번째 스키마 유효성 확인 오류 및 파일 구성 실패가 보고됩니다.
현재 릴리스 또는 이전 버전의 pureQueryXML 파일(버전 4 또는 3)에 대해서만 유효성 확인이 수행됩니다. 이전 버전의 pureQueryXML 파일이 발견되는 경우, 해당 파일에 대해 유효성 확인이 수행되지 않습니다.
유효성 확인 오류는 Configure 유틸리티 출력의 일부로 인쇄됩니다.
Configure 유틸리티가 pureQueryXML 파일에 대해 작성한 갱신사항을 확인하기 위해 편집기에서 해당 파일을 열 수 있습니다.
pureQueryXML 파일의 SQL문을 사용하여 작성된 DB2 패키지를 계속 사용하려면 이 설정을 사용하십시오.
isBindable 속성의 값이 명령문 세트에 대해 TRUE이고 명령문 세트에 있는 SQL문에 대해 FALSE일 경우, 이름이 allowDynamicSQL인 pureQuery Runtime 특성의 값은 pureQuery Runtime이 명령문을 동적으로 실행하려고 시도하는지 여부를 제어하고 오류를 리턴합니다.
isBindable 속성의 값이 명령문 세트에 대해 FALSE인 경우, pureQuery Runtime 특성allowDynamicSQL의 값은 pureQuery Runtime이 명령문 세트에 있는 SQL문을 동적으로 실행하려고 시도하는지 여부를 제어하거나 오류를 리턴합니다.
워크벤치에 있는 pureQueryXML 편집기를 사용하여 명령문 세트 또는 명령문에 대해 pureQueryXML 파일에 있는 isBindable 속성의 값을 변경할 수 있습니다.
pureQueryXML 파일을 수동으로 편집하는 경우, 먼저 파일의 백업 사본을 작성한 후 편집해야 합니다. pureQuery Merge, Configure 또는 StaticBinder 유틸리티에서 -validateXml옵션을 사용하여 입력 pureQueryXML 파일에 대한 XML 스키마 유효성 확인을 수행하십시오.
워크벤치 외의 편집기에서 pureQueryXML 파일을 편집해야 하는 경우, 편집하는 명령문 세트의 statementSet 요소 시작 태그에서 configureStatus 속성 값을 REQUIRED로 설정하십시오 파일 편집을 완료한 후, 파일에 대해 Configure 유틸리티를 실행하십시오.
<statementSet configureStatus="REQUIRED">
워크벤치 외의 편집기에서 pureQueryXML 파일을 편집하는 경우, 명령문 세트 또는 명령문에 대한 isBindable 속성의 값을 변경할 수 있습니다.
명령문 세트에 대한 isBindable 속성을 변경하려면 명령문 세트 요소의 하위 요소인 패키지 요소에 대한 isBindable 속성의 값을 변경하십시오.
SQL문에 대한 isBindable 속성을 변경하려면 명령문 요소의 하위 요소인 tatementAttributes 요소에 대한 isBindable 속성의 값을 변경하십시오.
<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 > 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>SELECT CID FROM CUSTOMER WHERE CID > 1003</processedSql> </statementDescriptor> <statementMetadata> <traceInfo> <sqlDefinitionStackTraces> <trace> . . . </statementSet>
예제의 XML 단편에서 isBindable 속성은 패키지 요소의 시작 태그에 있습니다. 값은 true입니다.
<package collection="NULLID" consistencyToken="0000012551b7579f" isBindable="true" isDDLPackage="false" name="pureQu" version=""/>
예제의 XML 단편에서 명령문 세트에 SQL문 SELECT CID FROM CUSTOMER WHERE CID > 1002가 포함되어 있습니다. 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"/>
pureQuery Runtime이 DB2 데이터베이스에 대해 실행되는 SQL문을 캡처할 때 일부 DB2 특수 레지스터 값이 추적되어 SQL문과 함께 기록됩니다. 기록된 특수 레지스터 값은 일반적으로 설정되며 변경될 경우 SQL문의 작동에 영향을 줄 수 있습니다.
Configure 유틸리티는 pureQueryXML 파일에 기록된 특수 레지스터 활동을 Configure 유틸리티 활동의 일부로 표시합니다.
SQL문과 함께 기록된 특수 레지스터 정보에 기반한 명령문 세트를 작성하려면 -groupSQLBySpecialRegisters 옵션을 지정하십시오.
SQL문이 캡처될 때 기록된 특수 레지스터 정보에 기반한 바인드 정보를 포함하는 StaticBinder 옵션 파일을 작성하려면 -optionsFileForBind 옵션을 지정하십시오. SQL문 특수 레지스터 정보에 기반한 명령문 세트를 작성하도록 -groupSQLBySpecialRegisters 옵션을 지정하지 않았더라도 StaticBinder 옵션 파일을 작성할 수 있습니다. pureQuery Runtime에 의해 기록된 특수 레지스터 정보 및 파일에 대한 정보는 이 주제의 맨 끝에 있는 관련 링크를 참조하십시오.
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: "SYSIBM","SYSFUN","SYSPROC", "SYSIBMADM","MYTEST"| SQLID: MYTEST | DECFLOAT ROUNDING: ROUND_HALF_EVEN"/> <specialRegValue specialRegValueId="1" specialRegisterVectorValue="UNTRACKED_SET: FALSE| SCHEMA: DB2ADMIN| PATH: "SYSIBM","SYSFUN","SYSPROC", "SYSIBMADM","DB2ADMIN"| SQLID: DB2ADMIN| DECFLOAT ROUNDING: ROUND_HALF_EVEN"/> </specialRegValuesSet>
<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>SELECT count(EMPNO) FROM EMPLOYEE WHERE WORKDEPT NOT LIKE 'E22' </processedSql> </statementDescriptor> . . . </statement>
예제에서 statementAttributes 요소에 대한 specialRegValuesUsed 속성의 값은 두 개의 특수 레지스터 세트 ID를 지정합니다. 세트 ID의 값은 1과 2입니다. pureQuery Runtime이 SQL문을 여러 번 캡처했습니다. pureQuery가 명령문을 캡처할 때 두 개의 다른 특수 레지스터 정보 세트가 기록되었습니다.
pureQuery가 아닌 API 애플리케이션이 작성하는 각 연결에 대해 하나씩 두 개의 pureQueryXML 파일이 있다고 가정하십시오. 파일의 이름은 capture_sales.pdqxml(450개의 SQL문을 포함) 및 capture_employee.pdqxml(역시 450개의 SQL을 포함하고 그 중 50개는 DDL문임)입니다.
이러한 파일에 대해 처음 유틸리티를 실행하려는 경우 다음 값을 Configure 유틸리티에 제공하려고 합니다.
Configure 유틸리티의 옵션 | capture_sales.pdqxml | capture_employee.pdqxml |
---|---|---|
-collection | 첫 번째 | 두 번째 |
-markDDLForBind | FALSE | FALSE |
-pkgVersion | 1.0 | 1.0 |
-rootPkgName | PK001S | PK005E |
-sqlLimit | 200 | 200 |
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
명령은 다음과 같을 수 있습니다.
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
capture_sales.pdqxml_1.0
capture_employee.pdqxml_1.0
capture_employee.ddl
SELECT * FROM TABLE3 SELECT * FROM TABLE2 SELECT * FROM TABLE1
Statement set 1: SELECT * FROM TABLE3 Statement set 2: SELECT * FROM TABLE2 Statement set 3: SELECT * FROM TABLE1
Statement set 1: SELECT * FROM TABLE1 Statement set 2: SELECT * FROM TABLE2 SELECT * FROM TABLE3
Statement set 1: SELECT * FROM TABLE1, SELECT * FROM TABLE2 Statement set 2: SELECT * FROM TABLE3
여러 명령문 세트 정의에 동일한 테이블 이름을 사용하는 것은 권장되지 않으며 경고 메시지가 로그됩니다.