

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 連線至 Netezza AWS Schema Conversion Tool
<a name="CHAP_Source.Netezza"></a>

您可以使用 AWS SCT 將結構描述、程式碼物件和應用程式程式碼從 Netezza 轉換為 Amazon Redshift。

## Netezza 做為來源的權限
<a name="CHAP_Source.Netezza.Permissions"></a>

使用 Netezza 做為來源時需要下列權限：
+ 在 system.definition\$1schema.system 檢視上選取
+ 在 system.definition\$1schema.system 資料表上選取
+ 在 system.definition\$1schema.management 資料表上選取
+ *<database\$1name>* 上的清單
+ *<schema\$1name>* 上的清單
+ *<database\$1name>*.all.table 上的清單
+ *<database\$1name>*.all.external 資料表上的清單
+ *<database\$1name>*.all.view 上的清單
+ *<database\$1name>*.all.materialized 檢視上的清單
+ *<database\$1name>*.all.procedure 上的清單
+ *<database\$1name>*.all.sequence 上的清單
+ *<database\$1name>*.all.function 上的清單
+ *<database\$1name>*.all.aggregate 上的清單

在上述範例中，取代預留位置，如下所示：
+ 將 *database\$1name* 取代為來源資料庫的名稱。
+ 將 *schema\$1name* 取代為來源結構描述的名稱。

AWS SCT 需要存取下列系統資料表和檢視。您可以授予這些物件的存取權，而不是授予對上述清單中 `system.definition_schema.system view`和 `system.definition_schema.system tables`的存取權。
+ 在 system.definition\$1schema.\$1t\$1aggregate 上選取
+ 在 system.definition\$1schema.\$1t\$1class 上選取
+ 在 system.definition\$1schema.\$1t\$1constraint 上選取
+ 在 system.definition\$1schema.\$1t\$1const\$1relattr 上選取
+ 在 system.definition\$1schema.\$1t\$1database 上選取
+ 在 system.definition\$1schema.\$1t\$1grpobj\$1priv 上選取
+ 在 system.definition\$1schema.\$1t\$1grpusr 上選取
+ 在 system.definition\$1schema.\$1t\$1hist\$1config 上選取
+ 在 system.definition\$1schema.\$1t\$1object 上選取
+ 在 system.definition\$1schema.\$1t\$1object\$1classes 上選取
+ 在 system.definition\$1schema.\$1t\$1proc 上選取
+ 在 system.definition\$1schema.\$1t\$1type 上選取
+ 在 system.definition\$1schema.\$1t\$1user 上選取
+ 在 system.definition\$1schema.\$1t\$1usrobj\$1priv 上選取
+ 在 system.definition\$1schema.\$1vt\$1sequence 上選取
+ 在 system.definition\$1schema.\$1v\$1aggregate 上選取
+ 在 system.definition\$1schema.\$1v\$1constraint\$1depends 上選取
+ 在 system.definition\$1schema.\$1v\$1database 上選取
+ 在 system.definition\$1schema.\$1v\$1datatype 上選取
+ 在 system.definition\$1schema.\$1v\$1dslice 上選取
+ 在 system.definition\$1schema.\$1v\$1function 上選取
+ 在 system.definition\$1schema.\$1v\$1group 上選取
+ 在 system.definition\$1schema.\$1v\$1obj\$1relation 上選取
+ 在 system.definition\$1schema.\$1v\$1obj\$1relation\$1xdb 上選取
+ 在 system.definition\$1schema.\$1v\$1procedure 上選取
+ 在 system.definition\$1schema.\$1v\$1relation\$1column 上選取
+ 在 system.definition\$1schema.\$1v\$1relation\$1keydata 上選取
+ 在 system.definition\$1schema.\$1v\$1relobjclasses 上選取
+ 在 system.definition\$1schema.\$1v\$1schema\$1xdb 上選取
+ 在 system.definition\$1schema.\$1v\$1sequence 上選取
+ 在 system.definition\$1schema.\$1v\$1synonym 上選取
+ 在 system.definition\$1schema.\$1v\$1system\$1info 上選取
+ 在 system.definition\$1schema.\$1v\$1sys\$1constraint 上選取
+ 在 system.definition\$1schema.\$1v\$1sys\$1object\$1dslice\$1info 上選取
+ 在 system.definition\$1schema.\$1v\$1sys\$1user 上選取
+ 在 system.definition\$1schema.\$1v\$1table 上選取
+ 在 system.definition\$1schema.\$1v\$1table\$1constraint 上選取
+ 在 system.definition\$1schema.\$1v\$1table\$1dist\$1map 上選取
+ 在 system.definition\$1schema.\$1v\$1table\$1organize\$1column 上選取
+ 在 system.definition\$1schema.\$1v\$1table\$1storage\$1stat 上選取
+ 在 system.definition\$1schema.\$1v\$1user 上選取
+ 在 system.definition\$1schema.\$1v\$1view 上選取
+ 在 system.information\$1schema.\$1v\$1relation\$1column 上選取
+ 在 system.information\$1schema.\$1v\$1table 上選取
+ 選取 \$1hist\$1column\$1access\$1\$1

