pureQuery가 아닌 API 응용프로그램에서 정적 SQL문 실행을 구성하기 위한 Default.genProps 파일의 엔트리 구문

Default.genProps 파일을 사용하여, 바인드된 SQL문을 포함하려는 DB2® 패키지의 옵션을 설정할 수 있습니다.

워크벤치의 편집기에서 이 파일을 열려면 파일을 더블 클릭하십시오. 파일은 Java™ 프로젝트의 pureQueryFolder 폴더에 위치합니다.

이 파일에서 프로젝트의 모든 pureQueryXML 파일에 적용되는 옵션을 지정할 수 있습니다. 또한 개별 pureQueryXML 파일에 특정한 옵션을 지정할 수도 있습니다.

이 파일에 주석을 추가할 수 있습니다. 각 주석은 # 기호로 시작하십시오.

항목을 작성하거나 편집할 때 CTRL+SPACE(또는 이 디폴트값을 변경한 경우 사용자 고유 키 입력)를 입력하여 지원을 사용할 수 있습니다.

구문 다이어그램을 쉽게 이해하려면 구문 다이어그램 읽는 방법을 참조하십시오.

파일을 저장하면, 워크벤치는 그 파일에 대해 Configuration 유틸리티를 실행하고 SQL 아웃라인 보기를 새로 고칩니다. 사용자가 아직 바인드 조작을 수행하지 않았으므로, 보기는 계속 바인드되지 않은 패키지만 표시합니다.

다음 다이어그램은 파일에 나열된 모든 pureQueryXML 파일에 대한 디폴트 옵션 설정에 허용되는 구문을 보여줍니다.

구문 도표 읽기시각적 구문 도표 생략
>>-defaultOptions--=--+-----------------------------------+----->
                      |               .-NULLID----------. |   
                      '- -collection--+-collection-name-+-'   

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

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

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

>--+------------------------+--+-----------------------+-------><
   |             .-100----. |  |                   (1) |   
   '- -sqlLimit--+-number-+-'  '-| Trace options |-----'   

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

다음 구문 다이어그램은 파일에 나열된 개별 pureQueryXML 파일에 대한 옵션 설정에 허용되는 구문을 보여줍니다.

구문 도표 읽기시각적 구문 도표 생략
>>-pureQueryXML-file--+-----------------------------------+----->
                      |               .-NULLID----------. |   
                      '- -collection--+-collection-name-+-'   

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

>--+------------------------+--+-----------------------+-------><
   |             .-100----. |  |                   (1) |   
   '- -sqlLimit--+-number-+-'  '-| Trace options |-----'   

주:
  1. 구문의 경우 해당 옵션의 설명을 참조하십시오.
pureQueryXML-file
옵션 파일의 이 행에 있는 옵션이 pureQueryXML 파일에 있는 SQL문에만 적용되도록 지정합니다. 해당 옵션은 디폴트값으로 지정한 옵션을 겹쳐씁니다.
이 파일의 이름은 .pdqxml 또는 .xml 확장자로 끝나야 합니다.

파일 이름에 추가하여 파일의 절대 경로를 지정해야 합니다.

-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 버전으로 작성되며, 명령문은 행 세트 커서를 사용한다고 표시되지 않습니다.

IBM Data Server Driver for JDBC and SQLJ 등록 정보에서 행 세트 커서가 사용되어야 한다고 표시되면 z/OS용 DB2만 행 세트 커서를 사용합니다. 다른 유형의 데이터 소스에서 캡처하거나 행 세트 커서가 사용 가능하지 않다면 캡처한 명령문은 행 세트 커서를 사용하지 않습니다.

행 세트 커서가 포워드 온리(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는 행 세트 커서를 사용하도록 지정된 명령문에 대해 행 세트 커서를 사용하려고 시도하지 않습니다.

이 옵션을 지정하지 않은 경우, 명령문을 캡처했을 때 JDBC 및 SQLJ용 IBM 데이터 서버 드라이버가 행 세트 커서를 사용한 명령문에 대해 디폴트로 pureQuery는 행 세트 커서를 사용합니다.

-cleanConfigure TRUE | FALSE
구성 유틸리티가 pureQueryXML 파일을 처리하기를 원하는 Extent를 지정합니다.
TRUE
모든 명령문 세트에 대해 구성 유틸리티는 configureStatus의 값을 자동으로 설정합니다.명령문 세트 configureStatus 값 FINAL을 겹쳐씁니다.

처리 동안 sqlLimit, groupSQLByStringgroupSQLBySpecialRegister와 같이 지정된 옵션에 따라 모든 SQL문이 명령문 세트로 구성됩니다. 출력 파일의 명령문 세트는 입력 파일의 명령문 세트와 다를 수 있습니다.

값에 -rootPkgName 옵션을 입력해야 합니다.

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

이 값이 디폴트값입니다. 값에 -rootPkgName 옵션을 입력해야 합니다.

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

configureStatus REQUIRED인 이름 지정된 명령문 세트의 경우 -collection, -pkgVersion , -forceSingleBindIsolation 및 -markDDLForBind와 같은 일부 옵션이 적용됩니다. 일관성 토큰이 갱신됩니다.

configureStatus 플래그가 AUTO로 설정된 이름 지정된 명령문 세트의 경우, 구성 유틸리티가 명령문 세트를 수정해야 한다고 판별하는 경우에만 구성에 옵션이 적용됩니다. 명령문 세트가 수정되지 않으면 일관성 토큰은 갱신되지 않습니다.

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

-collection collection-name
pureQuery StaticBinder 유틸리티가 바인드하는 패키지의 규정자입니다. 규정자는 사용 중인 DB2 데이터베이스의 콜렉션 이름에 대한 제한조건을 충족해야 합니다.
이 매개변수를 지정하지 않으면 NULLID가 디폴트값으로 설정됩니다.
defaultOptions
행의 옵션이 이 파일에 나열된 모든 pureQueryXML 파일의 SQL문에 적용되도록 지정합니다. 파일의 한 행만 이 키워드로 시작할 수 있습니다.
-forceSingleBindIsolation TRUE | FALSE
단일 분리 레벨로 DB2 패키지를 작성할 지 그리고 패키지 이름에 번호를 추가하여 분리 레벨을 표시할 지 여부를 지정합니다. 디폴트 값은 false이며 숫자 표시기가 추가된다는 것을 의미합니다.
Default.bindProps 파일에서 -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 옵션을 사용하지 마십시오.

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

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

이 옵션을 지정하지 않으면 연속 바인드에서 오는 데이터베이스 패키지가 버전 없이 작성됩니다.

AUTO
버전이 현재 시간소인을 사용하여 자동으로 생성하도록 지정합니다.
version-ID
패키지의 버전 ID를 지정합니다. 이 문자열은 사용 중인 DB2의 버전에 대해 유효해야 합니다.
구성 유틸리티는 파일의 이름에 버전 ID를 추가하며, pureQueryXML 파일의 사본을 작성합니다. 그러므로 버전 ID에는 운영 체제의 파일 이름에 유효한 문자만을 포함할 수 있습니다. 또한 문자열의 길이 및 패키지 이름은 운영 체제가 파일 이름으로 지원하는 길이를 초과할 수 없습니다.

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

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

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

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

-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 패키지를 나타내는 명령문 세트를 작성할 때 구성 유틸리티가 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 이외의 값으로 설정하는 경우, 항목이 콘솔 보기에 작성됩니다.

피드백