시나리오: 테스트 환경에서 프로덕션 환경으로 pureQuery 클라이언트 최적화 마이그레이션

테스트 환경에서 애플리케이션에 pureQuery 클라이언트 최적화를 사용 가능하게 설정합니다. 애플리케이션 기능 및 성능 테스트와 SQL문 및 바인드 프로시저 검토 등의 테스트 요구사항을 완료하면 프로덕션 환경에 애플리케이션을 전개할 준비가 되었습니다.
이 주제는 프로덕션 환경의 데이터베이스로 바인드할 패키지를 이동하거나 작성하는 방법에 대해 설명하며 다음 섹션이 포함되어 있습니다.

이상적인 환경에서는, pureQuery 클라이언트 최적화에 사용 가능한 애플리케이션을 실행하고, SQL 데이터를 캡처하며, 프로덕션 환경과 동일한 환경에서 실행하는 SQL의 정적 실행을 테스트합니다. 하지만 테스트 및 프로덕션 환경이 동일한 가능성은 희박합니다. 예를 들어, 테스트 시스템은 Linux, UNIX 및 Windows용 DB2®를 사용할 수 있는 반면 프로덕션 환경은 z/OS®용 DB2를 사용합니다.

pureQuery 클라이언트 최적화에 사용 가능한 애플리케이션을 마이그레이션할 때에는 pureQueryXML 파일에 있는 패키지 및 콜렉션 이름과 같은 DB2 패키지의 특성을 변경해야 할 수 있습니다. pureQueryXML 파일의 Configure 유틸리티를 프로덕션별 옵션으로 실행한 후 StaticBinder 유틸리티를 사용하여 프로덕션 데이터베이스에 패키지를 작성하고 패키지를 데이터베이스로 바인드할 수 있습니다.

pureQuery Runtime 특성 및 pureQueryXML 데이터를 프로덕션 환경에서 사용하도록 마이그레이션할 수도 있습니다. finalRepositoryProperties 특성, captureMode 특성 및 allowDynamicSQL 특성을 수정해야 할 수 있습니다.

저장소를 사용하면 프로덕션 환경에서 저장소도 작성하고, 애플리케이션의 런타임 그룹 버전을 작성하며, pureQuery Runtime 특성 정보와 pureQueryXML 파일을 저장소에 업로드합니다.

pureQuery Configure 및 StaticBinder 유틸리티를 사용한 SQL문 마이그레이션 예

시나리오의 이전 태스크에서는, pureQuery 클라이언트 최적화로 애플리케이션을 테스트 시스템에 구성했습니다. 테스트가 완료되면 이제 pureQueryXML 파일의 SQL문을 프로덕션 데이터베이스로 바인드할 수 있습니다. 다음 예에서는 프로덕션 콜렉션이 PRODCOL 및 QUALIFIER PROD라고 가정합니다. 따라서 패키지가 인식되도록 데이터 소스를 올바른 packagePath 설정으로 업데이트합니다. 또한 이 주제의 예에서는 프로덕션 데이터베이스가 패키지 이름 PRODPKG 패키지 이름 지정 규칙을 사용한다고 가정합니다.

마이그레이션의 일부로, 테스트 환경에 작성된 pureQueryXML 파일을 검색합니다. 파일이 저장소에 있으면 pureQuery ManageRepository 유틸리티로 파일을 추출합니다. 다음과 유사한 명령을 실행합니다.
java com.ibm.pdq.tools.ManageRepository 
  -extract runtimeGroup
  -repositoryDriverClass com.ibm.db2.jcc.DB2Driver
  -repositoryURL "jdbc:db2://testserver.test.com:32706/sample" 
  -repositoryUsername "myuser" -repositoryPassword "mypwd" 
  -runtimeGroupId testApp -runtimeGroupVersion V2 
  -outputDirectory C:\TEMP\out 
  –pureQueryXml prodApp.pdqxml 

파일을 검색한 후에는 pureQueryXML 파일에서 pureQuery Configure 및 StaticBinder 유틸리티를 해당 옵션과 함께 실행합니다.

다음 Configure 유틸리티를 실행하면 루트 패키지 이름이 PRODAPPL로 변경되고 기본 콜렉션은 PRODCOL로 변경됩니다. -cleanConfigure true 옵션은 새 SQL문 외에도 기존 SQL문을 포함하는 pureQueryXML 파일의 모든 SQL문이 처리됨을 지정합니다. -replaceSchemas 옵션은 pureQueryXML 파일에 지정된 스키마 이름을 TEST에서 PROD로 대체합니다. -validateXml true 옵션으로 Configure 유틸리티는 파일에서 XML 스키마 유효성 확인을 수행해서 입력 파일이 유효한 pureQueryXML 파일인지 확인합니다.
java com.ibm.pdq.tools.Configure -pureQueryXml prodApp.pdqxml 
  –validateXml true
  –collection PRODCOL 
  -rootPkgName PRODAPPL 
  -replaceSchemas "(TEST>PROD)"
  -cleanConfigure true
