Merge 유틸리티

애플리케이션에서 캡처된 SQL문을 포함하고 단일 데이터 소스에 대해 실행하는 두 개 이상의 pureQueryXML 파일을 함께 병합할 수 있습니다. XML 스키마 유효성 확인을 입력 pureQueryXML 파일에 대해 수행할 수 있으며 사용되지 않는 SQL문을 출력 병합 파일에서 제거할 수 있습니다.

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

개요

pureQueryXML 파일을 병합할 수 있는 두 가지 방법이 있습니다.

병합으로 인한 파일에서 해당 파일의 명령문이 보존되도록 하려면 pureQueryXML 파일을 기본 파일로 사용하십시오. 병합에 있는 다른 파일의 SQL문은 pureQuery가 결과 파일 끝에서 작성하는 이름 지정되지 않은 명령문 세트로 이동합니다.
예를 들어, capture.pdqxml이라는 파일에서 애플리케이션을 통해 SQL문을 캡처할 수 있습니다. 이 파일의 SQL문을 직접 또는 Configure 유틸리티를 사용하여 원하는 명령문 세트에 배열하도록 파일을 수정합니다. capture.pdqxml은 Merge 유틸리티 사용 시 기본 파일이 됩니다.
권장사항: IBM®은 워크벤치만을 사용하여 pureQueryXML 파일을 편집할 것을 강력하게 권장합니다. 워크벤치 이외의 편집기에서 pureQueryXML 파일을 편집한 경우 파일을 사용하지 못할 수 있습니다.

워크벤치가 아닌 다른 편집기에서 pureQueryXML 파일을 편집해야 한다면, 편집하는 명령문 세트의 <statementSet> 태그에서 configureStatus 속성 값을 REQUIRED로 설정한 다음(configureStatus="REQUIRED"와 같이), 파일에서 Configure 유틸리티를 실행하십시오.

pureQueryXML 파일의 명령문 세트는 사용자가 하나의 분리 수준에 대해 하나의 패키지를 원하는지, 또는 네 개의 분리 수준 각각에 대해 하나의 패키지를 원하는지 여부에 따라 하나 또는 네 개의 DB2® 패키지에 대한 기초를 형성하는 명령문 세트입니다.

Java 애플리케이션의 경우 Configure 유틸리티가 명령문 세트 이름을 지정할 수 있도록 capture.pdqxml에 대해 Configure 유틸리티를 실행합니다. 그런 다음 동일 애플리케이션의 다른 논리 경로에서 점차적으로 명령문을 캡처할 수 있도록 팀의 다른 구성원에게 이 파일의 사본을 제공합니다. 각 구성원은 사본을 입력 파일로 사용하며 파일을 pureQueryXml 특성의 값으로 지정합니다. 각 구성원은 outputPureQueryXml 특성의 값을 캡처하는 추가 SQL문을 포함할 파일의 이름으로 설정합니다. 팀 구성원은 자신의 출력 파일을 제공합니다. Merge 유틸리티를 실행하여 병합에 제공된 파일의 SQL문을 포함하는 새 파일을 작성합니다. 새 파일을 열면, 기본 파일에 있었던 명령문 세트를 계속 포함하고 있는 것을 보게 됩니다. 팀 구성원이 제공한 출력 파일의 SQL문은 새 파일의 끝에 있는 이름 지정되지 않은 새 명령문 세트에 있습니다.

pureQueryXML 파일 중 하나를 기본 파일로 지정하지 않고 두 개 이상의 pureQueryXML 파일을 병합할 수 있습니다.

병합에서 발생하는 파일에서, Merge 유틸리티는 모든 pureQueryXML 파일의 SQL문을 이름 지정되지 않은 단일 명령문 세트에 결합합니다.

주: -baseFile 옵션이 지정되지 않은 경우, pureQueryXML 파일 목록의 첫 번째 파일이 기본 파일로 사용됩니다. 이 파일은 outputPureQueryXmlpureQueryXML 특성이 모두 지정되었을 때 추가 SQL문을 캡처하기 위해 작성된 pureQueryXML 파일일 수 없습니다. 두 특성이 모두 지정되었을 때 outputPureQueryXmlpureQueryXML 특성으로 지정된 pureQueryXML 파일에는 표시되지 않는 캡처된 SQL문을 포함합니다.

병합 프로세스에 대한 참고사항

