建立指令檔 (OracleToSQL)

啟動 SSMA 主控台應用程式之前的第一步是建立指令檔,並視需要建立變數值檔案和伺服器連線檔案。

指令檔可以分成三個部分,即:

  1. config:可讓使用者設定主控台應用程式的設定參數。

  2. servers:可讓使用者設定來源/目標伺服器定義。 這也可以位於另外的伺服器連線檔案中。

  3. script-commands:可讓使用者執行 SSMA 工作流程命令。

以下詳細說明每一個部分:

設定 Oracle 主控台設定

指令碼的設定會顯示在主控台指令檔中。

如果在設定節點中指定任何元素,就會設定為全域設定,也就是適用於所有指令碼命令。 如果使用者想要覆寫全域設定,也可以在 script-command 部分的每個命令中設定這些設定元素。

使用者可設定的選項包括:

  1. 輸出視窗提供者:如果 suppress-messages 屬性設定為 'true',命令專屬訊息不會顯示在主控台上。 屬性描述如下:

    • destination:指定輸出是否需要列印至檔案或 stdout。 預設為 false。

    • file-name:檔案的路徑 (選用)。

    • suppress-messages:抑制主控台上的訊息。 預設為 'false'。

    範例︰

    <output-providers>  
    
      <output-window  
    
        suppress-messages="<true/false>"   (optional)  
    
        destination="<file/stdout>"        (optional)  
    
        file-name="<file-name>"            (optional)  
    
       />  
    
    </output-providers>  
    

    or

    <...All commands...>  
    
      <output-window  
    
         suppress-messages="<true/false>"   (optional)  
    
         destination="<file/stdout>"        (optional)  
    
         file-name="<file-name>"            (optional)  
    
       />  
    
    </...All commands...>  
    
  2. 資料移轉連線提供者:這會指定要考慮用於資料移轉的來源/目標伺服器。 Source-use-last-used 表示上次用於資料移轉的來源伺服器。 同樣地,target-use-last-used 表示上次用於資料移轉的目標伺服器。 使用者也可以使用 source-server 或 target-server 屬性來指定伺服器 (來源或目標)。

    只能使用其中一個指定的屬性,也就是:

    • source-use-last-used="true" (預設) 或 source-server="source_servername"

    • target-use-last-used="true" (預設) 或 target-server="target_servername"

    範例︰

    <output-providers>  
    
      <data-migration-connection source-use-last-used="true"  
    
                                 target-server="<target-server-unique-name>"/>  
    
    </output-providers>  
    

    or

    <migrate-data>  
    
      <data-migration-connection   source-server="<source-server-unique-name>"  
    
                                   target-use-last-used="true"/>  
    
    </migrate-data>  
    
  3. 使用者輸入快顯:從資料庫載入物件時,這可讓您處理錯誤。 使用者提供輸入模式,在發生錯誤時,主控台會如使用者所指定繼續進行。

    這些模式包括:

    • ask-user - 提示使用者繼續 ('yes') 或錯誤輸出 ('no') 。

    • error- 主控台會顯示錯誤並停止執行。

    • continue- 主控台會繼續執行。

    預設模式為 error

    範例︰

    <output-providers>  
    
      <user-input-popup mode="<ask-user/continue/error>"/>  
    
    </output-providers>  
    

    or

    <!-- Connect to target database -->  
    
    <connect-target-database server="<target-server-unique-name>">  
    
      <user-input-popup mode="<ask-user/continue/error>"/>  
    
    </connect-target-database>  
    
  4. 重新連線提供者:這可讓使用者在連線失敗時設定重新連線設定。 可同時針對來源和目標伺服器設定。

    重新連線模式如下:

    • reconnect-to-last-used-server:如果連線非使用中,會嘗試重新連線到上次使用的伺服器最多 5 次。

    • generate-an-error:如果連線非使用中,就會產生錯誤。

    預設模式為 generate-an-error

    範例︰

    <output-providers>  
    
      <reconnect-manager on-source-reconnect="<reconnect-to-last-used-server/generate-an-error>"  
    
                         on-target-reconnect="<reconnect-to-last-used-server/generate-an-error>"/>  
    
    </output-providers>  
    

    or

    <!--synchronization-->  
    
    <synchronize-target>  
    
      <reconnect-manager on-target-reconnect="reconnect-to-last-used-server"/>  
    
    </synchronize-target>  
    

    or

    <!--data migration-->  
    
    <migrate-data server="<target-server-unique-name>">  
    
      <reconnect-manager  
    
        on-source-reconnect="reconnect-to-last-used-server"  
    
        on-target-reconnect="generate-an-error"/>  
    
    </migrate-data>  
    
  5. 轉換器覆寫提供者:這可讓使用者處理已在目標 Metabase 上顯示的物件。 可能的動作包括:

    • error:主控台會顯示錯誤並停止執行。

    • overwrite:覆寫現有物件值。 預設已執行此動作。

    • skip:主控台會略過已在資料庫上的物件

    • ask-user:提示使用者輸入 ('yes'/ 'no')

    範例︰

    <output-providers>  
    
      <object-overwrite action="<error/skip/overwrite/ask-user>"/>  
    
    </output-providers>  
    

    or

    <convert-schema object-name="<object-name>">  
    
      <object-overwrite action="<error/skip/overwrite/ask-user>"/>  
    
    </convert-schema>  
    
  6. 失敗的必要條件提供者:這可讓使用者處理處理命令所需的任何必要條件。 strict-mode 預設為 'false'。 如果設定為 'true',就會因未符合必要條件產生例外狀況。

    範例︰

    <output-providers>  
    
      <prerequisites strict-mode="<true/false>"/>  
    
    </output-providers>  
    
  7. 停止作業:在作業中,如果使用者想要停止作業,可以使用 'Ctrl+C' 快速鍵。 SSMA for Oracle 主控台會等作業完成再終止主控台執行。

    如果使用者想立即停止執行,可再次按 'Ctrl+C' 快速鍵,中途終止 SSMA 主控台應用程式。

  8. 進度提供者:告知每個主控台命令的進度。 此選項預設為停用狀態。 進度報告屬性包含:

    • 每 1%

    • 每 2%

    • 每 5%

    • 每 10%

    • 每 20%

    範例︰

    <output-providers>  
    
      <progress-reporting enable="<true/false>"            (optional)  
    
                          report-messages="<true/false>"   (optional)  
    
                          report-progress="every-1%/every-2%/every-5%/every-10%/every-20%/off" (optional)/>  
    
    </output-providers>  
    

    or

    <...All commands...>  
    
      <progress-reporting  
    
        enable="<true/false>"            (optional)  
    
        report-messages="<true/false>"   (optional)  
    
        report-progress="every-1%/every-2%/every-5%/every-10%/every-20%/off"     (optional)/>  
    
    </...All commands...>  
    
  9. 記錄器詳細程度:設定記錄詳細程度層級。 這會對應至 UI 中的 [所有類別] 選項。 記錄詳細程度層級預設為 "error"。

    記錄器層級選項包括:

    • fatal-error:只會記錄嚴重錯誤訊息。

    • error:只會記錄錯誤和嚴重錯誤訊息。

    • warning:記錄偵錯和資訊訊息以外的所有層級。

    • info:記錄偵錯訊息以外的所有層級。

    • debug:記錄所有訊息層級。

    注意

    所有層級都會記錄必要訊息。

    範例︰

    <output-providers>  
    
      <log-verbosity level="fatal-error/error/warning/info/debug"/>  
    
    </output-providers>  
    

    or

    <...All commands...>  
    
      <log-verbosity level="fatal-error/error/warning/info/debug"/>  
    
    </...All commands...>  
    
  10. 覆寫加密的密碼:如果為 'true',伺服器連線檔案或指令檔伺服器定義區段中指定的純文字密碼,會覆寫儲存在受保護儲存體中的加密密碼 (若有)。 如果未以純文字指定密碼,系統會提示使用者輸入密碼。

    會有下列兩種情況:

    1. 如果 override 選項為 false,搜尋順序會是受保護的儲存體 -> 指令檔 -> 伺服器連線檔案 -> 提示使用者。

    2. 如果 override 選項為 true,搜尋順序會是指令檔 -> 伺服器連線檔案 -> 提示使用者。

    範例︰

    <output-providers>  
    
      <encrypted-password override="<true/false>"/>  
    
    </output-providers>  
    

