啟動 SSMA 控制台應用程式之前的第一個步驟是建立腳本檔案,如果需要建立變數值檔案和伺服器連接檔案。
腳本文件可以分成三個區段,也就是:
config: 可讓使用者設定主控台應用程式的組態參數。
伺服器: 可讓使用者設定來源/目標伺服器定義。 這也可以位於個別的伺服器連接檔案中。
script-commands: 可讓使用者執行 SSMA 工作流程命令。
以下詳細說明每個區段:
設定 Oracle 控制台設定
指令碼的設定會顯示在主控台指令檔中。
如果組態節點中指定了任何元素,它們就會設定為全域設定,亦即它們適用於所有腳本命令。 如果使用者想要覆寫全域設定,也可以在 script-command 區段中的每個命令內設定這些組態元素。
使用者可設定的選項包括:
輸出視窗提供者: 如果 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>或
<...All commands...> <output-window suppress-messages="<true/false>" (optional) destination="<file/stdout>" (optional) file-name="<file-name>" (optional) /> </...All commands...>數據遷移連線提供者: 這會指定要考慮哪些來源/目標伺服器進行數據遷移。 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” (default) 或 target-server=“target_servername”
範例︰
<output-providers> <data-migration-connection source-use-last-used="true" target-server="<target-server-unique-name>"/> </output-providers>或
<migrate-data> <data-migration-connection source-server="<source-server-unique-name>" target-use-last-used="true"/> </migrate-data>用戶輸入快顯: 這允許在從資料庫載入物件時處理錯誤。 使用者會提供輸入模式,並在發生錯誤時,主控台會在使用者指定時繼續。
模式包括:
ask-user - 提示使用者繼續('yes')或退出('no')。
錯誤- 主控台會顯示錯誤並停止執行。
繼續- 主控台會繼續進行執行。
預設模式為 錯誤。
範例︰
<output-providers> <user-input-popup mode="<ask-user/continue/error>"/> </output-providers>或
<!-- Connect to target database --> <connect-target-database server="<target-server-unique-name>"> <user-input-popup mode="<ask-user/continue/error>"/> </connect-target-database>重新連線提供者: 這可讓用戶在連線失敗時設定重新連線設定。 可同時針對來源和目標伺服器設定。
重新連線模式為:
如果連線未啟動,最多嘗試 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>或
<!--synchronization--> <synchronize-target> <reconnect-manager on-target-reconnect="reconnect-to-last-used-server"/> </synchronize-target>或
<!--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>轉換器覆寫提供者: 這可讓用戶處理已存在於目標中繼基底上的物件。 可能的動作包括:
error:主控台會顯示錯誤並停止執行。
overwrite:覆寫現有的物件值。 此動作是預設執行的。
skip:控制台會略過資料庫上已經存在的物件
ask-user:提示使用者輸入 ('yes'/ 'no')
範例︰
<output-providers> <object-overwrite action="<error/skip/overwrite/ask-user>"/> </output-providers>或
<convert-schema object-name="<object-name>"> <object-overwrite action="<error/skip/overwrite/ask-user>"/> </convert-schema>失敗的必要條件提供者: 這可讓使用者處理處理命令所需的任何必要條件。 根據預設,strict-mode 為 'false'。 如果設定為『true』,就會因不符合必要條件而產生例外狀況。
範例︰
<output-providers> <prerequisites strict-mode="<true/false>"/> </output-providers>停止作業: 在中期作業期間,如果使用者想要停止作業,則可以使用 『Ctrl+C』 熱鍵。 SSMA for Oracle 控制台會等候作業完成並終止控制台執行。
如果使用者想要立即停止執行,則可以再次按下 『Ctrl+C』 熱鍵,以突然終止 SSMA 控制台應用程式。
進度提供者: 通知每個主控台命令的進度。 此選項預設為停用狀態。 進度報告屬性包含:
關閉
每 1 個%
every-2%
每-5%
every-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>或
<...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...>日誌記錄器詳盡性: 設定日誌詳盡性層級。 這會對應至 UI 中的 [所有類別] 選項。 預設情況下,日誌詳細等級為「錯誤」。
記錄器層級選項包括:
嚴重錯誤:只會記錄嚴重錯誤訊息。
錯誤:只會記錄一般錯誤和致命錯誤訊息。
警告:除了偵錯和資訊訊息之外,所有層級都會記錄。
info:記錄偵錯訊息以外的所有層級。
debug:記錄所有層級的訊息。
備註
所有層級都會記錄必要訊息。
範例︰
<output-providers> <log-verbosity level="fatal-error/error/warning/info/debug"/> </output-providers>或
<...All commands...> <log-verbosity level="fatal-error/error/warning/info/debug"/> </...All commands...>覆寫加密的密碼: 如果為 'true',則為伺服器連接檔案或腳本檔案之伺服器定義區段中指定的純文本密碼,如果存在,則會覆寫儲存在受保護記憶體中的加密密碼。 如果未以純文字指定任何密碼,系統會提示使用者輸入密碼。
以下是兩種情況:
如果覆寫選項為 false,搜尋順序將會是 受保護儲存-腳本檔案-伺服器連接檔案-提示使用者。
如果覆寫選項 為 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) 。