예: 단순 Java 애플리케이션에 대한 pureQuery 클라이언트 최적화 사용

간단한 예에서, 네 가지 단계(캡처, 구성, 바인드 및 실행)를 통해 Java™ 애플리케이션에 pureQuery 클라이언트 최적화를 사용 가능하게 설정하고 DB2® 데이터베이스에서 SQL문을 정적으로 실행하도록 애플리케이션을 구성합니다.
  1. SQL 데이터를 캡처하십시오.
  2. SQL문에 대해 작성될 DB2 패키지의 특성으로 캡처한 SQL문을 구성하십시오.
  3. SQL문에서 패키지를 작성하고 DB2 데이터베이스로 패키지를 바인드하십시오.
  4. SQL문을 정적으로 실행하십시오.

시작하기 전에

pureQuery Runtime JAR 파일, pdq.jar 및 pdqmgmt.jar이 애플리케이션 CLASSPATH에 나열되어야 합니다.

이 태스크 정보

예에서는 애플리케이션이 DB2 데이터베이스를 데이터 소스로 사용하는 독립형 JDBC 기반 애플리케이션이고 애플리케이션이 포함된 디렉토리에서 태스크를 수행 중이라고 가정합니다. pureQuery Runtime에 캡처된 SQL 데이터는 pureQueryXML 파일의 로컬 파일 시스템에 저장됩니다. 다음 일러스트레이션은 구성을 보여줍니다.
그림 1. pureQuery 클라이언트 최적화 구성
단순 pureQuery
클라이언트 최적화 구성
일러스트레이션에서, pureQuery Configure 유틸리티는 캡처한 SQL 데이터 파일이 포함된 pureQueryXML 파일을 구성된 pureQueryXML 파일로 변환합니다.
pureQuery 클라이언트 최적화를 사용하고 SQL문을 정적으로 실행할 때 다음 pureQuery 기능을 사용합니다.
  • 먼저 SQL문을 캡처한 다음 SQL문을 정적으로 실행하도록 pureQuery Runtime 특성을 설정합니다.
  • pureQuery 유틸리티 Configure 및 StaticBinder를 애플리케이션에서 캡처하는 SQL문과 함께 사용합니다.

프로시저

