生成翻譯和評估的中繼資料
本文說明如何使用 dwh-migration-dumper 指令列擷取工具建立中繼資料和查詢記錄檔。中繼資料檔案會說明來源系統中的 SQL 物件。
BigQuery 遷移服務會使用這項資訊,提升 SQL 指令碼的翻譯品質,將來源系統方言翻譯成 GoogleSQL。
BigQuery 遷移評估會使用中繼資料檔案和查詢記錄檔分析現有資料倉儲,協助評估將資料倉儲遷移至 BigQuery 的工作量。
總覽
您可以使用 dwh-migration-dumper 工具,從要移轉至 BigQuery 的資料庫平台擷取中繼資料資訊。雖然翻譯時不一定要使用擷取工具,但 BigQuery 遷移評估需要使用這項工具,因此我們強烈建議您在所有遷移作業中使用這項工具。
詳情請參閱「建立中繼資料檔案」。
您可以使用 dwh-migration-dumper 工具,從下列資料庫平台擷取中繼資料:
- Teradata
- Amazon Redshift
- Apache Hive
- Apache Spark
- Azure Synapse
- Greenplum
- Microsoft SQL Server
- IBM Netezza
- Oracle
- PostgreSQL
- Snowflake
- Trino 或 PrestoSQL
- Vertica
您也可以從大多數資料庫中擷取查詢記錄。
dwh-migration-dumper 工具會查詢系統資料表,收集與使用者和系統資料庫相關的資料定義語言 (DDL) 陳述式。不會查詢使用者資料庫的內容。這項工具會將系統表格中的中繼資料資訊儲存為 CSV 檔案,然後將這些檔案壓縮成單一封裝檔。然後,在您上傳翻譯或評估用的來源檔案時,將這個 ZIP 檔案上傳至 Cloud Storage。
使用查詢記錄選項時,dwh-migration-dumper 工具會查詢系統資料表,找出與使用者和系統資料庫相關的 DDL 陳述式和查詢記錄。這些檔案會以 CSV 或 YAML 格式儲存至子目錄,然後封裝成 ZIP 檔案。系統絕不會查詢使用者資料庫的內容。目前 BigQuery 遷移評估需要個別的 CSV、YAML 和文字檔案 (查詢記錄),因此請從查詢記錄 ZIP 檔案解壓縮所有檔案,並上傳以進行評估。
dwh-migration-dumper 工具可在 Windows、macOS 和 Linux 上執行。
dwh-migration-dumper 工具是依據 Apache 2 授權提供。
如果您選擇不使用 dwh-migration-dumper 工具進行轉譯,可以手動提供中繼資料檔案,方法是將來源系統中 SQL 物件的資料定義語言 (DDL) 陳述式收集到個別文字檔中。
使用 BigQuery 遷移評估工具進行遷移評估時,必須提供使用該工具擷取的中繼資料和查詢記錄。
法規遵循規定
我們提供已編譯的 dwh-migration-dumper 工具二進位檔,方便您使用。如要稽核工具,確保符合法規遵循規定,可以查看dwh-migration-dumper 工具 GitHub 存放區的原始碼,並編譯自己的二進位檔。
必要條件
安裝 Java
您打算執行 dwh-migration-dumper 工具的伺服器必須安裝 Java 8 以上版本。如果沒有,請從 Java 下載頁面下載並安裝 Java。
所需權限
您指定用來將 dwh-migration-dumper 工具連結至來源系統的使用者帳戶,必須具備從該系統讀取中繼資料的權限。確認這個帳戶具有適當的角色成員資格,可查詢平台可用的中繼資料資源。舉例來說,INFORMATION_SCHEMA 是多個平台通用的中繼資料資源。
安裝 dwh-migration-dumper 工具
如要安裝 dwh-migration-dumper 工具,請按照下列步驟操作:
- 在要執行 dwh-migration-dumper工具的機器上,從dwh-migration-dumper工具 GitHub 存放區下載 zip 檔案。
- 如要驗證 - dwh-migration-dumper工具的 ZIP 檔案,請下載- SHA256SUMS.txt檔案,然後執行下列指令:- Bash- sha256sum --check SHA256SUMS.txt - 如果驗證失敗,請參閱「疑難排解」。 - Windows PowerShell- (Get-FileHash RELEASE_ZIP_FILENAME).Hash -eq ((Get-Content SHA256SUMS.txt) -Split " ")[0] - 將 - RELEASE_ZIP_FILENAME替換為- dwh-migration-dumper指令列擷取工具版本的已下載 zip 檔案名稱,例如- dwh-migration-tools-v1.0.52.zip。- True結果會確認總和檢查碼驗證是否成功。- False結果表示驗證錯誤。請確認檢查碼和 ZIP 檔案是從相同版本下載,並放在相同目錄中。
- 將 ZIP 檔案解壓縮,解壓縮 ZIP 檔案後建立的資料夾中, - /bin子目錄內會包含解壓縮工具二進位檔。
- 更新 - PATH環境變數,加入擷取工具的安裝路徑。
執行 dwh-migration-dumper 工具
dwh-migration-dumper 工具使用下列格式:
dwh-migration-dumper [FLAGS]
執行 dwh-migration-dumper 工具會在工作目錄中建立名為 dwh-migration-<source platform>-metadata.zip 的輸出檔案,例如 dwh-migration-teradata-metadata.zip。
請按照下列操作說明,為來源平台執行 dwh-migration-dumper 工具。
Teradata
如要允許 dwh-migration-dumper 工具連線至 Teradata,請從 Teradata 的下載頁面下載 JDBC 驅動程式。
下表說明使用擷取工具擷取 Teradata 中繼資料和查詢記錄時,常用的旗標。如要瞭解所有支援的旗標,請參閱通用旗標。
| 名稱 | 預設值 | 說明 | 必要 | 
|---|---|---|---|
| --assessment | 
        在產生資料庫記錄或擷取中繼資料時,開啟評估模式。
        使用  | 用於執行評估時必須提供,用於翻譯時則不必。 | |
