AIX Power 시스템에서 Lixux x86 시스템으로 Db2 데이터베이스 마이그레이션하기

Power 프로세서와 x86 프로세서 간의 엔디안 차이로 인해, Db2 백업 및 복원 작업을 사용하여 AIX Power 시스템에서 Linux x86 시스템으로 마이그레이션할 수 없습니다. 대신 소스 데이터베이스 데이터를 언로드하고 대상 형식으로 변환한 다음 대상 데이터베이스에 다시 로드해야 합니다. 이 프로세스는 ' db2look ' 및 ' db2move ' 유틸리티를 사용하여 가장 쉽게 수행할 수 있습니다.

시작하기 전에

이 절차에서는 다음 사전 필수 작업을 완료했다고 가정합니다:
  • 대상 인스턴스를 생성했습니다 Db2 의 대상 인스턴스를 온프레미스 x86 서버 또는 클라우드 호스팅 x86 VM에 생성했습니다.
  • 소스 시스템의 인스턴스와 일치하도록 ' 구성된 액세스 '을 ' Db2 ' 인스턴스로 설정했습니다. 예를 들어 Kerberos 사용하여 사용자 인증을 유지하고 백업 이미지를 클라우드 인스턴스로 복원하려는 경우, 대상 시스템이 Kerberos 지원하는지 확인하세요.
Db2 데이터베이스 인스턴스를 클라우드 인스턴스로 옮길 때 대용량 개체(LOB) 데이터로 작업하는 경우 사용하는 테이블 공간 및 버퍼 풀을 재구성하는 것이 좋습니다.
  • 파일 시스템 캐싱이 활성화된 상태로 구성된 별도의 테이블 공간에 LOB 개체를 분리합니다. 이 구성은 클라우드 인스턴스에 대한 LOB 데이터 삽입 작업의 성능을 향상시킵니다.
  • 필요한 초당 입/출력 작업 수(IOPS) 등급에 따라 저장 장치를 선택합니다.
  • 인덱스를 별도의 버퍼 풀에 배치하여 페이지가 메모리에 더 오래 유지되도록 합니다.
  • 활동성이 높은 테이블은 별도의 버퍼 풀을 사용하여 별도의 테이블 공간에 배치합니다.
  • 상호 의존적인 테이블을 같은 테이블 공간에 배치하여 그룹으로 복구할 수 있도록 합니다. Db2 기본 백업 및 복구 세분성은 테이블 공간 수준입니다.
  • SMS/DMS 컨테이너 사용을 없애고 자동 저장소로 전환하기

이 타스크에 대한 정보

이 작업은 다음과 같은 높은 수준의 단계로 구성되어 있습니다:
  • ' db2look'을 사용하여 소스 AIX Power Db2 시스템에서 데이터 추출하기 .
  • 대상 Linux x86 시스템에서 빈 데이터베이스 만들기.
  • 대상 시스템에서 테이블 공간 및 버퍼 풀 만들기.
  • ' db2move'을 사용하여 추출한 데이터를 대상 시스템에 로드합니다.

