예: 단순 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.xml
      pdq.executionMode=DYNAMIC

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

    1. Java 응용프로그램을 시작하고 실행하여 SQL문을 실행하십시오.
    2. 응용프로그램을 중지하십시오.
    응용프로그램을 실행하면 pureQuery Runtime이 capture.xml 파일을 작성하고 캡처한 SQL 데이터를 파일에 저장합니다.
  2. 캡처한 SQL 데이터를 구성하십시오.
    Configure 유틸리티를 다음 명령과 함께 실행하십시오.
    java com.ibm.pdq.tools.Configure 
      -rootpkgname TESTPKG 
      -cleanConfigure true 
      -pureQueryXml capture.xml

    pureQueryXML 파일 capture.xml에서, 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://testserver.test.com:446/STLEC1” 
      -username "testuser" -password "testpwd"
      -isolationLevel CS
      -pureQueryXml capture.xml
      -showDetails true

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

    명령의 출력은 다음 예와 유사합니다.
    The StaticBinder utility is beginning to bind the pureQueryXml file capture.xml.
    
    Starting to process options : -username "*****" -password "*****" 
    -url "jdbc:db2://testserver.test.com:446/STLEC1"
    -pureQueryXml  capture.xml 
    -isolationLevel "CS"
    -showDetails "true"
    
    The StaticBinder utility successfully bound the package 'TESTPKG2' for the isolation level 'CS'.
       Number of statements input: '5', number of statements bound: '5', bind options : 'ISOLATION CS'
    
    The StaticBinder utility successfully bound 'capture.xml'.
        Number of packages input :'1'
        Number of input packages for which isBindable is false : '0'
        Number of input packages with zero bindable statements : '0'
        Number of bindable input packages processed by the Static Binder utility : '1' : [TESTPKG]
    
    =======================================================================
    
    StaticBinder 유틸리티의 활동 결과:
    
        바인드 조작이 성공한 항목 수: 1
    바인드에 성공하면 TESTPKG2란 이름의 패키지가 작성됩니다. -isolationLevel CS를 지정했기 때문에 명령은 한 패키지만을 작성합니다. 디폴트로 StaicBinder 유틸리티는 네 가지 분리 수준에 대한 네 개의 패키지를 작성합니다.
  4. pureQuery Runtime으로 SQL문을 정적으로 실행하십시오.
    1. 이전에 작성한 pdq.properties 파일을 편집하십시오.
      executionMode를 STATIC으로 설정하고 captureMode를 OFF로 설정한 후 파일을 저장하십시오. 파일에는 다음 라인이 포함되어 있습니다.
      pdq.captureMode=OFF
      pdq.pureQueryXml=capture.xml
      pdq.allowDynamicSQL=TRUE
      pdq.executionMode=STATIC

      pureQuery Runtime 등록 정보 allowDynamicSQL의 디폴트값은 TRUE이며 등록 정보 파일에는 필요하지 않습니다. 파일의 등록 정보는 디폴트값 리마인더입니다. 디폴트로 pureQuery Runtime은 SQL문이 이전에 캡처되지 않은 경우에도 응용프로그램에서 발행된 SQL문이 동적으로 실행되도록 합니다.

    2. 응용프로그램을 실행하십시오.

      응용프로그램은 pureQueryXML 파일에 나열된 SQL문을 정적으로 실행합니다.

    주: SQL문이 정적으로 실행되고 있는지 판별하는 한 가지 방법은 패키지를 삭제(drop)하는 것입니다. TESTPKG 패키지를 데이터베이스에서 삭제(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 프로그램으로 사용 가능합니다.

Optim™ Development Studio에서, pureQuery 지원이 있는 Java 프로젝트를 사용하고 pureQuery 클라이언트 최적화에 사용 가능한 Java 응용프로그램을 Eclipse IDE에 개발할 수 있습니다.


피드백