단순 Java 애플리케이션에 pureQuery 클라이언트 최적화를 사용하려면 다음을 수행하십시오.

  1. 애플리케이션에서 SQL 데이터를 캡처하십시오.
    1. 현재 작업 디렉토리에 pdq.properties를 다음 pureQuery Runtime 특성와 함께 작성하십시오.
      pdq.captureMode=ON
      pdq.pureQueryXml=capture.pdqxml
      pdq.executionMode=DYNAMIC

      captureMode 특성은 SQL문 및 SQL문의 실행과 연관된 기타 정보가 pureQueryXML 파일에 캡처됨을 지정합니다. pureQueryXml 특성은 capture.pdqxml 파일의 이름을 지정합니다. executionMode 특성은 pureQueryXml 특성에 지정된 pureQueryXML 파일에 있는 SQL문을 정적으로 실행할지 여부를 지정합니다.

    1. Java 애플리케이션을 시작하고 실행하여 SQL문을 실행하십시오.
    2. 애플리케이션을 중지하십시오.
    애플리케이션을 실행하면 pureQuery Runtime이 capture.pdqxml 파일을 작성하고 캡처한 SQL 데이터를 해당 파일에 저장합니다.
  2. 캡처한 SQL 데이터를 구성하십시오.
    Configure 유틸리티를 다음 명령과 함께 실행하십시오.
    java com.ibm.pdq.tools.Configure 
      -rootPkgName TESTPKG 
      -cleanConfigure TRUE 
      -pureQueryXml capture.pdqxml

    pureQueryXML 파일 capture.pdqxml에서 Configure 유틸리티는 파일의 SQL문에서 작성할 DB2 패키지의 특성을 설정합니다. Configure 유틸리티는 pureQueryXML 파일의 SQL문을 명령문 세트로 그룹화합니다. 명령문 세트는 데이터베이스의 패키지에 해당합니다. 유틸리티는 -rootPkgName 옵션 값을 사용하여 데이터베이스의 패키지에 사용될 이름을 생성합니다. 패키지 이름 지정에 대한 정보는 DB2 패키지 식별 정보 를 참조하십시오.

    -cleanConfigure TRUE 옵션은 pureQueryXML 파일의 이전 구성 정보가 저장되지 않도록 지정합니다.

    -cleanConfigure 옵션이 지정되지 않으면 Configure 유틸리티는 일부 구성 정보를 저장하려 시도합니다.

    pureQueryXML 파일은 구성될 때 필요한 패키지 및 섹션 정보를 포함하며 pureQuery StaticBinder 유틸리티에 사용되어 패키지를 작성하고 DB2 데이터베이스로 패키지를 바인드할 수 있습니다.

  3. 캡처한 SQL문을 pureQuery StaticBinder 유틸리티로 바인드하십시오.
    StaticBinder 유틸리티를 다음 명령과 함께 실행하십시오. 목표 URL, 사용자 ID, 암호, pureQueryXML 파일 및 -isolationLevel 옵션을 지정하십시오.
    java com.ibm.pdq.tools.StaticBinder 
      –url "jdbc:db2://localhost:50000/SAMPLE retrieveMessagesFromServerOnGetMessage=1;" 
      -username "testuser" -password "testpwd"
      -isolationLevel CS
      -pureQueryXml capture.pdqxml-showDetails TRUE

    -showDetails true 옵션은 바인드 프로세스의 세부사항을 표시합니다.

    명령의 출력은 다음 예와 유사합니다.
      IBM Optim pureQuery Runtime 2.2.1.1 build 2.28.45
      Licensed Materials - Property of IBM
      5724-U16
      (c) Copyright IBM Corp. 2006, 2011 All Rights Reserved.
    
      ================================================================================
    
      The StaticBinder utility is beginning the bind operation for the pureQueryXml file 'capture.pdqxml'.
    
      Starting to process options:  -url "jdbc:db2://localhost:50000
        /SAMPLE:retrieveMessagesFromServerOnGetMessage=1;"
        -username "*****" -password "*****" 
        -pureQueryXml "capture.pdqxml" -isolationLevel "CS" -showDetails "TRUE"
    
      The StaticBinder utility successfully bound the package 'TESTPKG2' for the isolation level 'CS'.
    
      Statistics for this statement set:
          Total number of statements in this statement set: 5
          Number of SQL statements for which a bind operation was 
              attempted: 5
          Largest section number used: 5
    
      The bind operation completed successfully for 'capture.pdqxml'.
    
          Number of statement sets for which the utility attempted to bind packages: 1: [TESTPKG2]
          Number of statement sets for which the attribute "isBindable" is set to "false" for the statement set: 0
          Number of statement sets that contain no bindable statements, even though the attribute "isBindable" is set to "true" for the statement set: 0
          Total number of statement sets in the pureQueryXML file: 1
    
      ================================================================================
    
      StaticBinder 유틸리티의 활동 결과:
    
         바인드 조작이 성공한 항목 수: 1
    바인드에 성공하면 TESTPKG2란 이름의 패키지가 작성됩니다. -isolationLevel CS를 지정했기 때문에 명령은 한 패키지만을 작성합니다. 기본으로 StaicBinder 유틸리티는 네 가지 분리 수준에 대한 네 개의 패키지를 작성합니다.
  4. pureQuery Runtime으로 SQL문을 정적으로 실행하십시오.
    1. 이전에 작성한 pdq.properties 파일을 편집하십시오.
      executionMode를 STATIC으로 설정하고 captureMode를 OFF로 설정한 후 파일을 저장하십시오. 파일에는 다음 라인이 포함되어 있습니다.
      pdq.captureMode=OFF
      pdq.pureQueryXml=capture.pdqxml
      pdq.allowDynamicSQL=TRUE
      pdq.executionMode=STATIC

      pureQuery Runtime 특성 allowDynamicSQL의 기본값은 TRUE이며 특성 파일에는 필요하지 않습니다. 파일의 특성은 기본값 리마인더입니다. 기본으로 pureQuery Runtime은 SQL문이 이전에 캡처되지 않은 경우에도 애플리케이션에서 발행된 SQL문이 동적으로 실행되도록 합니다.

    2. 애플리케이션을 실행하십시오.

      애플리케이션은 pureQueryXML 파일에 나열된 SQL문을 정적으로 실행합니다.

    주: SQL문이 정적으로 실행되고 있는지 판별하는 한 가지 방법은 패키지를 삭제(drop)하는 것입니다. TESTPKG2 패키지를 데이터베이스에서 삭제(drop)하면 애플리케이션은 pureQueryXML 파일에 나열된 SQL문을 실행할 수 없습니다.

    StaticBinder 유틸리티를 pureQueryXML 파일과 함께 실행하여 패키지를 다시 작성하면 애플리케이션이 SQL문을 정적으로 실행합니다.

    Tivoli® OMEGAMON® XE for DB2와 같은 데이터베이스 모니터링 도구를 z/OS®에서 사용하여 SQL이 정적으로 실행 중인지 검증할 수도 있습니다.

다음에 수행할 작업

보다 복잡한 애플리케이션 시나리오에서는, 애플리케이션에서 SQL문을 여러 차례 반복하여 캡처할 수 있습니다. SQL 데이터를 여러 번 반복하여 캡처할 때에는 SQL문을 구성하고 바인드하기 전에 캡처한 SQL 데이터를 구성된 pureQueryXML 파일과 병합하는 추가 단계를 수행합니다.

Configure 및 StaticBinder 유틸리티는 패키지에 적용 가능한 다양한 옵션과 함께 모든 전개 정보를 나열할 수 있는 옵션 파일을 지원합니다. 옵션 파일을 작성한 후 -optionsFile 옵션과 함께 유틸리티를 호출하여 파일을 지정할 수 있습니다.

네 단계 프로세스를 반복 및 자동화하는 유틸리티 명령이 포함된 쉘 스크립트를 작성할 수도 있습니다. pureQuery JAR 파일이 CLASSPATH에 있으면 모든 유틸리티가 Java 프로그램으로 사용 가능합니다.

IBM® Optim™ Development Studio에서 pureQuery 지원이 있는 Java 프로젝트를 사용하고 pureQuery 클라이언트 최적화에 사용 가능한 Java 애플리케이션을 Eclipse IDE에 개발할 수 있습니다.


피드백