프로시저

  1. ' db2look '을 실행하여 소스 Db2 데이터베이스에서 DDL 문을 생성합니다.
     #db2look -d <DBname>-a -e -m -l -x -f -o <DBname>.sql
    여기서,
    • ‐d <DBname> '은 이동하려는 데이터베이스의 별칭 이름입니다
    • ‐a 작동하지 않는 개체를 포함하여 모든 사용자가 생성한 개체에 대한 DDL 문을 생성합니다
    • ‐e DDL 문을 추출합니다.
    • ‐m 테이블, 통계 뷰, 컬럼 및 인덱스의 통계를 복제하는 데 필요한 UPDATE문을 생성합니다.
    • ‐l 사용자 정의 테이블 공간, 사용자 정의 데이터베이스 파티션 그룹 및 사용자 정의 버퍼 풀에 대한 DDL 문을 생성합니다.
    • ‐x 권한 부여 DDL문(예: GRANT문)을 생성합니다.
    • ‐f 쿼리 옵티마이저에 영향을 미치는 구성 매개변수 및 레지스트리 변수를 추출합니다.
    • ‐o 출력을 ' <DBname>.sql 파일에 씁니다.
    • ‐ct 오브젝트 작성 시간에 DDL문을 생성합니다.
    ' db2look ' 명령은 개체 유형별로 DDL 문을 생성합니다.
    참고: ' db2look 사용자 정의 함수 및 저장 프로시저를 인식하지만 SYSTOOLS 스키마 아래에 있는 다른 모든 객체는 무시됩니다. 또한 SQL 파일에서 스키마, 테이블, 외래 키 및 트리거에 대한 문이 생성됩니다.
  2. 출력 파일인 ' <dbname>.sql 를 살펴보고 외래 키와 트리거를 분리합니다. 각각 ' <dbname>_foreignkey.sql '과 ' <dbname>_trigger.sql '라는 별도의 파일에 저장합니다.
    외래 키를 분리하지 않고 ' DBname.sql ' 파일을 실행하면 가져오기 시 기본 키가 누락되어 오류가 발생할 수 있습니다. 그러면 테이블 간의 종속성 때문에 가져온 행이 거부됩니다.
  3. ' db2move '을 실행하여 데이터를 내보냅니다.
    소스 서버AIX의 모든 데이터를 PC/IXF 형식으로 내보냅니다. 지정된 옵션에 따라 필터링 기준을 충족하는 모든 테이블을 내보냅니다.
    db2move <DBname> Export
    참고: 옵션을 지정하지 않으면 모든 테이블이 내보내집니다.
  4. 1단계에서 추출한 파일, 2단계에서 만든 파일 및 내보낸 데이터를 RHEL 대상 시스템의 임의의 디렉터리에 복사합니다.
  5. 소스 데이터베이스에 연결하고 다음 명령의 출력을 캡처하여 연결 ID와 유사한 수준의 권한을 부여합니다.
    “db2 "select char(grantee,8) as grantee, char(granteetype,1) as type, \ char(dbadmauth,1) as
    dbadm, char(createtabauth,1) as createtab, \ char(bindaddauth,1) as bindadd,
    char(connectauth,1) as connect, \ char(nofenceauth,1) as nofence, char(implschemaauth,1) as
    implschema, \ char(loadauth,1) as load, char(externalroutineauth,1) as extroutine, \
    char(quiesceconnectauth,1) as quiesceconn, \ char(libraryadmauth,1) as libadm,
    char(securityadmauth,1) \ as securityadm from syscat.dbauth order by grantee"
  6. 대상 Linux Db2 인스턴스에빈 데이터베이스를 만듭니다.
    참고: 성능을 향상시키려면 여러 파일 시스템에서 자동 저장 옵션을 설정하는 것이 좋습니다.
    db2 ‘CREATE DATABASE <DBname> AUTOMATIC STORAGE YES on PATH /db2fs1, /db2fs2,
    /db2fs3 DBPATH /db2fs4’;
    Db2 ‘CONNECT TO <DBname>’;
  7. ' DBname.sql 스크립트를 실행하여 테이블과 인덱스를 생성합니다.
    중요: 오류를 방지하려면 가져오기 전에 ' DBname_Foreignkey.sql ' 또는 ' Dbname_Trigger.sql '를 실행하지 마세요.
    db2 -tvf DBname.sql 
  8. 5단계에서 캡처한 것과 유사한 수준의 권한을 연결 ID 및 인스턴스에 부여합니다.
  9. 내부 준비 파일에 나열된 모든 테이블을 ' db2move.lst ' 내부 준비 파일로 가져옵니다. 가져오기 관련 작업에는 -io 옵션을 사용합니다. 가져오기 작업은 ' db2 ‐tvf DBname.sql 명령을 실행하여 생성된 빈 테이블에 실제 데이터를 로드합니다.
    참고: XML 열이 포함된 테이블에 데이터를 로드하는 것은 LOAD 작업에만 지원되며 COPY 작업에는 지원되지 않습니다. 대신 IMPORT 또는 EXPORT 명령을 실행하거나 ' db2move Export ' 및 ' db2move Import ' 동작을 사용합니다. 이러한 테이블에 ' GENERATED ALWAYS ID 열도 포함되어 있으면 데이터를 테이블로 가져올 수 없습니다.
  10. ' DBname_Foreignkey.sql ' 및 ' DBname_Trigger.sql ' 스크립트를 별도로 실행하여 외래 키 관계와 트리거를 다시 설정합니다.
    db2 -tvf DBname_Foreignkey.sql db2 -tvf DBname_Trigger.sql 
  11. db2rbind 작업을 실행하여 패키지를 다시 만들고 커밋되지 않은 트랜잭션을 모두 커밋합니다. 자동 커밋을 활성화해야 한다는 점에 유의하세요.
    db2rbind <DBname>
  12. 데이터베이스의 모든 테이블 인덱스에 대해 재조직 작업을 실행합니다.
    db2 connect to <DBname>
    db2 reorgchk update statistics on table all
    db2 terminate
  13. 모든 테이블에 대한 실행 통계 발행 '을 추가하여 통계를 최신 상태로 유지합니다.

다음에 수행할 작업

데이터베이스와 애플리케이션 간의 연결을 활성화하기 전에 데이터베이스의 백업을 수행하세요.