| --connector | 要使用的連接器名稱,在此案例中,中繼資料為 teradata,查詢記錄則為 teradata-logs。 | 是 | |
| --database | 以半形逗號分隔的資料庫清單,視 Teradata 伺服器設定而定,資料庫名稱可能區分大小寫。 如果這個旗標與  這個旗標無法與  | 否 | |
| --driver | 要用於這個連線的驅動程式 JAR 檔案絕對或相對路徑。您可以指定多個驅動程式 JAR 檔案,並以半形逗號分隔。 | 是 | |
| --host | localhost | 資料庫伺服器的主機名稱或 IP 位址。 | 否 | 
| --password | 資料庫連線要使用的密碼。 | 如未指定,擷取工具會使用安全提示要求這項資訊。 | |
| --port | 1025 | 資料庫伺服器的通訊埠。 | 否 | 
| --user | 資料庫連線要使用的使用者名稱。 | 是 | |
| --query-log-alternates | 僅適用於  如要從其他位置擷取查詢記錄,建議改用  
        根據預設,查詢記錄會從  範例:
         | 否 | |
| -Dteradata.tmode | 連線的交易模式。支援的值如下: 
 範例 (Bash): 範例 (Windows PowerShell): | 否 | |
| -Dteradata-logs.log-date-column | 僅適用於  
        如要提升由  範例 (Bash): 範例 (Windows PowerShell): | 否 | |
| -Dteradata-logs.query-logs-table | 僅適用於  
        根據預設,查詢記錄會從  範例 (Bash): 範例 (Windows PowerShell): | 否 | |
| -Dteradata-logs.sql-logs-table | 僅適用於  
        根據預設,系統會從  範例 (Bash): 範例 (Windows PowerShell): | 否 | |
| -Dteradata-logs.utility-logs-table | 僅適用於  
        根據預設,公用程式記錄檔會從表格中擷取
         範例 (Bash): 範例 (Windows PowerShell): | 否 | |
| -Dteradata-logs.res-usage-scpu-table | 僅適用於  
        根據預設,SCPU 資源用量記錄會從  範例 (Bash): 範例 (Windows PowerShell): | 否 | |
| -Dteradata-logs.res-usage-spma-table | 僅適用於  
        根據預設,系統會從  範例 (Bash): 範例 (Windows PowerShell): | 否 | |
| --query-log-start | 要擷取查詢記錄的開始時間 (含此時間)。這個值會截斷至小時。這個旗標僅適用於 teradata-logs 連接器。 
        範例: | 否 | |
| --query-log-end | 要擷取查詢記錄的結束時間 (不含)。這個值會截斷至小時。這個旗標僅適用於 teradata-logs 連接器。 
        範例: | 否 | |
| -Dteradata.metadata.tablesizev.max-rows | 僅適用於  限制從檢視畫面擷取的列數
         範例 (Bash): 範例 (Windows PowerShell): | 否 | |
| -Dteradata.metadata.diskspacev.max-rows | 僅適用於  限制從檢視畫面擷取的列數
         範例 (Bash): 範例 (Windows PowerShell): | 否 | |