## 連接到 Netezza 做為來源
<a name="CHAP_Source.Netezza.Connecting"></a>

使用以下程序，透過 AWS Schema Conversion Tool連接到您的 Netezza 來源資料庫。

**若要連接到 Netezza 來源資料庫**

1. 在 中 AWS Schema Conversion Tool，選擇**新增來源**。

1. 選擇 **Netezza**，然後選擇**下一步**。

   新增**來源**對話方塊隨即出現。

1. 針對**連線名稱**，輸入資料庫的名稱。 會在左側面板的樹狀目錄中 AWS SCT 顯示此名稱。

1. 使用來自 的資料庫登入資料 AWS Secrets Manager 或手動輸入：
   + 若要從 Secrets Manager 使用資料庫登入資料，請使用下列指示：

     1. 針對**AWS 秘密**，選擇秘密的名稱。

     1. 選擇**填入**，從 Secrets Manager 自動填入資料庫連線對話方塊中的所有值。

     如需從 Secrets Manager 使用資料庫登入資料的資訊，請參閱 [在 AWS Secrets Manager 中設定 AWS Schema Conversion Tool](CHAP_UserInterface.SecretsManager.md)。
   + 若要手動輸入 Netezza 來源資料庫連線資訊，請使用下列指示：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/SchemaConversionTool/latest/userguide/CHAP_Source.Netezza.html)

1. 選擇**測試連線**以驗證 AWS SCT 可以連接到您的來源資料庫。

1. 選擇**連線**以連線至來源資料庫。

## 設定持續資料複寫
<a name="CHAP_Source.Netezza.CDC"></a>

轉換 Netezza 資料庫結構描述並將其套用至 Amazon Redshift 資料庫後，您可以使用資料擷取代理程式遷移 AWS SCT 資料。代理程式會擷取您的資料並將其上傳至 Amazon S3 儲存貯體。然後，您可以使用 AWS SCT 將資料從 Amazon S3 複製到 Amazon Redshift。

如果來源資料庫中的資料在遷移過程中變更，您可以使用 AWS SCT 資料擷取代理程式擷取持續的變更。然後，您可以在完成初始資料遷移後，在目標資料庫中複寫這些持續變更。此程序稱為持續資料複寫或*變更資料擷取* (CDC)。

**設定從 Netezza 遷移到 Amazon Redshift 的持續資料複寫**

1. 在您的來源資料庫中，建立歷史記錄資料庫。您可以在 Netezza 命令列界面 (CLI) 中使用下列程式碼範例。

   ```
   nzhistcreatedb -d history_database_name -t query -v 1 -u load_user -o histdb_owner -p your_password
   ```

   在上述範例中，將 *history\$1database\$1name* 取代為歷史記錄資料庫的名稱。接下來，將 *load\$1user* 取代為您定義將歷史記錄資料載入資料庫的使用者名稱。然後，將 *histdb\$1owner* 取代為您定義為歷史記錄資料庫擁有者的使用者名稱。請確定您已建立此使用者並授予 `CREATE DATABASE`許可。最後，使用安全密碼取代 *your\$1password*。

1. 設定歷史記錄記錄。若要這樣做，請使用下列程式碼範例。

   ```
   CREATE HISTORY CONFIGURATION history_configuration_name HISTTYPE QUERY
       DATABASE history_database_name USER load_user PASSWORD your_password COLLECT PLAN, COLUMN
       LOADINTERVAL 1 LOADMINTHRESHOLD 0 LOADMAXTHRESHOLD 0 STORAGELIMIT 25
       LOADRETRY 2 VERSION 1;
   ```

   在上述範例中，將 *history\$1configuration\$1name* 和 *history\$1database\$1name* 取代為您的歷史記錄組態和歷史記錄資料庫的名稱。接下來，將 *load\$1user* 取代為您定義將歷史記錄資料載入資料庫的使用者名稱。然後，將 *your\$1password* 替換為一個安全的密碼。

1. 授予歷史記錄資料庫中所有資料表的讀取許可。您可以使用下列程式碼範例來授予 `SELECT`許可。

   ```
   GRANT SELECT ON history_database_name.ALL.TABLE TO your_user;
   ```

   在上述範例中，將 *history\$1database\$1name* 取代為歷史記錄資料庫的名稱。接著，將 *your\$1user* 取代為具有最低許可的使用者名稱，以使用 Netezza 資料庫。您可以在 中使用此資料庫使用者的登入資料 AWS SCT。

