產生翻譯和評估的中繼資料
本文說明如何使用 dwh-migration-dumper
指令列擷取工具,建立中繼資料和查詢記錄檔案。中繼資料檔案會說明來源系統中的 SQL 物件。
BigQuery 遷移服務會使用這項資訊,改善從來源系統方言翻譯至 GoogleSQL 的 SQL 指令碼。
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 |
僅適用於
根據預設,系統會從 範例 (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
以下範例說明如何在本機主機上擷取 Assessment 的查詢記錄,以便進行驗證:
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 身分與存取權管理 (IAM) 存取金鑰 ID 和私密金鑰。
- AWS 身分與存取權管理設定檔名稱。
如要使用使用者名稱和密碼進行驗證,請使用 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-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 |
在擷取中繼資料時啟用評估模式。 |
評估作業必填。翻譯時不必使用。 | |
--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 中繼資料時,常用的旗標。如要瞭解所有支援的旗標,請參閱「通用旗標」。
名稱 | 預設值 | 說明 | 必要 |
---|---|---|---|
--connector |
要使用的連接器名稱,在本例中為 snowflake。 | 是 | |
--database |
要連線的資料庫名稱。 您一次只能從 Snowflake 擷取一個資料庫。 |
是 | |
--host |
localhost | 資料庫伺服器的主機名稱或 IP 位址。 | 否 |
--private-key-file |
用於驗證的 RSA 私密金鑰路徑。建議您使用具有金鑰組驗證機制的 |
否,如果未提供,則擷取工具會使用密碼驗證。 | |
--private-key-password |
建立 RSA 私密金鑰時使用的密碼。 |
否,只有在私密金鑰已加密時才需要。 | |
--password |
資料庫連線要使用的密碼。 | 如未指定,則擷取工具會使用安全提示要求該資訊。不過,我們建議改用以金鑰組為基礎的驗證機制。 | |
--role |
用於授權的 Snowflake 角色。您只需要在大型安裝作業中指定此值,因為在這種情況下,您需要從 SNOWFLAKE.ACCOUNT_USAGE 結構定義而非 INFORMATION_SCHEMA 取得中繼資料。詳情請參閱「使用大型 Snowflake 執行個體」。 |
否 | |
--user |
資料庫連線要使用的使用者名稱。 |
是 | |
--warehouse |
用於處理中繼資料查詢的 Snowflake 倉儲。 |
是 |
範例
以下範例說明如何在本機主機上,擷取一般大小的 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 |
顯示產品版本。 |
疑難排解
本節說明 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
型別資料欄。這個資料欄必須在兩個資料表中定義,且必須是 Partitioned Primary Index 的一部分。如要納入這個資料欄,請使用 -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 和 Response Rows 功能,以及目前的 TTU 軟體。詳情請參閱 Teradata 資料庫訊息 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
旗標,而非提供 oracle-service
、host
和 port
旗標,藉此解決這個問題:jdbc:oracle:thin:@tcps://{HOST_NAME}:{PORT}/{ORACLE_SERVICE}
。通常,Oracle 伺服器使用的 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 之外,您可能還需要提供信任存放區 SSL 設定,才能驗證 Oracle 伺服器憑證。如果缺少 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 與 Oracle JDBC 驅動程式」。
後續步驟
執行 dwh-migration-dumper
工具後,請將輸出內容上傳至 Cloud Storage,並附上待翻譯的原始檔案。