產生翻譯和評估的中繼資料
dwh-migration-dumper 指令列擷取工具可讓您從現有資料倉儲中擷取中繼資料和查詢記錄檔,以便評估工作負載並遷移至 BigQuery。中繼資料檔案會說明來源系統中的 SQL 物件。
BigQuery 遷移服務會使用這項中繼資料,提高將 SQL 指令碼翻譯成 GoogleSQL 的準確度。此外,BigQuery 遷移評估功能會分析中繼資料和查詢記錄檔,協助您評估現有資料倉儲,並估算遷移至 BigQuery 的工作量。
總覽
您可以使用 dwh-migration-dumper 工具,從要遷移至 BigQuery 的資料庫平台擷取中繼資料資訊。雖然翻譯作業不一定要使用擷取工具,但 BigQuery 遷移評估作業必須使用,因此強烈建議您在所有遷移工作中都使用這項工具。
詳情請參閱「建立中繼資料檔案」。
您可以使用 dwh-migration-dumper 工具,從下列資料庫平台擷取中繼資料:
- Teradata 15 以上版本,以及地端部署 Teradata VantageCore
- Amazon Redshift
- Apache Hive
- Apache Impala
- Apache Spark
- Azure Synapse
- Greenplum
- SQL Server
- IBM Netezza
- Oracle
- PostgreSQL
- Snowflake
- Trino 或 PrestoSQL
- Vertica
- BigQuery
其中多數資料庫也支援擷取查詢記錄。
dwh-migration-dumper 工具會查詢系統資料表,收集與使用者和系統資料庫相關的資料定義語言 (DDL) 陳述式。不會查詢使用者資料庫的內容。這項工具會將系統資料表中的中繼資料資訊儲存為 CSV 檔案,然後將這些檔案壓縮成單一套件。接著,您在上傳要翻譯或評估的來源檔案時,將這個 ZIP 檔案上傳至 Cloud Storage。
使用查詢記錄選項時,dwh-migration-dumper 工具會查詢系統資料表,找出與使用者和系統資料庫相關的 DDL 陳述式和查詢記錄。這些檔案會以 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.zipTrue結果確認核對和驗證成功。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 |
僅適用於
根據預設,SPMA 資源用量記錄會從 範例 (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.ColumnsVDBC.DatabasesVDBC.DBCInfoDBC.FunctionsVDBC.IndicesVDBC.PartitioningConstraintsVDBC.TablesVDBC.TableTextV
使用 teradata 連接器搭配 --assessment 旗標時,系統會擷取下列額外資料表和檢視表:
DBC.All_RI_ChildrenVDBC.All_RI_ParentsVDBC.AllTempTablesVXDBC.DiskSpaceVDBC.RoleMembersVDBC.StatsVDBC.TableSizeV
使用 teradata-logs 連接器時,系統會擷取下列資料表和檢視表:
DBC.DBQLogTbl(如果使用--assessment旗標,則會變更為DBC.QryLogV)DBC.DBQLSqlTbl
使用 teradata-logs 連接器搭配 --assessment 旗標時,系統會擷取下列額外資料表和檢視表:
DBC.DBQLUtilityTblDBC.ResUsageScpuDBC.ResUsageSpma
Redshift
您可以搭配使用下列任一 Amazon Redshift 驗證和授權機制與擷取工具:
- 使用者名稱和密碼。
- AWS Identity and Access Management (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_COLUMNSSVV_EXTERNAL_COLUMNSSVV_EXTERNAL_DATABASESSVV_EXTERNAL_PARTITIONSSVV_EXTERNAL_SCHEMASSVV_EXTERNAL_TABLESSVV_TABLESSVV_TABLE_INFOINFORMATION_SCHEMA.COLUMNSPG_CASTPG_DATABASEPG_LANGUAGEPG_LIBRARYPG_NAMESPACEPG_OPERATORPG_PROCPG_TABLE_DEFPG_TABLESPG_TYPEPG_VIEWS
使用 redshift 連接器搭配 --assessment 旗標時,系統會擷取下列額外資料表和檢視表:
SVV_DISKUSAGESTV_MV_INFOSTV_WLM_SERVICE_CLASS_CONFIGSTV_WLM_SERVICE_CLASS_STATE
使用 redshift-raw-logs 連接器時,系統會擷取下列資料表和檢視表:
STL_DDLTEXTSTL_QUERYSTL_QUERYTEXTPG_USER
使用 redshift-raw-logs 連接器搭配 --assessment 旗標時,系統會擷取下列額外資料表和檢視表:
STL_QUERY_METRICSSVL_QUERY_QUEUE_INFOSTL_WLM_QUERY
如要瞭解 Redshift 中的系統檢視表和資料表,請參閱「Redshift 系統檢視表」和「Redshift 系統目錄資料表」。
Hive/Impala/Spark 或 Trino/PrestoSQL
dwh-migration-dumper 工具僅支援透過 Kerberos 驗證 Apache Hive metastore。因此,請勿使用 --user 和 --password 旗標,而是使用 --hive-kerberos-url 旗標提供 Kerberos 驗證詳細資料。
下表說明使用擷取工具擷取 Apache Hive、Impala、Spark、Presto 或 Trino 中繼資料時常用的旗標。如要瞭解所有支援的旗標,請參閱全域旗標。
| 名稱 | 預設值 | 說明 | 必要 |
|---|---|---|---|
--assessment |
擷取中繼資料時開啟評估模式。
|
評估作業的必要項目。Not required for translation. | |
--connector |
要使用的連接器名稱,在本例中為 hiveql。 | 是 | |
--hive-metastore-dump-partition-metadata |
true |
讓
請勿將這個旗標與 |
否 |
--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 / Oracle Exadata
如要允許 dwh-migration-dumper 工具連線至 Oracle,請從 Oracle 的下載頁面下載 JDBC 驅動程式。
oracle 和 oracle-stats 連接器也支援 Oracle Exadata。
下表說明使用擷取工具擷取 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 |
列出要擷取的資料庫名稱,並以半形逗號分隔。 評估模式不允許使用這個標記。 |
僅供翻譯。 | |
--host |
localhost | 資料庫伺服器的主機名稱或 IP 位址。 | 否 |
--private-key-file |
用於驗證的 RSA 私密金鑰路徑。建議使用 |
否,如未提供,擷取工具會使用密碼式驗證。 | |
--private-key-password |
建立 RSA 私密金鑰時使用的密碼。 |
否,只有在私密金鑰經過加密時才需要。 | |
--password |
資料庫連線要使用的密碼。 | 如未指定,擷取工具會使用安全提示要求提供。不過,建議您改用金鑰組驗證。 | |
--query-log-start |
要擷取的查詢記錄開始時間 (含此時間)。會截斷小時以後的資料。這個旗標僅適用於
範例: |
否 | |
--query-log-end |
要擷取的查詢記錄結束時間 (不含)。會截斷小時以後的資料。這個旗標僅適用於
範例: |
否 | |
--role |
用於授權的 Snowflake 角色。如果預設角色具備足夠權限,則技術上可不指定角色,但強烈建議您指定角色 (例如 ACCOUNTADMIN),確保工作階段具備存取 SNOWFLAKE.ACCOUNT_USAGE 結構定義所需的權限。詳情請參閱「使用大型 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
BigQuery
下表說明使用擷取工具擷取 BigQuery 中繼資料時常用的旗標。如要瞭解所有支援的旗標,請參閱全域旗標。
| 名稱 | 預設值 | 說明 | 必要 |
|---|---|---|---|
--connector |
要使用的連接器名稱,在本例中為 bigquery。 | 是 | |
--database |
要從中擷取中繼資料和查詢記錄的專案清單,以半形逗號分隔。 |
是 | |
--schema |
要從中擷取中繼資料和查詢記錄的資料集清單,以半形逗號分隔。 |
是 |
範例
以下範例說明如何從本機主機上的 Vertica 資料庫擷取中繼資料:
dwh-migration-dumper \
--connector bigquery \
--database PROJECT1, PROJECT2
--schema DATASET1, DATASET2
通用標記
下表說明可與任何支援的來源平台搭配使用的旗標。
| 名稱 | 說明 |
|---|---|
--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 錯誤
有時您可能會在 dwh-migration-dumper 工具終端機輸出內容中看到 WARN [main] o.c.a.d.MetadataDumper [MetadataDumper.java:107] Task failed: … 錯誤。擷取工具會向來源系統提交多項查詢,並將每項查詢的輸出內容寫入各自的檔案。如果看到這個問題,表示其中一項查詢失敗。不過,即使其中一項查詢失敗,其他查詢仍會執行。如果看到多個 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 旗標。
以下範例說明如何使用 -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。如果超過限制,擷取工具會失敗,並顯示下列訊息:
[Error 9804] [SQLState HY000] Response Row size or Constant Row size overflow
如要解決這項錯誤,請將資料列大小上限提高至 1 MB,或將資料列分割成多個資料列:
- 安裝並啟用 1 MB Perm 和 Response Rows 功能,以及目前的 TTU 軟體。詳情請參閱「Teradata 資料庫訊息 9804」。
- 使用
-Dteradata.metadata.max-text-length和-Dteradata-logs.max-sql-length旗標,將長查詢文字分割成多個資料列。
下列指令說明如何使用 -Dteradata.metadata.max-text-length 旗標,將長查詢文字分割成多列,每列最多 10,000 個字元:
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 旗標,將長查詢文字分割成多個資料列,每個資料列最多 10,000 個字元:
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-service、host 和 port 旗標。Oracle 伺服器使用的 TCPS 通訊埠編號通常是 2484。
以下範例說明如何在指令中指定連線網址:
dwh-migration-dumper \
--connector oracle-stats \
--url "jdbc:oracle:thin:@tcps://HOST_NAME: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」(搭配 Oracle JDBC 驅動程式使用 SSL)。
後續步驟
執行 dwh-migration-dumper 工具後,請將輸出內容和要翻譯的來源檔案上傳至 Cloud Storage。