1. 收集來源結構描述中每個資料表的統計資料，以取得資料欄基數的相關資訊。您可以使用下列命令，在歷史記錄資料庫中產生統計資料。

   ```
   GENERATE STATISTICS on "schema_name"."table_name";
   ```

   在上述範例中，以資料庫結構描述和資料表的名稱取代 *schema\$1name* 和 *table\$1name*。

1. 執行下列查詢，確認您已完成先決條件：

   ```
   SELECT COUNT(*) FROM history_database_name.history_schema_name."$hist_column_access_N";
   ```

   在上述範例中，將 *history\$1database\$1name* 和 *history\$1schema\$1name* 取代為您的歷史記錄資料庫和結構描述的名稱。接著，將 *N* 取代為您歷史記錄資料庫的版本編號。如需歷史記錄資料庫版本的詳細資訊，請參閱 [IBM Netezza 文件](https://www.ibm.com/docs/en/netezza?topic=history-database-versions)。

1. 安裝您的資料擷取代理程式。如需詳細資訊，請參閱[安裝擷取代理程式](agents.md#agents.Installing)。

   確定 `settings.properties` 檔案中所有擷取器執行個體的 `{working.folder}` 參數指向相同的資料夾。在這種情況下，您的擷取器可以協調 CDC 工作階段，並對所有子任務使用單一交易點。

1. 註冊您的資料擷取代理程式。如需詳細資訊，請參閱[向 註冊擷取代理程式 AWS Schema Conversion Tool](agents.md#agents.Using)。

1. 建立 CDC 任務。如需詳細資訊，請參閱[建立、執行和監控 AWS SCT 任務](agents.md#agents.Tasks)。

   1. 在 中開啟您的專案 AWS SCT。在左側窗格中，選擇來源資料表。開啟內容 （按一下滑鼠右鍵） 選單，然後選擇**建立本機任務**。

   1. 在**任務名稱**中，輸入資料遷移任務的描述性名稱。

   1. 針對**遷移模式**，選擇**擷取、上傳和複製**。

   1. 選取**啟用 CDC**。

   1. 選擇 **CDC 設定**索引標籤，並定義 CDC 工作階段的範圍和排程。

   1. 選擇**測試任務**，以確認您可以連線至工作資料夾、Amazon S3 儲存貯體和 Amazon Redshift 資料倉儲。

   1. 選擇**建立**以建立您的任務。

   1. 選擇**任務**索引標籤，從清單中選擇您的任務，然後選擇**開始**。

1.  AWS SCT 任務會在目標資料庫上維持交易一致性。資料擷取代理程式會以交易 ID 順序從來源複寫交易。

   如果您停止任何遷移工作階段或失敗，CDC 處理也會停止。

## Netezza 到 Amazon Redshift 轉換設定
<a name="CHAP_Source.Netezza.ConversionSettings"></a>

若要編輯 Netezza 至 Amazon Redshift 轉換設定，請選擇 中的**設定** AWS SCT，然後選擇**轉換設定**。從上方清單中選擇 **Netezza**，然後選擇 **Netezza – Amazon Redshift**。 AWS SCT 顯示 Netezza 到 Amazon Redshift 轉換的所有可用設定。

中的 Netezza 到 Amazon Redshift 轉換設定 AWS SCT 包含下列項目的選項：
+ 限制轉換程式碼中具有動作項目的註解數量。

  針對**所選嚴重性及更高之動作項目在轉換後的程式碼中新增註解**，請選擇動作項目的嚴重性。 會在轉換後的程式碼中 AWS SCT 新增所選嚴重性及更高之動作項目的註解。

  例如，若要將已轉換程式碼中的註解數量降到最低，請選擇**僅限錯誤**。若要在已轉換的程式碼中包含所有動作項目的註解，請選擇**所有訊息**。
+ 設定 AWS SCT 可套用至目標 Amazon Redshift 叢集的資料表數量上限。

  針對**目標 Amazon Redshift 叢集的資料表數目上限**，選擇 AWS SCT 可套用至 Amazon Redshift 叢集的資料表數目。

  Amazon Redshift 的配額會限制不同叢集節點類型的使用資料表。如果您選擇**自動**， 會根據節點類型 AWS SCT ，決定要套用至目標 Amazon Redshift 叢集的資料表數目。或者，手動選擇 值。如需詳細資訊，請參閱《Amazon Redshift 管理指南》**中的 [Amazon Redshift 中的配額和限制](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html)。

  AWS SCT 會轉換您的所有來源資料表，即使這超過 Amazon Redshift 叢集可以存放的數量。 會將轉換後的程式碼 AWS SCT 存放在您的專案中，而不會將其套用至目標資料庫。如果您在套用轉換後的程式碼時達到資料表的 Amazon Redshift 叢集配額，則 AWS SCT 會顯示警告訊息。此外， 會將資料表 AWS SCT 套用至您的目標 Amazon Redshift 叢集，直到資料表數量達到限制為止。
+ 將壓縮套用至 Amazon Redshift 資料表資料欄。若要這樣做，請選取**使用壓縮編碼**。

  AWS SCT 使用預設 Amazon Redshift 演算法自動將壓縮編碼指派給資料欄。如需詳細資訊，請參閱《*Amazon Redshift 資料庫開發人員指南*》中的[壓縮編碼](https://docs.aws.amazon.com/redshift/latest/dg/c_Compression_encodings.html)。

  根據預設，Amazon Redshift 不會將壓縮套用至定義為排序和分佈索引鍵的資料欄。您可以變更此行為，並將壓縮套用至這些資料欄。若要這樣做，請選取**使用 KEY 資料欄的壓縮編碼**。只有在選取**使用壓縮編碼**選項時，才能選取此選項。

## Netezza 到 Amazon Redshift 轉換最佳化設定
<a name="CHAP_Source.Netezza.ConversionOptimizationSettings"></a>

若要編輯 Netezza 至 Amazon Redshift 轉換最佳化設定，請選擇 中的**設定** AWS SCT，然後選擇**轉換設定**。從上方清單中選擇 **Netezza**，然後選擇 **Netezza – Amazon Redshift**。在左側窗格中，選擇**最佳化策略**。 AWS SCT 顯示 Netezza 至 Amazon Redshift 轉換的轉換最佳化設定。

中的 Netezza 到 Amazon Redshift 轉換最佳化設定 AWS SCT 包含下列項目的選項：
+ 使用自動資料表最佳化。若要這樣做，請選取**使用 Amazon Redshift 自動資料表調校**。

  自動資料表最佳化是 Amazon Redshift 中的自我調校程序，可自動最佳化資料表的設計。如需詳細資訊，請參閱《*Amazon Redshift 資料庫開發人員指南*》中的[使用自動資料表最佳化](https://docs.aws.amazon.com/redshift/latest/dg/t_Creating_tables.html)。

  若要僅依賴自動資料表最佳化，請針對**初始金鑰選擇策略**選擇**無**。
+ 使用策略選擇排序和分佈索引鍵。

  您可以使用 Amazon Redshift 中繼資料、統計資訊或這兩個選項來選擇排序和分佈索引鍵。針對**最佳化****策略索引標籤上的初始金鑰選擇**策略，選擇下列其中一個選項：
  + 使用中繼資料，忽略統計資訊
  + 忽略中繼資料，使用統計資訊
  + 使用中繼資料和統計資訊

  根據您選擇的選項，您可以選擇最佳化策略。然後，為每個策略輸入值 (0–100)。這些值會定義每個策略的權重。使用這些權重值， AWS SCT 定義每個規則如何影響分佈和排序索引鍵的選擇。預設值是以 AWS 遷移最佳實務為基礎。

  您可以為**尋找小型資料表策略定義小型資料表**的大小。對於**最小資料表資料列計數**和**最大資料表資料列計數**，輸入資料表中的最小和最大資料列數，將其定義為小型資料表。 會將`ALL`分佈樣式 AWS SCT 套用至小型資料表。在這種情況下，整個資料表的副本會分發給每個節點。
+ 設定策略詳細資訊。

  除了定義每個最佳化策略的權重之外，您還可以設定最佳化設定。若要這麼做，請選擇**轉換最佳化**。
  + 針對**排序索引鍵資料欄限制**，輸入排序索引鍵中的資料欄數目上限。
  + 對於**偏斜閾值**，輸入資料欄偏斜值的百分比 (0–100)。 AWS SCT 排除分佈索引鍵候選項目清單中的偏斜值大於閾值的資料欄。 將資料欄偏斜值 AWS SCT 定義為最常出現之值與記錄總數的百分比比率。
  + 對於**查詢歷史記錄表中的前 N 個查詢**，輸入要分析之最常用查詢的數目 (1–100)。
  + 針對**選取統計資料使用者**，選擇您要分析查詢統計資料的資料庫使用者。

  此外，在**最佳化策略**索引標籤上，您可以定義尋找小型資料表策略的**小型資料表**大小。針對**最小資料表資料列計數**和**最大資料表資料列計數**，輸入資料表中的最小和最大資料列數，將其視為小型資料表。 會將`ALL`分佈樣式 AWS SCT 套用至小型資料表。在這種情況下，整個資料表的副本會分發給每個節點。