無法設定的選項為:

  • 重新連線嘗試次數上限:建立的連線因網路故障而逾時或中斷時,需要重新連線伺服器。 允許重新連線嘗試最多 5 次重試,之後主控台會自動執行重新連線。 自動重新連線功能可減少重新執行指令碼的心力。

伺服器連線參數

伺服器連線參數可以在指令檔或伺服器連線檔案中定義。 如需詳細資訊,請參閱建立伺服器連線檔案 (OracleToSQL) 一節。

指令碼命令

指令檔包含一系列 XML 格式的移轉工作流程命令。 SSMA 主控台應用程式會依指令檔中顯示的命令順序來處理移轉。

例如,Oracle 資料庫中特定資料表的一般資料移轉遵循:結構描述 - > 資料表的階層。

成功執行指令檔中的所有命令時,SSMA 主控台應用程式會結束並將控制項傳回給使用者。 指令檔的內容與建立變數值檔案 (OracleToSQL) 中,或是指令檔另外的變數值區段中包含的變數資訊或多或少相同。

範例︰

<!--Sample of script file commands -->  
  
<ssma-script-file>  
  
  <script-commands>  
  
    <create-new-project project-folder="<project-folder>"  
  
                        project-name="<project-name>"  
  
                        overwrite-if-exists="<true/false>"/>  
  
    <connect-source-database server="<source-server-unique-name>"/>  
  
    <save-project/>  
  
    <close-project/>  
  
  </script-commands>  
  
</ssma-script-file>  

在產品目錄的 [範例主控台指令碼] 資料夾中,提供包含 3 個指令檔 (用於執行各種情節)、變數值檔案和伺服器連線檔案的範本:

  • AssessmentReportGenerationSample.xml

  • ConversionAndDataMigrationSample.xml

  • SqlStatementConversionSample.xml

  • VariableValueFileSample.xml

  • ServersConnectionFileSample.xml

您可以在變更顯示於該處的參數以取得相關程度之後,執行範本 (檔案)。

可以在執行 SSMA 主控台 (OracleToSQL) 中找到指令碼命令的完整清單

指令檔驗證

使用者可以輕鬆根據 [Schemas] 資料夾中的結構描述定義檔案 'O2SSConsoleScriptSchema.xsd',驗證其指令檔。

後續步驟

操作主控台的下一步是建立變數值檔案 (OracleToSQL)

另請參閱

建立變數值檔案 (OracleToSQL)