목표 데이터베이스 서버에 대해 StaticBinder 유틸리티를 다음 옵션과 함께 실행하면 데이터베이스에 있는 pureQueryXML 파일의 SQL문이 포함된 패키지가 작성되고 패키지가 바인드됩니다.
java com.ibm.pdq.tools.StaticBinder 
  –url jdbc:db2://prodserver.prod.com:446/STLEC1” 
  -username "myuser" -password "mypwd" 
  -isolationLevel CS 
  -bindOptions "QUALIFIER PROD" 
  -pureQueryXml prodApp.pdqxml 
  -showDetails true

-showDetails true 옵션을 지정하면 StaticBinder 유틸리티가 생성하는 DB2 패키지에 관한 요약 정보를 표시합니다.

StaticBinder 옵션 -isolationLevel CS는 StaticBinder가 분리 수준 커서 안정성(CS)의 단일 패키지를 작성함을 지정합니다. CS 분리 수준은 Linux, UNIX 및 Windows용 DB2 데이터베이스의 기본 레벨입니다.

StaticBinder 명령에 대한 출력은 다음 예와 유사합니다.
The StaticBinder utility is beginning to bind the pureQueryXml file capture.xml.

Starting to process options : -username "*****" -password "*****" 
 -url "jdbc:db2://prodserver.prod.com"
 -pureQueryXml prodApp.pdqxml 
 -isolationLevel "CS" 
 -bindOptions "QUALIFIER PROD" 
 

The StaticBinder utility successfully bound the package 'PRODAPPL2' for the isolation level 'CS'.

프로덕션 환경으로 마이그레이션 시의 정적 SQL 식별 정보 변경사항

애플리케이션을 프로덕션 환경으로 마이그레이션할 때에는 일관성 토큰 및 패키지 버전과 같은 정적 SQL 식별 정보를 변경해야 할 수 있습니다.

일관성 토큰 및 패키지 버전 변경사항
동일한 일관성 토큰 및 패키지 버전 정보를 유지하면서 DB2 패키지를 다른 DB2 서브시스템이나 데이터베이스로 마이그레이션하려면 StaticBinder 유틸리티를 pureQueryXML 파일과 함께 실행하여 추가 DB2 데이터베이스 또는 서브시스템에 바인드하십시오. 마이그레이션 중 pureQueryXML 파일을 수정하지 않으면 pureQueryXML 파일 및 DB2 패키지 버전의 일관성 토큰이 계속해서 일치하는지 확인할 수 있습니다. 파일을 수정하고 Configure 유틸리티를 사용하면 일관성 토큰이 변경될 수 있습니다. 일관성 토큰 및 DB2 패키지 버전에 대한 정보는 DB2 패키지 식별 정보를 참조하십시오.
주: pureQuery Configure 유틸리티는 명령문 세트를 변경해야 할 때 일관성 토큰을 변경합니다. pureQueryXML 파일을 구성해야 하며 일관성 토큰을 변경하지 않으려면 Configure 유틸리티가 pureQueryXML 파일의 기존 이름 지정된 명령문 세트를 변경하지 않는지 확인해야 합니다. 예를 들어, -setPreStatusOfAllPkgs REQUIRED 옵션이나 -cleanConfigure true 옵션으로 파일을 구성하지 마십시오.
JDBC 특성 변경사항
테스트 시스템 및 프로덕션 시스템에서 콜렉션 ID가 다르면 해당 런타임 환경을 업데이트하여 DB2 서브시스템 사이의 패키지 마이그레이션 중 올바른 콜렉션을 지정해야 합니다. 이 콜렉션은 currentPackageSet 특성(또는 Linux, UNIX 및 Windows용 DB2 또는 z/OS용 DB2의 currentPackagePath)를 통해 WebSphere® 데이터 소스 정의의 일부로 지정됩니다.

예제

런타임에 WebSphere Application Server 데이터 소스에서 WebSphere JDBC 프로바이더 사용자 정의 특성 currentPackageSetPRODCOL1B로 설정되지 않으면 pureQueryXML 파일의 콜렉션 PRODCOL이 사용됩니다. STLEC1B에서 패키지를 찾을 수 없으며 애플리케이션에 SQLCODE 805가 리턴됩니다.

동적 SQL문이 있으면 데이터 소스 특성 currentPackagePath를 지정해야 합니다. JDBC 동적 패키지가 콜렉션 NULLID로 바인드되는 경우에는 WebSphere Application Server 데이터 소스의 currentPackagePath 특성 값을 PRODCOL1B,NULLID로 설정해야 합니다.

z/OS용 DB2 데이터베이스에서의 마이그레이션
StaticBinder 유틸리티 외에, z/OS용 DB2는 다른 z/OS용 DB2 시스템에서 패키지를 다시 바인드하는 데 사용할 수 있는 DSN 원격 BIND COPY 명령을 제공합니다. BIND PACKAGE 인수에 원격 위치 이름을 사용하여 BIND PACKAGE 명령을 발행하고 COPY 옵션을 지정합니다.

예제

PRODCOL 콜렉션의 테스트를 위한 위치(예를 들어, STLEC)로 pureQueryXML 파일의 SQL문이 바인드되는 경우가 있습니다. BIND COPY 명령을 사용하여 PRODCOL1B 콜렉션의 프로덕션 위치 STLEC1B로 패키지를 COPY합니다.


피드백