| -Dteradata.metadata.databasesv.users.max-rows | 僅適用於  
        限制從檢視區塊 ( 範例 (Bash): 範例 (Windows PowerShell): | 否 | |
| -Dteradata.metadata.databasesv.dbs.max-rows | 僅適用於  限制代表資料庫的資料列數 ( 範例 (Bash): 範例 (Windows PowerShell): | 否 | |
| -Dteradata.metadata.max-text-length | 僅適用於  從  範例 (Bash): 範例 (Windows PowerShell): | 否 | |
| -Dteradata-logs.max-sql-length | 僅適用於  
 範例 (Bash): 範例 (Windows PowerShell): | 否 | 
範例
以下範例說明如何擷取本機主機上兩個 Teradata 資料庫的中繼資料:
dwh-migration-dumper \
  --connector teradata \
  --user user \
  --password password \
  --database database1,database2 \
  --driver path/terajdbc4.jar
以下範例說明如何擷取本機主機上「評估」的查詢記錄以進行驗證:
dwh-migration-dumper \
  --connector teradata-logs \
  --assessment \
  --user user \
  --password password \
  --driver path/terajdbc4.jar
dwh-migration-dumper 工具擷取的資料表和檢視表
使用 teradata 連接器時,系統會擷取下列資料表和檢視畫面:
- DBC.ColumnsV
- DBC.DatabasesV
- DBC.DBCInfo
- DBC.FunctionsV
- DBC.IndicesV
- DBC.PartitioningConstraintsV
- DBC.TablesV
- DBC.TableTextV
使用 teradata 連接器搭配 --assessment 旗標時,系統會擷取下列額外資料表和檢視畫面:
- DBC.All_RI_ChildrenV
- DBC.All_RI_ParentsV
- DBC.AllTempTablesVX
- DBC.DiskSpaceV
- DBC.RoleMembersV
- DBC.StatsV
- DBC.TableSizeV
使用 teradata-logs 連接器時,系統會擷取下列資料表和檢視畫面:
- DBC.DBQLogTbl(如果使用- --assessment旗標,則會變更為- DBC.QryLogV)
- DBC.DBQLSqlTbl
使用 teradata-logs 連接器搭配 --assessment 旗標時,系統會擷取下列額外資料表和檢視畫面:
- DBC.DBQLUtilityTbl
- DBC.ResUsageScpu
- DBC.ResUsageSpma
Redshift
您可以使用下列任一 Amazon Redshift 驗證和授權機制搭配擷取工具:
- 使用者名稱和密碼。
- AWS Identity and Access Management (IAM) 存取金鑰 ID 和私密金鑰。
- AWS IAM 設定檔名稱。
如要使用使用者名稱和密碼進行驗證,請使用 Amazon Redshift 預設的 PostgreSQL JDBC 驅動程式。如要透過 AWS IAM 進行驗證,請使用 Amazon Redshift JDBC 驅動程式,您可以從下載頁面下載。
下表說明使用 dwh-migration-dumper 工具擷取 Amazon Redshift 中繼資料和查詢記錄時,常用的旗標。如要瞭解所有支援的旗標,請參閱全域旗標。
| 名稱 | 預設值 | 說明 | 必要 | 
|---|---|---|---|
| --assessment | 在產生資料庫記錄或擷取中繼資料時開啟評估模式。 用於中繼資料擷取時,這項工具會產生 BigQuery 遷移評估所需的統計資料。用於擷取查詢記錄時,會產生 BigQuery 遷移評估的查詢指標統計資料。 | 以評估模式執行時必須提供,翻譯時則不必。 | |
| --connector | 要使用的連接器名稱,在此案例中,中繼資料為 redshift,查詢記錄則為 redshift-raw-logs。 | 是 | |
| --database | 如未指定,Amazon Redshift 會使用 --user值做為預設資料庫名稱。 | 要連線的資料庫名稱。 | 否 | 
| --driver | 如未指定,Amazon Redshift 會使用預設的 PostgreSQL JDBC 驅動程式。 | 要用於這個連線的驅動程式 JAR 檔案絕對或相對路徑。您可以指定多個驅動程式 JAR 檔案,並以半形逗號分隔。 | 否 | 
| --host | localhost | 資料庫伺服器的主機名稱或 IP 位址。 | 否 | 
| --iam-accesskeyid | 
        用於驗證的 AWS IAM 存取金鑰 ID。存取金鑰是由字元組成的字串,如下所示: 
        請與  | 您不必明確提供驗證資訊,但必須透過下列其中一種方法提供: 
 | |
| --iam-profile | 
        用於驗證的 AWS IAM 設定檔。您可以檢查  
          請勿將此標記與  | 您不必明確提供驗證資訊,但必須透過下列其中一種方法提供: 
 | |
| --iam-secretaccesskey | 
        用於驗證的 AWS IAM 私密存取金鑰。存取密鑰是由字元組成的字串,如下所示: 
        請與  | 您不必明確提供驗證資訊,但必須透過下列其中一種方法提供: 
 | |
| --password | 資料庫連線要使用的密碼。 
          請勿將此標記與  | 您不必明確提供驗證資訊,但必須透過下列其中一種方法提供: 
 | |
| --port | 5439 | 資料庫伺服器的通訊埠。 | 否 | 
| --user | 資料庫連線要使用的使用者名稱。 | 是 | |
| --query-log-start | 要擷取查詢記錄的開始時間 (含此時間)。這個值會截斷至小時。這個旗標僅適用於 redshift-raw-logs 連接器。 
        範例: | 否 | |
| --query-log-end | 要擷取查詢記錄的結束時間 (不含)。這個值會截斷至小時。這個旗標僅適用於 redshift-raw-logs 連接器。 
        範例: | 否 | 
範例
以下範例說明如何使用 AWS IAM 金鑰進行驗證,從指定主機上的 Amazon Redshift 資料庫擷取中繼資料:
dwh-migration-dumper \
  --connector redshift \
  --database database \
  --driver path/redshift-jdbc42-version.jar \
  --host host.region.redshift.amazonaws.com \
  --iam-accesskeyid access_key_ID \
  --iam-secretaccesskey secret_access-key \
  --user user
以下範例說明如何使用使用者名稱和密碼進行驗證,從預設主機上的 Amazon Redshift 資料庫擷取中繼資料:
dwh-migration-dumper \
  --connector redshift \
  --database database \
  --password password \
  --user user
以下範例說明如何使用 AWS IAM 設定檔進行驗證,從指定主機上的 Amazon Redshift 資料庫擷取中繼資料:
dwh-migration-dumper \
  --connector redshift \
  --database database \
  --driver path/redshift-jdbc42-version.jar \
  --host host.region.redshift.amazonaws.com \
  --iam-profile profile \
  --user user \
  --assessment
以下範例說明如何使用 AWS IAM 設定檔進行驗證,從指定主機上的 Amazon Redshift 資料庫中,擷取評估的查詢記錄:
dwh-migration-dumper \
  --connector redshift-raw-logs \
  --database database \
  --driver path/redshift-jdbc42-version.jar \
  --host 123.456.789.012 \
  --iam-profile profile \
  --user user \
  --assessment
dwh-migration-dumper 工具擷取的資料表和檢視表
使用 redshift 連接器時,系統會擷取下列資料表和檢視畫面:
- SVV_COLUMNS
- SVV_EXTERNAL_COLUMNS
- SVV_EXTERNAL_DATABASES
- SVV_EXTERNAL_PARTITIONS
- SVV_EXTERNAL_SCHEMAS
- SVV_EXTERNAL_TABLES
- SVV_TABLES
- SVV_TABLE_INFO
- INFORMATION_SCHEMA.COLUMNS
- PG_CAST
- PG_DATABASE
- PG_LANGUAGE
- PG_LIBRARY
- PG_NAMESPACE
- PG_OPERATOR
- PG_PROC
- PG_TABLE_DEF
- PG_TABLES
- PG_TYPE
- PG_VIEWS
使用 redshift 連接器搭配 --assessment 旗標時,系統會擷取下列額外資料表和檢視畫面:
- SVV_DISKUSAGE
- STV_MV_INFO
- STV_WLM_SERVICE_CLASS_CONFIG
- STV_WLM_SERVICE_CLASS_STATE
使用 redshift-raw-logs 連接器時,系統會擷取下列資料表和檢視畫面:
- STL_DDLTEXT
- STL_QUERY
- STL_QUERYTEXT
- PG_USER
使用 redshift-raw-logs 連接器搭配 --assessment 旗標時,系統會擷取下列額外資料表和檢視畫面:
- STL_QUERY_METRICS
- SVL_QUERY_QUEUE_INFO
- STL_WLM_QUERY
如要瞭解 Redshift 中的系統檢視畫面和資料表,請參閱 Redshift 系統檢視畫面和 Redshift 系統目錄資料表。
Apache Hive/Spark 或 Trino/PrestoSQL
dwh-migration-dumper 工具僅支援透過 Kerberos 驗證 Apache Hive Metastore。因此,請勿使用 --user 和 --password 旗標,而是使用 --hive-kerberos-url 旗標提供 Kerberos 驗證詳細資料。
下表說明使用擷取工具擷取 Apache Hive、Spark、Presto 或 Trino 中繼資料時,常用的旗標。如要瞭解所有支援的旗標,請參閱全域旗標。
| 名稱 | 預設值 | 說明 | 必要 | 
|---|---|---|---|
| --assessment | 
        在擷取中繼資料時開啟評估模式。
        使用  | 這是評估作業的必填項目。Not required for translation. | |
| --connector | 要使用的連接器名稱,在本例中為 hiveql。 | 是 | |
| --hive-metastore-dump-partition-metadata | 是 | 
        導致  
          請勿將這個旗標與  | 否 | 
| --hive-metastore-version | 2.3.6 | 
        執行  | 否 | 
| --host | localhost | 資料庫伺服器的主機名稱或 IP 位址。 | 否 | 
| --port | 9083 | 資料庫伺服器的通訊埠。 | 否 | 
| --hive-kerberos-url | 用於驗證的 Kerberos 主體和主機。 | 如果叢集已啟用 Kerberos 驗證,則必須設定此屬性。 | |
| -Dhiveql.rpc.protection | RPC 保護設定等級。這會決定叢集與  必須等於叢集上  
 範例 (Bash): 範例 (Windows PowerShell): | 如果叢集已啟用 Kerberos 驗證,則必須設定此屬性。 | 
範例
以下範例說明如何擷取指定主機上 Hive 2.3.7 資料庫的中繼資料,且不需驗證,並使用替代連接埠進行連線:
dwh-migration-dumper \
  --connector hiveql \
  --hive-metastore-version 2.3.7 \
  --host host \
  --port port
如要使用 Kerberos 驗證,請以具備 Hive metastore 讀取權限的使用者身分登入,並產生 Kerberos 票證。接著,使用下列指令產生中繼資料 ZIP 檔案:
JAVA_OPTS="-Djavax.security.auth.useSubjectCredsOnly=false" \
  dwh-migration-dumper \
  --connector hiveql \
  --host host \
  --port port \
  --hive-kerberos-url principal/kerberos_host
Azure Synapse 或 Microsoft SQL Server
如要讓「dwh-migration-dumper」工具連線至 Azure Synapse 或 Microsoft SQL Server,請從 Microsoft 的下載頁面下載 JDBC 驅動程式。
下表說明使用擷取工具擷取 Azure Synapse 或 Microsoft SQL Server 中繼資料時,常用的旗標。如要瞭解所有支援的旗標,請參閱全域旗標。
| 名稱 | 預設值 | 說明 | 必要 | 
|---|---|---|---|
| --connector | 要使用的連接器名稱,在本例中為 sqlserver。 | 是 | |
| --database | 要連線的資料庫名稱。 | 是 | |
| --driver | 要用於這個連線的驅動程式 JAR 檔案絕對或相對路徑。您可以指定多個驅動程式 JAR 檔案,並以半形逗號分隔。 | 是 | |
| --host | localhost | 資料庫伺服器的主機名稱或 IP 位址。 | 否 | 
| --password | 資料庫連線要使用的密碼。 | 是 | |
| --port | 1433 | 資料庫伺服器的通訊埠。 | 否 | 
| --user | 資料庫連線要使用的使用者名稱。 | 是 | 
範例
以下範例說明如何從指定主機上的 Azure Synapse 資料庫擷取中繼資料:
dwh-migration-dumper \
  --connector sqlserver \
  --database database \
  --driver path/mssql-jdbc.jar \
  --host server_name.sql.azuresynapse.net \
  --password password \
  --user user
Greenplum
如要允許 dwh-migration-dumper 工具連線至 Greenplum,請從 VMware Greenplum 的下載頁面下載 JDBC 驅動程式。
下表說明使用擷取工具擷取 Greenplum 中繼資料時,常用的旗標。如要瞭解所有支援的旗標,請參閱通用旗標。
| 名稱 | 預設值 | 說明 | 必要 | 
|---|---|---|---|
| --connector | 要使用的連接器名稱,在本例中為 greenplum。 | 是 | |
| --database | 要連線的資料庫名稱。 | 是 | |
| --driver | 要用於這個連線的驅動程式 JAR 檔案絕對或相對路徑。您可以指定多個驅動程式 JAR 檔案,並以半形逗號分隔。 | 是 | |
| --host | localhost | 資料庫伺服器的主機名稱或 IP 位址。 | 否 | 
| --password | 資料庫連線要使用的密碼。 | 如未指定,擷取工具會使用安全提示要求這項資訊。 | |
| --port | 5432 | 資料庫伺服器的通訊埠。 | 否 | 
| --user | 資料庫連線要使用的使用者名稱。 | 是 | 
範例
以下範例說明如何擷取指定主機上 Greenplum 資料庫的中繼資料:
dwh-migration-dumper \
  --connector greenplum \
  --database database \
  --driver path/greenplum.jar \
  --host host \
  --password password \
  --user user \
Netezza
如要允許 dwh-migration-dumper 工具連線至 IBM Netezza,您必須取得 JDBC 驅動程式。通常可以從 IBM Netezza 設備主機的 /nz/kit/sbin
目錄取得驅動程式。如果找不到,請向系統管理員尋求協助,或參閱 IBM Netezza 說明文件中的「安裝及設定 JDBC」。
下表說明使用擷取工具擷取 IBM Netezza 中繼資料時,常用的旗標。如要瞭解所有支援的旗標,請參閱通用旗標。
| 名稱 | 預設值 | 說明 | 必要 | 
|---|---|---|---|
| --connector | 要使用的連接器名稱,在本例中為 netezza。 | 是 | |
| --database | 以半形逗號分隔的資料庫清單,列出要擷取的資料庫。 | 是 | |
| --driver | 要用於這個連線的驅動程式 JAR 檔案絕對或相對路徑。您可以指定多個驅動程式 JAR 檔案,並以半形逗號分隔。 | 是 | |
| --host | localhost | 資料庫伺服器的主機名稱或 IP 位址。 | 否 | 
| --password | 資料庫連線要使用的密碼。 | 是 | |
| --port | 5480 | 資料庫伺服器的通訊埠。 | 否 | 
| --user | 資料庫連線要使用的使用者名稱。 | 是 | 
範例
以下範例說明如何擷取指定主機上兩個 IBM Netezza 資料庫的中繼資料:
dwh-migration-dumper \
  --connector netezza \
  --database database1,database2 \
  --driver path/nzjdbc.jar \
  --host host \
  --password password \
  --user user
PostgreSQL
如要允許 dwh-migration-dumper 工具連線至 PostgreSQL,請從 PostgreSQL 的下載頁面下載 JDBC 驅動程式。
下表說明使用擷取工具擷取 PostgreSQL 中繼資料時,常用的旗標。如要瞭解所有支援的旗標,請參閱通用旗標。
| 名稱 | 預設值 | 說明 | 必要 | 
|---|---|---|---|
| --connector | 要使用的連接器名稱,在本例中為 postgresql。 | 是 | |
| --database | 要連線的資料庫名稱。 | 是 | |
| --driver | 要用於這個連線的驅動程式 JAR 檔案絕對或相對路徑。您可以指定多個驅動程式 JAR 檔案,並以半形逗號分隔。 | 是 | |
| --host | localhost | 資料庫伺服器的主機名稱或 IP 位址。 | 否 | 
| --password | 資料庫連線要使用的密碼。 | 如未指定,擷取工具會使用安全提示要求這項資訊。 | |
| --port | 5432 | 資料庫伺服器的通訊埠。 | 否 | 
| --user | 資料庫連線要使用的使用者名稱。 | 是 | 
範例
以下範例說明如何擷取指定主機上 PostgreSQL 資料庫的中繼資料:
dwh-migration-dumper \
  --connector postgresql \
  --database database \
  --driver path/postgresql-version.jar \
  --host host \
  --password password \
  --user user
Oracle
如要允許 dwh-migration-dumper 工具連線至 Oracle,請從 Oracle 的下載頁面下載 JDBC 驅動程式。
下表說明使用擷取工具擷取 Oracle 中繼資料時,常用的旗標。如要瞭解所有支援的旗標,請參閱通用旗標。
| 名稱 | 預設值 | 說明 | 必要 | 
|---|---|---|---|
| --connector | 要使用的連接器名稱,在本例中為 oracle。 | 是 | |
| --driver | 要用於這個連線的驅動程式 JAR 檔案絕對或相對路徑。您可以指定多個驅動程式 JAR 檔案,並以半形逗號分隔。 | 是 | |
| --host | localhost | 資料庫伺服器的主機名稱或 IP 位址。 | 否 | 
| --oracle-service | 連線要使用的 Oracle 服務名稱。 | 不一定,但您必須指定這個旗標或 --oracle-sid旗標。 | |
| --oracle-sid | 連線要使用的 Oracle 系統 ID (SID)。 | 不一定,但您必須指定這個旗標或 --oracle-service旗標。 | |
| --password | 資料庫連線要使用的密碼。 | 如未指定,擷取工具會使用安全提示要求這項資訊。 | |
| --port | 1521 | 資料庫伺服器的通訊埠。 | 否 | 
| --user | 資料庫連線要使用的使用者名稱。 
        您指定的使用者必須具備  | 是 | 
範例
以下範例說明如何使用 Oracle 服務連線,從指定主機上的 Oracle 資料庫擷取中繼資料:
dwh-migration-dumper \
  --connector oracle \
  --driver path/ojdbc8.jar \
  --host host \
  --oracle-service service_name \
  --password password \
  --user user
Snowflake
下表說明使用 dwh-migration-dumper 工具擷取 Snowflake 中繼資料時,常用的旗標。如要瞭解所有支援的旗標,請參閱通用旗標。
| 名稱 | 預設值 | 說明 | 必要 | 
|---|---|---|---|
| --assessment | 
        在產生資料庫記錄或擷取中繼資料時,開啟評估模式。使用  | 僅供評估。 | |
| --connector | 要使用的連接器名稱,在本例中為 snowflake。 | 是 | |
| --database | 要擷取的資料庫名稱。 一次只能從 Snowflake 擷取一個資料庫的資料。評估模式不允許使用這個標記。 | 僅供翻譯。 | |
| --host | localhost | 資料庫伺服器的主機名稱或 IP 位址。 | 否 | 
| --private-key-file | 
          用於驗證的 RSA 私密金鑰路徑。建議使用以金鑰配對為基礎進行驗證的 | 否,如果未提供,擷取工具會使用以密碼為基礎的驗證。 | |
| --private-key-password | 建立 RSA 私密金鑰時使用的密碼。 | 否,只有在私密金鑰經過加密時才需要。 | |
| --password | 資料庫連線要使用的密碼。 | 如未指定,擷取工具會使用安全提示要求這項資訊。不過,建議改用金鑰配對驗證。 | |
| --query-log-start | 
        要擷取查詢記錄的開始時間 (含此時間)。這個值會截斷至小時。這個旗標僅適用於  
        範例: | 否 | |
| --query-log-end | 
        要擷取查詢記錄的結束時間 (不含)。這個值會截斷至小時。這個旗標僅適用於  
        範例: | 否 | |
| --role | 用於授權的 Snowflake 角色。只有在大型安裝作業中,需要從 SNOWFLAKE.ACCOUNT_USAGE結構定義而非INFORMATION_SCHEMA取得中繼資料時,才需要指定此項目。詳情請參閱「使用大型 Snowflake 執行個體」。 | 否 | |
| --user | 資料庫連線要使用的使用者名稱。 | 是 | |
| --warehouse | 用於處理中繼資料查詢的 Snowflake 倉儲。 | 是 | 
範例
以下範例說明如何擷取評估的中繼資料:
dwh-migration-dumper \
  --connector snowflake \
  --assessment \
  --host "account.snowflakecomputing.com" \
  --role role \
  --user user \
  --private-key-file private-key-file \
  --private-key-password private-key-password \
  --warehouse warehouse
以下範例說明如何擷取本機主機上一般大小的 Snowflake 資料庫中繼資料:
dwh-migration-dumper \
  --connector snowflake \
  --database database \
  --user user \
  --private-key-file private-key-file \
  --private-key-password private-key-password \
  --warehouse warehouse
下列範例說明如何擷取指定主機上大型 Snowflake 資料庫的中繼資料:
dwh-migration-dumper \
  --connector snowflake \
  --database database \
  --host "account.snowflakecomputing.com" \
  --role role \
  --user user \
  --private-key-file private-key-file \
  --private-key-password private-key-password \
  --warehouse warehouse
或者,您也可以使用下列範例,透過密碼驗證擷取中繼資料:
dwh-migration-dumper \
  --connector snowflake \
  --database database \
  --host "account.snowflakecomputing.com" \
  --password password \
  --user user \
  --warehouse warehouse
使用大型 Snowflake 執行個體
dwh-migration-dumper 工具會從 Snowflake INFORMATION_SCHEMA 讀取中繼資料。不過,從 INFORMATION_SCHEMA 擷取的資料量有上限。如果執行擷取工具時收到 SnowflakeSQLException:
Information schema query returned too much data 錯誤,請按照下列步驟操作,改為從 SNOWFLAKE.ACCOUNT_USAGE 結構定義讀取中繼資料:
- 在 Snowflake 網頁介面中開啟「Shares」選項。
- 從「 - SNOWFLAKE.ACCOUNT_USAGE」共用資料夾建立資料庫:- -- CREATE DATABASE database FROM SHARE SNOWFLAKE.ACCOUNT_USAGE;
- 建立角色: - CREATE ROLE role;
- 將新資料庫的 - IMPORTED權限授予角色:- GRANT IMPORTED PRIVILEGES ON DATABASE database TO ROLE role;
- 將角色授予要用來執行 - dwh-migration-dumper工具的使用者:- GRANT ROLE role TO USER user;
Vertica
如要允許 dwh-migration-dumper 工具連線至 Vertica,請從下載頁面下載 JDBC 驅動程式。
下表說明使用擷取工具擷取 Vertica 中繼資料時,常用的旗標。如要瞭解所有支援的旗標,請參閱通用旗標。
| 名稱 | 預設值 | 說明 | 必要 | 
|---|---|---|---|
| --connector | 要使用的連接器名稱,在本例中為 vertica。 | 是 | |
| --database | 要連線的資料庫名稱。 | 是 | |
| --driver | 要用於這個連線的驅動程式 JAR 檔案絕對或相對路徑。您可以指定多個驅動程式 JAR 檔案,並以半形逗號分隔。 | 是 | |
| --host | localhost | 資料庫伺服器的主機名稱或 IP 位址。 | 否 | 
| --password | 資料庫連線要使用的密碼。 | 是 | |
| --port | 5433 | 資料庫伺服器的通訊埠。 | 否 | 
| --user | 資料庫連線要使用的使用者名稱。 | 是 | 
範例
以下範例說明如何從本機主機上的 Vertica 資料庫擷取中繼資料:
dwh-migration-dumper \
  --driver path/vertica-jdbc.jar \
  --connector vertica \
  --database database
  --user user
  --password password
通用標記
下表說明可搭配任何支援來源平台使用的旗標。
| 名稱 | 說明 | 
|---|---|
| --connector | 來源系統的連接器名稱。 | 
| --database | 實際使用情形依來源系統而異。 | 
| --driver | 連線至來源系統時要使用的驅動程式 JAR 檔案絕對或相對路徑。您可以指定多個驅動程式 JAR 檔案,並以半形逗號分隔。 | 
| --dry-run或-n | 顯示擷取工具會執行的動作,但不實際執行。 | 
| --help | 顯示指令列說明。 | 
| --host | 要連線的資料庫伺服器主機名稱或 IP 位址。 | 
| --jdbcDriverClass | (選用) 覆寫供應商指定的 JDBC 驅動程式類別名稱。 如果您有自訂 JDBC 用戶端,請使用這個選項。 | 
| --output | 輸出 ZIP 檔案的路徑。例如: dir1/dir2/teradata-metadata.zip。如未指定路徑,輸出檔案會建立在工作目錄中。如果您指定目錄路徑,系統會在指定目錄中建立預設的 zip 檔案名稱。如果目錄不存在,系統會建立該目錄。
      如要使用 Cloud Storage,請採用下列格式: 如要使用 Google Cloud 憑證進行驗證,請參閱驗證以使用用戶端程式庫。 | 
| --password | 資料庫連線要使用的密碼。 | 
| --port | 資料庫伺服器的通訊埠。 | 
| --save-response-file | 將指令列標記儲存為 JSON 檔案,方便重複使用。這個檔案名為 dumper-response-file.json,會在工作目錄中建立。如要使用回應檔案,請在執行擷取工具時,提供以@為前置字元的檔案路徑,例如dwh-migration-dumper @path/to/dumper-response-file.json。 | 
| --schema | 以半形逗號分隔的要擷取結構定義清單。 
        Oracle 不會區分結構定義和建立結構定義的資料庫使用者,因此您可以使用結構定義名稱或使用者名稱搭配  | 
| --thread-pool-size | 
        設定執行緒集區大小,這會影響連線集區大小。
        執行  如果擷取工具速度緩慢,或需要更多資源,可以增加使用的執行緒數量。如果跡象顯示伺服器上的其他程序需要更多頻寬,您可以減少使用的執行緒數量。 | 
| --url | 用於資料庫連線的網址,而非 JDBC 驅動程式產生的 URI。 在大多數情況下,產生的 URI 應已足夠。只有在需要使用來源平台專屬的 JDBC 連線設定,且該設定尚未由這個表格列出的其中一個旗標設定時,才需要覆寫產生的 URI。 | 
| --user | 資料庫連線要使用的使用者名稱。 | 
| --version | 顯示產品版本。 | 
| --telemetry | 
          收集有關執行作業效能特徵的洞察資料,例如時間長度、執行次數和資源用量。這個選項預設為啟用。如要停用遙測功能,請將這個旗標設為  | 
疑難排解
本節說明 dwh-migration-dumper 工具的常見問題和疑難排解技巧。
「記憶體不足」錯誤
dwh-migration-dumper 工具終端機輸出內容中的 java.lang.OutOfMemoryError 錯誤,通常與處理擷取資料時記憶體不足有關。如要解決這個問題,請增加可用記憶體或減少處理執行緒數量。
您可以匯出 JAVA_OPTS 環境變數,藉此增加記憶體上限:
Linux
export JAVA_OPTS="-Xmx4G"
Windows
set JAVA_OPTS="-Xmx4G"
您可以加入 --thread-pool-size 旗標,減少處理執行緒數量 (預設為 32)。這個選項僅支援 hiveql 和 redshift* 連接器。
dwh-migration-dumper --thread-pool-size=1
處理 WARN...Task failed 錯誤
有時您可能會在 WARN [main]
o.c.a.d.MetadataDumper [MetadataDumper.java:107] Task failed: … 工具終端機輸出中看到 dwh-migration-dumper 錯誤。擷取工具會向來源系統提交多個查詢,並將每個查詢的輸出內容寫入各自的檔案。如果看到這個問題,表示其中一個查詢失敗。不過,如果其中一項查詢失敗,不會影響其他查詢的執行。如果看到多個錯誤,請查看問題詳細資料,看看是否需要修正任何內容,才能正常執行查詢。WARN舉例來說,如果您在執行擷取工具時指定的資料庫使用者沒有讀取所有中繼資料的權限,請使用具備正確權限的使用者重試。
ZIP 檔案已毀損
如要驗證 dwh-migration-dumper 工具的 ZIP 檔案,請下載 SHA256SUMS.txt 檔案,然後執行下列指令:
Bash
sha256sum --check SHA256SUMS.txt
OK 結果會確認總和檢查碼驗證是否成功。其他訊息表示驗證錯誤:
- FAILED: computed checksum did NOT match:ZIP 檔案已毀損,必須重新下載。
- FAILED: listed file could not be read:系統找不到 ZIP 檔案版本。請確認從相同發布版本下載的總和檢查碼和 ZIP 檔案,都放在相同目錄中。
Windows PowerShell
(Get-FileHash RELEASE_ZIP_FILENAME).Hash -eq ((Get-Content SHA256SUMS.txt) -Split " ")[0]
將 RELEASE_ZIP_FILENAME 替換為 dwh-migration-dumper 指令列擷取工具版本的已下載 zip 檔案名稱,例如 dwh-migration-tools-v1.0.52.zip。
True 結果會確認總和檢查碼驗證是否成功。
False 結果表示驗證錯誤。請確認檢查碼和 ZIP 檔案是從相同版本下載,並放在相同目錄中。
Teradata 查詢記錄擷取作業緩慢
如要提升由 -Dteradata-logs.query-logs-table 和 -Dteradata-logs.sql-logs-table 旗標指定的聯結資料表效能,可以在 JOIN 條件中加入 DATE 類型的額外資料欄。這個資料欄必須在兩個資料表中定義,且必須是分區主索引的一部分。如要加入這個資料欄,請使用 -Dteradata-logs.log-date-column 旗標。
範例:
Bash
dwh-migration-dumper \ -Dteradata-logs.query-logs-table=historicdb.ArchivedQryLogV \ -Dteradata-logs.sql-logs-table=historicdb.ArchivedDBQLSqlTbl \ -Dteradata-logs.log-date-column=ArchiveLogDate
Windows PowerShell
dwh-migration-dumper ` "-Dteradata-logs.query-logs-table=historicdb.ArchivedQryLogV" ` "-Dteradata-logs.sql-logs-table=historicdb.ArchivedDBQLSqlTbl" ` "-Dteradata-logs.log-date-column=ArchiveLogDate"
超過 Teradata 列大小限制
Teradata 15 的資料列大小上限為 64 KB。如果超過上限,傾印工具會失敗,並顯示以下訊息:
none
[Error 9804] [SQLState HY000] Response Row size or Constant Row size overflow
如要解決這個錯誤,請將列上限延長至 1 MB,或將列分割成多列:
- 安裝並啟用 1MB Perm 和回應列功能,以及目前的 TTU 軟體。詳情請參閱「Teradata Database Message 9804」。
- 使用 -Dteradata.metadata.max-text-length和-Dteradata-logs.max-sql-length旗標,將長查詢文字分成多列。
下列指令顯示如何使用 -Dteradata.metadata.max-text-length 標記,將長查詢文字分割成多列,每列最多 10000 個字元:
Bash
dwh-migration-dumper \ --connector teradata \ -Dteradata.metadata.max-text-length=10000
Windows PowerShell
dwh-migration-dumper ` --connector teradata ` "-Dteradata.metadata.max-text-length=10000"
下列指令顯示如何使用 -Dteradata-logs.max-sql-length 標記,將長查詢文字分割成多列,每列最多 10000 個字元:
Bash
dwh-migration-dumper \ --connector teradata-logs \ -Dteradata-logs.max-sql-length=10000
Windows PowerShell
dwh-migration-dumper ` --connector teradata-logs ` "-Dteradata-logs.max-sql-length=10000"
Oracle 連線問題
在密碼或主機名稱無效等常見情況下,dwh-migration-dumper 工具會列印有意義的錯誤訊息,說明根本問題。不過在某些情況下,Oracle 伺服器傳回的錯誤訊息可能是一般訊息,難以調查。
其中一個問題是 IO Error: Got minus one from a read call。這項錯誤表示已建立與 Oracle 伺服器的連線,但伺服器未接受用戶端並關閉連線。如果伺服器只接受 TCPS 連線,通常就會發生這個問題。根據預設,dwh-migration-dumper 工具會使用 TCP 協定。如要解決這個問題,請覆寫 Oracle JDBC 連線網址。
您可以提供 url 旗標,解決這個問題,格式如下:jdbc:oracle:thin:@tcps://{HOST_NAME}:{PORT}/{ORACLE_SERVICE}。oracle-servicehostportOracle 伺服器通常使用的 TCPS 通訊埠號碼為 2484。
傾印器指令範例:
  dwh-migration-dumper \
    --connector oracle-stats \
    --url "jdbc:oracle:thin:@tcps://host:port/oracle_service" \
    --assessment \
    --driver "jdbc_driver_path" \
    --user "user" \
    --password
除了將連線通訊協定變更為 TCPS 之外,您可能還需要提供驗證 Oracle 伺服器憑證所需的 trustStore SSL 設定。如果缺少 SSL 設定,系統會顯示 Unable to find valid
certification path 錯誤訊息。如要解決這個問題,請設定 JAVA_OPTS 環境變數:
  set JAVA_OPTS=-Djavax.net.ssl.trustStore="jks_file_location" -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStorePassword="password"
視 Oracle 伺服器設定而定,您可能也需要提供 keyStore 設定。如要進一步瞭解設定選項,請參閱「SSL With Oracle JDBC Driver」。
後續步驟
執行 dwh-migration-dumper 工具後,請將輸出內容連同翻譯來源檔案上傳至 Cloud Storage。