다음 목록은 병합 프로세스에 대한 참고사항입니다.
  • 파일을 병합할 때 파일은 다른 속성을 갖는 동일한 SQL문을 포함할 수 있습니다. 다음 목록은 Merge 유틸리티가 다른 속성을 갖는 동일한 SQL문을 처리하는 방법을 설명합니다. 이 설명은 STMT_A 및 STMT_B가 동일한 SQL문이고 STMT_A가 기본 파일이며 STMT_B가 기본 파일에 병합된 파일에 있음을 가정합니다.
    • STMT_A의 parameterType 속성이 SINGLE_ROW_PARAMETERS로 설정되고 STMT_B의 속성이 MULTI_ROW_PARAMETERS로 설정되거나 STMT_B의 mriIndicator 속성이 true로 설정되는 경우 STMT_A의 속성은 MULTI_ROW_PARAMETERS로 설정됩니다.
    • STMT_A의 allowStaticRowsetCursors 속성은 false로 설정되고 STMT_B의 속성은 true로 설정된 경우, STMT_A의 속성은 true로 설정됩니다.

      STMT_A의 값이 이미 true로 설정되어 있거나 STMT_B의 값이 false 또는 비어 있는 문자열("")인 경우 속성이 대체되지 않습니다.

    • STMT_A의 isBindable 속성은 true로 설정되고 STMT_B의 속성은 false로 설정된 경우, STMT_A의 속성은 false로 설정됩니다.
    • 명령문 STMT_A의 커서 이름이 사용자 정의 커서 이름이 아니고 명령문 STMT_B의 커서 이름이 사용자 정의 커서 이름인 경우 STMT_A의 커서 이름이 사용자 정의 커서 이름으로 대체됩니다. 그렇지 않은 경우 커서 이름이 대체되지 않으며 메시지가 로그됩니다.

      사용자 정의 커서 이름이 병합 프로세스 이후에 다른 입력 파일에 있는 경우 이는 무시됩니다.

    • STMT_A의 속성 isSETUsedAfterConnectionInit가 false 또는 널(NULL)이고 STMT_B에 true로 설정된 이 속성이 있는 경우 이는 true로 대체됩니다. 그렇지 않은 경우 속성이 변경되지 않습니다.
    • 속성 executionCount의 경우 해당 값이 Integer.MAX_VALUE의 값보다 낮으면 값이 STMT_A의 Integer.MAX_VALUE 값 또는 STMT_A 및 STMT_B의 executionCount 값의 합으로 설정됩니다.
    • 속성 lastUsedTimestamp를 STMT_A 및 STMT_B에 있는 이후 값으로 업데이트하십시오.
    • 속성 firstUsedTimestamp를 STMT_A 및 STMT_B에 있는 이전 값으로 업데이트하십시오.
    • 속성 maxStmtExecutionTime을 STMT_A 및 STMT_B에 있는 더 큰 값으로 업데이트하십시오.
    • 속성 maxBatchCount and batchExecutionTime을 STMT_A 및 STMT_B에 있는 더 큰 값으로 업데이트 하십시오.
    다음 상황에서 Merge 유틸리티가 속성 변경사항을 로그하고 STMT_A의 속성 값이 변경되지 않습니다.
    • STMT_A의 속성 parameterType이 MULTI_ROW_PARAMETERS로 설정되면 STMT_B의 parameterType이 SINGLE_ROW_PARAMETERS로 설정됩니다.
    • STMT_A의 속성 allowStaticRowsetCursors가 true로 설정되면 STMT_B가 false이거나 비어 있는 문자열입니다.
    • STMT_A의 속성 isBindable이 false로 설정되면 STMT_B는 true입니다.
    • STMT_A의 속성 cursorName에 사용자 정의된 커서가 있고 STMT_B에 사용자 정의된 커서가 없는 경우

    또한 다른 pureQueryXML 파일에 있는 두 개의 명령문이 스택 추적 엔트리를 제외하고 모든 점에서 동일한 경우, 병합으로 발생하는 파일에서 결과로 생성되는 단일 명령문에 대해 다른 스택 추적 엔트리가 결합됩니다.

  • 파일을 병합할 때 특수 레지스터는 다음 방식으로 처리됩니다.
    • STMT_B에 특수 레지스터 벡터 값이 있고 STMT_A에 특수 레지스터 벡터가 없는 경우 STMT_A의 특수 레지스터 속성 incrementalSpecialRegValuesUsed는 STMT_B에서 찾은 해당 값으로 설정됩니다.
    • STMT_A 및 STMT_B 모두에 특수 레지스터 벡터 값이 있는 경우 STMT_A의 특수 레지스터 벡터는 명령문에서 찾은 조합으로 대체됩니다.
  • 출력 병합 파일에서 명령문이 기본 파일 및 모든 입력 파일에 대해 true인 경우 XML 속성 sqlLiteralSubstitution이 NOT_SET로 설정됩니다.
    • XML 속성 sqlLiteralSubstitution이 파일에 포함되어 있지 않습니다.
    • XML 속성 sqlLiteralSubstitution의 값이 NOT_SET로 설정됩니다.
    속성이 입력 파일에 포함되어 있지 않더라도 sqlLiteralSubstitution 속성이 병합 출력 파일에 추가됩니다.
  • 출력 병합 파일에서 기본 파일 또는 하나 이상의 입력 파일에 DISABLE 또는 ENABLE로 설정된 XML 속성 sqlLiteralSubstitution의 값이 있는 경우 XML 속성 sqlLiteralSubstitution의 값이 DISABLE 또는 ENABLE로 설정됩니다.

    Merge 유틸리티는 병합 파일의 값을 DISABLE 또는 ENABLE로 설정된 sqlLiteralSubstitution 속성의 값이 있는 마지막 입력 파일에 지정된 값으로 설정합니다.

    XML 속성 sqlLiteralSubstitution의 값이 하나 이상의 입력 파일에서 DISABLE로 설정되고 기타 입력 파일에서 ENABLE로 설정되는 경우 유틸리티가 경고 메시지를 표시합니다.

  • 병합에서 발생하는 파일에 이름 지정되지 않은 명령문 세트가 포함되는 경우, 이 파일에 대해 Configure 유틸리티를 실행한 후 StaticBinder 유틸리티를 실행해야 합니다.
  • IBM은 파일 병합 후 구성을 실행하여 병합 결과를 StaticBinder 유틸리티에 사용할 수 있는지 확인할 것을 권장합니다.

