移轉資料

您可以使用下列兩種方式之一來移轉資料:線上或離線。
  • 線上資料移動:您可以在 Oracle SQL Developer 內建立與 Microsoft SQL Server 來源資料庫的連線,然後移轉資料。
  • 離線資料移動:您可以從 Microsoft SQL Server 匯出資料。SQL Developer 將會建立一系列可從批次檔執行的業務持續計畫與 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 資料庫底下之所有使用者的子資料夾。

您應該會在 AdventureWorks 資料夾中看到下列目錄:

  • 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. 測試應用程式。