데이터 마이그레이션

온라인 또는 오프라인의 두 가지 방법 중 하나로 데이터를 마이그레이션할 수 있습니다.
  • 온라인 데이터 이동: Oracle SQL Developer에서 Microsoft SQL Server 소스 데이터베이스로 연결을 생성하고 데이터를 이전할 수 있습니다.
  • 오프라인 데이터 이동: Microsoft SQL Server에서 데이터를 내보낼 수 있습니다. SQL Developer는 일괄 처리 파일에서 실행할 수 있는 일련의 BCP 및 sqlldr 파일을 생성합니다.

온라인 데이터 이동은 소규모 데이터 집합에 적합한 반면 오프라인 데이터 이동은 대용량 데이터 이동에 유용합니다. 또한 대용량 데이터의 경우 Oracle Cloud Infrastructure File Storage를 사용하여 마이그레이션 프로세스 중에 데이터 이동을 전체적으로 수행하는 것이 좋습니다.

데이터 오프라인 이전

캡처 프로세스 동안 오프라인 데이터 이동 스크립트가 생성되고 데이터가 datamove라는 프로젝트 출력 디렉토리로 추출됩니다. 이 스크립트를 실행하면 sql 서버 Windows 호스트 시스템의 데이터를 Oracle Autonomous Database로 마이그레이션하는 것입니다.

datamove 디렉토리는 다음과 같아야 합니다.
Wkdir
	projectName
		datamove
			YYYY-MM-DD_HH-MI-SS
				AdventureWorks

AdventureWorks 디렉토리 안에 SQL Server AdventureWorks 데이터베이스 아래의 모든 사용자에 해당하는 6개의 하위 폴더가 표시됩니다.

AdventureWorks 폴더에 다음 디렉토리가 표시되어야 합니다.

  • 네트워크
  • SALES_ADVENTUREWORKS
  • PERSON_ADVENTUREWORKS
  • PURCHASING_ADVENTUREWORKS
  • HUMANRESOURCES_ADVENTUREWORKS
  • PRODUCTION_ADVENTUREWORKS

AdventureWorks 폴더에 다음 파일이 표시되어야 합니다.

  • MicrosoftSQLServer_data.bat
  • MicrosoftSQLServer_data.sh
  • oracle_external.bat
  • oracle_external.sh
  • oracle_loader.bat
  • oracle_loader.sh

MicrosoftSqlServer_data.bat 스크립트는 각 스키마 디렉토리 내에 생성된 다른 일괄 처리 스크립트를 호출하는 마스터 Windows 시스템 일괄 처리 스크립트입니다. 다음은 샘플 실행입니다.

  1. 소스 Windows 시스템 프롬프트에서 MicrosoftSqlServer_data.bat 스크립트를 실행합니다. 프롬프트에서 디렉토리를 변경하고 Windows 서버 호스트 이름, Windows 시스템 관리자 계정(일반적으로 sa) 및 SA 암호를 입력합니다.
    prompt> cd "C:\_rkd\_OCI\DB-Migration\Non-Oracle\MS-SQL\wkdir\Capture\sqladvworks4\datamove\YYYY-MM-DD_HH-MI-SS\AdventureWorks\“
    prompt> MicrosoftSQLServer_data.bat sql-server-hostname sa sa-password

    위의 실행 중에 각 데이터베이스 테이블에 대해 스키마별로 각 로그가 생성되고 하위 디렉토리 로그 아래의 각 스키마 폴더에 저장됩니다.

  2. (선택 사항) 데이터 이전 중 또는 완료 후 이러한 로그를 검토하고 데이터 이동을 검증합니다.
    로그를 검토하고 데이터 마이그레이션을 검증하는 것이 좋습니다. 다음은 로드 요약이 굵게 표시된 샘플 로그입니다.
    SQL*Loader: Release 19.0.0.0.0 - Production on Thu Mar 4 07:39:44 2021
    Version 19.10.0.0.0
    
    Copyright (c) 1982, 2021, Oracle and/or its affiliates.  All rights reserved.
    
    Control File:   control\AdventureWorks.DatabaseLog.ctl
    Data File:      data/AdventureWorks.DatabaseLog.dat
      File processing option string: "str '<EORD>'"
      Bad File:     control\AdventureWorks.DatabaseLog.bad
      Discard File:  none specified
     
     (Allow all discards)
    
    Number to load: ALL
    Number to skip: 0
    Errors allowed: 50
    Bind array:     250 rows, maximum of 1048576 bytes
    Continuation:    none specified
    Path used:      Conventional
    
    Table ADVENTUREWORKS.DATABASELOG, loaded from every logical record.
    Insert option in effect for this table: INSERT
    TRAILING NULLCOLS option in effect
    
       Column Name                  Position   Len  Term Encl Datatype
    ------------------------------ ---------- ----- ---- ---- ---------------------
    DATABASELOGID                       FIRST     *           CHARACTER            
        Terminator string : '<EOFD>'
    POSTTIME                             NEXT     *           CHARACTER            
        Terminator string : '<EOFD>'
        SQL string for column : "TO_TIMESTAMP(:PostTime, 'yyyy-mm-dd HH24:mi:ss.ff3')"
    DATABASEUSER                         NEXT     *           CHARACTER            
        Terminator string : '<EOFD>'
        SQL string for column : "DECODE(:DatabaseUser, CHR(00), ' ', :DatabaseUser)"
    EVENT                                NEXT     *           CHARACTER            
        Terminator string : '<EOFD>'
        SQL string for column : "DECODE(:Event, CHR(00), ' ', :Event)"
    SCHEMA                               NEXT     *           CHARACTER            
        Terminator string : '<EOFD>'
        SQL string for column : "DECODE(:Schema, CHR(00), ' ', :Schema)"
    OBJECT                               NEXT     *           CHARACTER            
        Terminator string : '<EOFD>'
        SQL string for column : "DECODE(:Object, CHR(00), ' ', :Object)"
    TSQL                                 NEXT *****           CHARACTER            
        Maximum field length is 2000000
        Terminator string : '<EOFD>'
    XMLEVENT                             NEXT *****           CHARACTER            
        Maximum field length is 2000000
        Terminator string : '<EOFD>'
    value used for ROWS parameter changed from 250 to 1
    
    Table ADVENTUREWORKS.DATABASELOG:
      1596 Rows successfully loaded.
      0 Rows not loaded due to data errors.
      0 Rows not loaded because all WHEN clauses were failed.
      0 Rows not loaded because all fields were null.
    
    
    Space allocated for bind array:                4001572 bytes(1 rows)
    Read   buffer bytes: 1048576
    
    Total logical records skipped:          0
    Total logical records read:          1596
    Total logical records rejected:         0
    Total logical records discarded:        0
    
    Run began on Thu Mar 04 07:39:44 2021
    Run ended on Thu Mar 04 07:39:56 2021
    
    Elapsed time was:     00:00:12.44
    CPU time was:         00:00:01.79
    

마이그레이션 테스트

이전되는 데이터베이스의 복잡성에 따라 이전 프로젝트의 많은 부분이 테스트될 수 있습니다.

Oracle은 이전된 데이터베이스를 자동으로 검증할 수 있는 도구를 제공하지 않습니다. 마이그레이션이 시작되기 전에 마이그레이션 단계를 계획하고 고려해야 합니다. 다음은 프로젝트 계획의 일부여야 합니다.

  1. 데이터베이스 구조를 확인합니다.
  2. 데이터베이스 보안을 확인합니다.
  3. 데이터를 확인합니다.
  4. 뷰의 논리적 정확도를 확인합니다.
  5. 응용 프로그램을 테스트합니다.