Merge 명령의 구문

구문 도표 읽기시각적 구문 도표 생략
    (1)                                                       
>>-------java com.ibm.pdq.tools.Merge--+------------------+----->
                                       '- -baseFile--file-'   

                          .------.      
                          V      |      
>--+- -inputPureQueryXml----file-+--+--------------------------->
   '- -inputPureQueryXmlGroup--file-'   

>-- -outputPureQueryXml--file--+-----------------------+-------->
                               |                   (2) |   
                               '-| Trace options |-----'   

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

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

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

주:
  1. 임의의 순서로 옵션을 지정할 수 있습니다.
  2. 구문의 경우 해당 옵션의 설명을 참조하십시오.

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

옵션에 대한 설명

-baseFile file
명령문 세트를 보존하려는 경우, Merge 유틸리티가 작성하는 파일에서 보존할 명령문 세트를 포함하는 pureQuery 파일을 지정합니다. 이 파일에 대해 Merge 유틸리티를 실행하기 전에 Configure 유틸리티를 실행해야 합니다.

함께 병합하는 파일 중 하나에 있는 SQL문이 위치 지정된 업데이트사항을 수행하고, 이 위치 지정된 업데이트사항에 대한 커서를 선언하는 명령문이 동일한 파일에 없는 경우, Merge 유틸리티는 병합 중인 파일에서 커서 선언을 찾습니다.

예를 들어, 클러스터된 웹 애플리케이션에서 SQL문을 캡처하고 세 개의 pureQueryXML 파일 A, B, C를 생성했다고 가정하십시오. 파일 A에는 위치 지정된 업데이트사항을 수행하는 SQL문 S1이 있습니다. 하지만 파일 A에는 S1이 사용하는 커서를 선언하는 SQL문 S2가 없습니다. 따라서 Merge 유틸리티는 이 커서를 선언하는 SQL문을 파일 B 및 C에서 찾습니다. 이러한 명령문이 파일 B 또는 C에 없는 경우, Merge 유틸리티는 위치 지정된 업데이트 명령문 S1을 병합하지 않고 경고를 로그합니다.

기본 파일을 지정하지 않은 경우, 병합에서 발생하는 파일에서, Merge 유틸리티는 모든 pureQueryXML 파일의 SQL문을 이름 지정되지 않은 단일 명령문 세트로 결합합니다.

