データの移行

データは、オンラインまたはオフラインの2つの方法のいずれかで移行できます。
  • オンライン・データ移動: Oracle SQL Developer内からMicrosoft SQL Serverソース・データベースへの接続を作成し、データを移行できます。
  • オフラインのデータ移動: Microsoft SQL Serverからデータをエクスポートできます。SQL Developerでは、バッチ・ファイルから実行できる一連のBCPおよびsqlldrファイルが作成されます。

オンライン・データ移動は小規模なデータ・セットに適しており、オフライン・データ移動は大規模データの移動に役立ちます。さらに、大量のデータの場合、Oracle Cloud Infrastructure File Storageを使用して、移行プロセス中にデータ移動のパフォーマンス全体を支援することをお薦めします。

データのオフライン移行

取得プロセス中に、オフライン・データ移動スクリプトが生成され、データはdatamoveというプロジェクト出力ディレクトリに抽出されます。これらのスクリプトの実行は、sqlサーバー・ウィンドウ・ホスト・マシンから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. アプリケーションをテストします。