주: 기본 파일을 지정하지 않은 경우, 나열된 첫 번째 입력 pureQueryXML 파일이 기본 기본 파일입니다. 이 파일은 outputPureQueryXmlpureQueryXML 특성이 모두 지정되었을 때 추가 SQL문을 캡처하기 위해 작성된 pureQueryXML 파일일 수 없습니다. 두 특성이 모두 지정되었을 때 outputPureQueryXmlpureQueryXML 특성으로 지정된 pureQueryXML 파일에는 표시되지 않는 캡처된 SQL문을 포함합니다.
-inputPureQueryXml file
함께 병합할 pureQueryXML 파일을 지정합니다(이름은 스페이스로 구분합니다). 여러 개의 절대 또는 상대 경로를 지정할 수 있습니다. 상대 경로를 지정하는 경우 경로는 명령을 실행하는 디렉토리에 상대적이어야 합니다.
파일의 경로 또는 이름에 스페이스가 있으면, 파일의 전체 엔트리를 인용 부호로 묶으십시오.
-inputPureQueryXmlGroup file
함께 병합할 pureQueryXML 파일을 지정합니다. 파일 확장자는 .grp여야 합니다. 각 파일 라인마다 하나의 파일 이름을 지정할 수 있습니다(각각 절대 또는 상대 경로를 제공하여). 상대 경로를 지정하는 경우 경로는 명령을 실행하는 디렉토리에 상대적이어야 합니다.
파일의 경로 또는 이름에 스페이스가 있는 경우에도 파일의 전체 엔트리를 인용 부호로 묶지 않아도 됩니다.
-outputPureQueryXml file
이전 옵션에서 지정하는 pureQueryXML 파일에서 Merge 유틸리티가 작성하도록 할 새 파일의 이름을 지정합니다. 절대 경로 또는 상대 경로를 지정할 수 있습니다. 상대 경로를 지정하는 경우 경로는 명령을 실행하는 디렉토리에 상대적이어야 합니다.
-removeSQLInactiveForDays days
명령문 시간소인을 기준으로 사용되지 않은 SQL문이 제거되는 경과 일 수를 지정합니다. days 변수가 0인 경우, 모든 SQL문이 출력 파일에 기록됩니다. 기본 설정은 모든 SQL문을 출력 파일에 쓰는 것입니다. days 변수가 양수인 경우, 명령문의 최종 사용 시간소인이 현재 날짜에서 해당 일 수 이전이거나 그 이전이면(기준 날짜 포함) Merge 유틸리티는 SQL문을 출력 파일에 쓰지 않습니다. days 변수가 1인 경우, 시간소인이 전날이거나 그보다 이전이면 SQL문은 기록되지 않습니다.

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

SQL문에 시간소인이 없는 경우, SQL문은 현재 시간을 사용한 시간소인 정보를 포함하여 출력 파일에 기록됩니다. 예를 들어, 이전 버전의 pureQueryXML 파일이 입력 파일인 경우에는 SQL문에 시간소인이 없습니다. pureQueryXML 파일의 이전 버전(버전 3 또는 그 이전)에서는 이 옵션이 무시되고 모든 SQL문이 현재 시간 시간소인을 사용하여 출력 파일에 기록되며 메시지가 표시됩니다.

명령문 세트의 configureStatus가 FINAL인 경우, 비활성 기간(일) 동안 기준을 충족하는 명령문이 출력 pureQueryXML 파일에 기록되고 Merge 유틸리티는 명령문 및 명령문 보존 이유를 포함한 메시지를 로그 파일에 기록합니다.

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

주: SQL문이 출력 pureQueryXml 파일에 기록되지는 않지만 이전에 명령문 세트에서 바인드된 DB2 패키지에서 삭제되지는 않습니다. 이후에 명령문 세트를 사용한 바인드 조작은 제거된 SQL문을 바인드하지는 않지만 패키지에 빈 섹션을 남겨둘 수 있습니다. 빈 섹션을 제거하는 한 가지 방법은 pureQueryXML 파일에 대해 Configure 유틸리티를 -cleanConfigure 옵션과 함께 사용하는 것입니다. 그런 다음 StaticBinder 유틸리티를 사용하여 pureQueryXML 파일에서 패키지를 작성하고 바인드하십시오.
-showDetails TRUE|FALSE
Merge 유틸리티가 활동 요약을 표시하는지 여부를 지정합니다.
기본값은 FALSE입니다.
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
입력 pureQueryXML 파일에 대해 pureQueryXML 스키마를 사용하여 XML 스키마 유효성 확인이 수행되는지 여부를 지정합니다. 값이 TRUE이면 유효성 확인이 수행됩니다. 값이 FALSE이거나 옵션이 지정되지 않으면 유효성 확인이 수행되지 않습니다. 기본값은 FALSE입니다.

pureQueryXML 파일이 XML 스키마 유효성 확인에 실패하는 경우, 병합 조작이 실패합니다. 스키마 유효성 확인 실패의 원인이 된 파일 이름 및 오류가 보고됩니다. 후속 파일에 대해서는 유효성 확인이 수행되지 않습니다. 첫 번째 유효성 확인 오류가 보고되고 병합 실패가 보고됩니다.

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

-help
요약 사용 정보를 표시합니다.

피드백