変換と評価のためのメタデータを生成する

このドキュメントでは、dwh-migration-dumper コマンドライン抽出ツールを使用して、メタデータ ファイルとクエリ ログファイルを作成する方法について説明します。メタデータ ファイルは、ソースシステムに SQL オブジェクトを記述します。

BigQuery Migration Service はこの情報を使用して、ソースシステム言語から GoogleSQL への SQL スクリプトの変換を改善します。

BigQuery 移行評価では、メタデータ ファイルとクエリ ログファイルを使用して既存のデータ ウェアハウスを分析し、データ ウェアハウスの BigQuery への移行作業を評価します。

概要

dwh-migration-dumper ツールを使用すると、BigQuery に移行するデータベース プラットフォームからメタデータ情報を抽出できます。変換では抽出ツールの使用は必須ではありませんが、BigQuery の移行評価には必要であるため、すべての移行タスクに使用することを強くおすすめします。

詳細については、メタデータ ファイルを作成するをご覧ください。

dwh-migration-dumper ツールを使用すると、次のデータベース プラットフォームからメタデータを抽出できます。

  • Teradata
  • Amazon Redshift
  • Apache Hive
  • Apache Spark
  • Azure Synapse
  • Microsoft SQL Server
  • IBM Netezza
  • Oracle
  • 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 ツールのインストール手順は次のとおりです。

  1. dwh-migration-dumper ツールを実行するマシンで、dwh-migration-dumper ツールの GitHub リポジトリから zip ファイルをダウンロードします。
  2. SHA256SUMS.txt ファイルをダウンロードし、次のコマンドを実行します。
    sha256sum --check SHA256SUMS.txt
    
    検証が失敗した場合は、トラブルシューティングをご覧ください。
  3. ZIP ファイルを展開します。抽出ツールバイナリは、zip ファイルを抽出して作成されたフォルダの /bin サブディレクトリにあります。
  4. 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

データベース ログを生成するとき、またはメタデータを抽出するときに評価モードを有効にします。dwh-migration-dumper ツールは、メタデータ抽出に使用された場合、BigQuery 移行評価に必要なメタデータ統計を生成します。クエリログに使用された場合、BigQuery 移行評価の追加列を抽出します。

評価の実行に使用する場合は必須ですが、変換の場合は必要ありません。
--connector 使用するコネクタの名前。この場合は、メタデータでは teradata、クエリログでは teradata-logs です。 はい
--database

抽出するデータベースのカンマ区切りのリスト。Teradata サーバーの構成によっては、データベース名で大文字と小文字が区別される場合があります。

このフラグを teradata コネクタと組み合わせて使用すると、dwh-migration-dumper ツールは、指定されたデータベースのリストでメタデータのテーブルとビューをフィルタリングします。例外は DatabasesV ビューと RoleMembersV ビューです。dwh-migration-dumper ツールは、データベース名でフィルタリングせずに、これらのビューからデータベースとユーザーを抽出します。

このフラグは、teradata-logs コネクタと組み合わせて使用することはできません。クエリログは、すべてのデータベースに対して常に抽出されます。

いいえ
--driver この接続に使用するドライバ JAR ファイルへの絶対パスまたは相対パス。複数のドライバの JAR ファイルをカンマで区切って指定できます。 はい
--host localhost データベース サーバーのホスト名または IP アドレス。 いいえ
--password データベース接続に使用するパスワード。 指定しない場合、抽出ツールは安全なプロンプトを使用してパスワードをリクエストします。
--port 1025 データベース サーバーのポート。 いいえ
--user

データベース接続に使用するユーザー名。

はい
--query-log-alternates

teradata-logs コネクタの場合のみ。

クエリログを別の場所から抽出するには、代わりに -Dteradata-logs.query-logs-table フラグと -Dteradata-logs.sql-logs-table フラグを使用することをおすすめします。

デフォルトでは、クエリログは dbc.DBQLogTbl テーブルと dbc.DBQLSQLTbl テーブルから抽出されます。--assessment フラグを使用した場合、クエリログは dbc.QryLogV ビューと dbc.DBQLSQLTbl テーブルから抽出されます。クエリログを別の場所から抽出する必要がある場合は、--query-log-alternates フラグを使用してテーブルまたはビューの完全修飾名を指定できます。最初のパラメータは dbc.DBQLogTbl テーブルの代わりのテーブルを参照し、2 番目のパラメータは dbc.DBQLSQLTbl テーブルの代わりのテーブルを参照します。どちらのパラメータも必須です。
-Dteradata-logs.log-date-column フラグを使用すると、両方のテーブルに DATE 型のインデックス付きの列がある場合に、抽出のパフォーマンスを向上させることができます。

例: --query-log-alternates historicdb.ArchivedQryLogV,historicdb.ArchivedDBQLSqlTbl

いいえ
-Dteradata.tmode

接続のトランザクション モードです。次の値を使用できます。

  • ANSI: ANSI モード。これはデフォルトのモードです(フラグが指定されていない場合)
  • TERA: Teradata トランザクション モード(BTET)
  • DEFAULT: データベース サーバーで構成されたデフォルトのトランザクション モードを使用します
  • NONE: 接続にモードが設定されていません

例(Bash):
-Dteradata.tmode=TERA

例(Windows PowerShell):
"-Dteradata.tmode=TERA"

いいえ
-Dteradata-logs.log-date-column

teradata-logs コネクタの場合のみ。

-Dteradata-logs.query-logs-table フラグと -Dteradata-logs.sql-logs-table フラグで指定されたテーブルの結合のパフォーマンスを向上させるには、JOIN 条件に DATE 型の列を追加します。この列は両方のテーブルで定義する必要があり、パーティション プライマリ インデックスの一部である必要があります。

例(Bash):
-Dteradata-logs.log-date-column=ArchiveLogDate

例(Windows PowerShell):
"-Dteradata-logs.log-date-column=ArchiveLogDate"

いいえ
-Dteradata-logs.query-logs-table

teradata-logs コネクタの場合のみ。

デフォルトでは、クエリログは dbc.DBQLogTbl テーブルから抽出されます。--assessment フラグを使用した場合、クエリログは dbc.QryLogV ビューから抽出されます。クエリログを別の場所から抽出する必要がある場合は、このフラグを使用してテーブルまたはビューの完全修飾名を指定できます。
抽出のパフォーマンスを改善するには、-Dteradata-logs.log-date-column フラグをご覧ください。

例(Bash):
-Dteradata-logs.query-logs-table=historicdb.ArchivedQryLogV

例(Windows PowerShell):
"-Dteradata-logs.query-logs-table=historicdb.ArchivedQryLogV"

いいえ
-Dteradata-logs.sql-logs-table

teradata-logs コネクタの場合のみ。

デフォルトでは、SQL テキストを含むクエリログは dbc.DBQLSqlTbl テーブルから抽出されます。別の場所から抽出する必要がある場合は、このフラグを使用してテーブルまたはビューの完全修飾名を指定できます。
抽出のパフォーマンスを改善するには、-Dteradata-logs.log-date-column フラグをご覧ください。

例(Bash):
-Dteradata-logs.sql-logs-table=historicdb.ArchivedDBQLSqlTbl

例(Windows PowerShell):
"-Dteradata-logs.sql-logs-table=historicdb.ArchivedDBQLSqlTbl"

いいえ
-Dteradata-logs.utility-logs-table

teradata-logs コネクタの場合のみ。

デフォルトでは、ユーティリティ ログは dbc.DBQLUtilityTbl テーブルから抽出されます。ユーティリティ ログを別の場所から抽出する必要がある場合は、-Dteradata-logs.utility-logs-table フラグを使用してテーブルの完全修飾名を指定できます。

例(Bash):
-Dteradata-logs.utility-logs-table=historicdb.ArchivedUtilityLogs

例(Windows PowerShell):
"-Dteradata-logs.utility-logs-table=historicdb.ArchivedUtilityLogs"

いいえ
-Dteradata-logs.res-usage-scpu-table

teradata-logs コネクタの場合のみ。

デフォルトでは、SCPU リソースの使用状況ログは dbc.ResUsageScpu テーブルから抽出されます。これらを別の場所から抽出する必要がある場合は、-Dteradata-logs.res-usage-scpu-table フラグを使用してテーブルの完全修飾名を指定できます。

例(Bash):
-Dteradata-logs.res-usage-scpu-table=historicdb.ArchivedResUsageScpu

例(Windows PowerShell):
"-Dteradata-logs.res-usage-scpu-table=historicdb.ArchivedResUsageScpu"

いいえ
-Dteradata-logs.res-usage-spma-table

teradata-logs コネクタの場合のみ。

デフォルトでは、SPMA リソースの使用状況ログは dbc.ResUsageSpma テーブルから抽出されます。これらのログを別の場所から抽出する必要がある場合は、-Dteradata-logs.res-usage-spma-table フラグを使用してテーブルの完全修飾名を指定できます。

例(Bash):
-Dteradata-logs.res-usage-spma-table=historicdb.ArchivedResUsageSpma

例(Windows PowerShell):
"-Dteradata-logs.res-usage-spma-table=historicdb.ArchivedResUsageSpma"

いいえ
--query-log-start

クエリログ抽出の開始時間(指定した時間を含む)。値は時間単位に切り捨てられます。このフラグは、teradata-logs コネクタでのみ使用できます。

例: --query-log-start "2023-01-01 14:00:00"

いいえ
--query-log-end

クエリログ抽出の終了時間(指定した時間は含まない)。値は時間単位に切り捨てられます。このフラグは、teradata-logs コネクタでのみ使用できます。

例: --query-log-end "2023-01-15 22:00:00"

いいえ
-Dteradata.metadata.tablesizev.max-rows

teradata コネクタの場合のみ。

ビュー TableSizeV から抽出される行数を制限します。行は列 DatabaseNameAccountNameTableName によってグループ化されてから、永続領域のサイズ(式 SUM(CurrentPerm))で降順に並べ替えられます。その後、指定した行数が抽出されます。

例(Bash):
-Dteradata.metadata.tablesizev.max-rows=100000

例(Windows PowerShell):
"-Dteradata.metadata.tablesizev.max-rows=100000"

いいえ
-Dteradata.metadata.diskspacev.max-rows

teradata コネクタの場合のみ。

ビュー DiskSpaceV から抽出される行数を制限します。行は永続領域(列 CurrentPerm)のサイズで降順に並べ替えられてから、指定された行数が抽出されます。

例(Bash):
-Dteradata.metadata.diskspacev.max-rows=100000

例(Windows PowerShell):
"-Dteradata.metadata.diskspacev.max-rows=100000"

いいえ
-Dteradata.metadata.databasesv.users.max-rows

teradata コネクタの場合のみ。

ビュー DatabasesV から抽出されるユーザー(DBKind='U')を表す行数を制限します。行が列 PermSpace で降順に並べ替えられてから、指定された行数が抽出されます。

例(Bash):
-Dteradata.metadata.databasesv.users.max-rows=100000

例(Windows PowerShell):
"-Dteradata.metadata.databasesv.users.max-rows=100000"

いいえ
-Dteradata.metadata.databasesv.dbs.max-rows

teradata コネクタの場合のみ。

ビュー DatabasesV から抽出されるデータベース(DBKind='D')を表す行数を制限します。行が列 PermSpace で降順に並べ替えられてから、指定された行数が抽出されます。

例(Bash):
-Dteradata.metadata.databasesv.dbs.max-rows=100000

例(Windows PowerShell):
"-Dteradata.metadata.databasesv.dbs.max-rows=100000"

いいえ
-Dteradata.metadata.max-text-length

teradata コネクタの場合のみ。

TableTextV ビューからデータを抽出するときのテキスト列の最大長。定義された上限を超えるテキストは、複数の行に分割されます。指定可能な範囲: 5,000~32,000(両端を含む)。

例(Bash):
-Dteradata.metadata.max-text-length=10000

例(Windows PowerShell):
"-Dteradata.metadata.max-text-length=10000"

いいえ
-Dteradata-logs.max-sql-length

teradata-logs コネクタの場合のみ。

DBQLSqlTbl.SqlTextInfo 列の最大長。 定義された上限より長いクエリテキストは複数の行に分割されます。指定可能な範囲: 5,000~31,000(両端を含む)。

例(Bash):
-Dteradata-logs.max-sql-length=10000

例(Windows PowerShell):
"-Dteradata-logs.max-sql-length=10000"

いいえ

次の例は、ローカルホスト上の 2 つの 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

次のテーブルとビューは、--assessment フラグを指定して teradata コネクタを使用する場合に抽出されます。

  • 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

次のテーブルとビューは、--assessment フラグを指定して teradata-logs コネクタを使用する場合に抽出されます。

  • 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。アクセスキーは AKIAIOSFODNN7EXAMPLE のような文字列です。

--iam-secretaccesskey フラグと組み合わせて使用します。--iam-profile または --password フラグを指定するときは、このフラグを使用しないでください。

明示的ではなくでも、次のいずれかの方法で認証情報を指定する必要があります。

  • このフラグを --iam-secretaccesskey フラグと組み合わせて使用する。
  • --iam-profile フラグを使用する。
  • --password フラグを --user フラグと組み合わせて使用する。
--iam-profile

認証に使用する AWS IAM プロファイル。使用するプロファイル値を取得するには、$HOME/.aws/credentials ファイルを調べるか、aws configure list-profiles を実行します。

このフラグは、--iam-accesskeyid フラグ、--iam-secretaccesskey フラグ、--password フラグと併用しないでください。

明示的ではなくでも、次のいずれかの方法で認証情報を指定する必要があります。

  • このフラグを使用する。
  • --iam-accesskeyid フラグを --iam-secretaccesskey フラグと組み合わせて使用する。
  • --password フラグを --user フラグと組み合わせて使用する。
--iam-secretaccesskey

認証に使用する AWS IAM シークレット アクセスキー。シークレット アクセスキーは、wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY のような文字列です。

--iam-accesskeyid フラグと組み合わせて使用します。このフラグは、--iam-profile フラグや --password フラグと併用しないでください。

明示的ではなくでも、次のいずれかの方法で認証情報を指定する必要があります。

  • このフラグを --iam-accesskeyid フラグと組み合わせて使用する。
  • --iam-profile フラグを使用する。
  • --password フラグを --user フラグと組み合わせて使用する。
--password データベース接続に使用するパスワード。

このフラグは、--iam-accesskeyid フラグ、--iam-secretaccesskey フラグ、--iam-profile フラグと併用しないでください。

明示的ではなくでも、次のいずれかの方法で認証情報を指定する必要があります。

  • このフラグを --user フラグと組み合わせて使用する。
  • --iam-accesskeyid フラグを --iam-secretaccesskey フラグと組み合わせて使用する。
  • --password フラグを使用する。
--port 5439 データベース サーバーのポート。 いいえ
--user データベース接続に使用するユーザー名。 はい
--query-log-start

クエリログ抽出の開始時間(指定した時間を含む)。値は時間単位に切り捨てられます。このフラグは、redshift-raw-logs コネクタでのみ使用できます。

例: --query-log-start "2023-01-01 14:00:00"

いいえ
--query-log-end

クエリログ抽出の終了時間(指定した時間は含まない)。値は時間単位に切り捨てられます。このフラグは、redshift-raw-logs コネクタでのみ使用できます。

例: --query-log-end "2023-01-15 22:00:00"

いいえ

次の例は、認証に 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

次のテーブルとビューは、--assessment フラグを指定して redshift コネクタを使用する場合に抽出されます。

  • 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

次のテーブルとビューは、--assessment フラグを指定して redshift-raw-logs コネクタを使用する場合に抽出されます。

  • STL_QUERY_METRICS
  • SVL_QUERY_QUEUE_INFO
  • STL_WLM_QUERY

Redshift のシステムビューとテーブルの詳細については、Redshift システムビューRedshift システム カタログ テーブルをご覧ください。

Apache Hive/Spark または Trino/PrestoSQL

dwh-migration-dumper ツールは、Kerberos を使用した Apache Hive メタストアの認証のみをサポートしています。そのため、--user フラグと --password フラグは使用せず、代わりに --hive-kerberos-url フラグを使用して Kerberos 認証の詳細を指定します。

次の表に、抽出ツールを使用して Apache Hive、Spark、Presto、Trino メタデータを抽出する場合によく使用されるフラグを示します。サポートされているすべてのフラグについては、グローバル フラグをご覧ください。

名前 デフォルト値 説明 必須
--assessment

メタデータを抽出するときに評価モードを有効にします。 dwh-migration-dumper ツールは、メタデータ抽出に使用された場合、BigQuery 移行評価に必要なメタデータ統計を生成します。

評価には必須。変換には必要ありません。
--connector 使用するコネクタの名前。この場合は hiveql です。 はい
--hive-metastore-dump-partition-metadata true

dwh-migration-dumper ツールによりパーティション メタデータが抽出されます。Thrift クライアントのパフォーマンスに影響するため、このフラグは、多数のパーティションを持つ本番環境のメタストアでは false に設定することをおすすめします。これにより、抽出ツールのパフォーマンスは向上しますが、BigQuery 側ではパーティションの最適性が一部失われます。

効果がないので、このフラグは --assessment フラグと併用しないでください。

いいえ
--hive-metastore-version 2.3.6

dwh-migration-dumper ツールを実行すると、このフラグの値に基づいて、Apache Hive サーバーとの通信に使用する適切な Thrift 仕様が選択されます。抽出ツールに適切な Thrift 仕様がない場合、2.3.6 クライアントを使用して stdout に警告を出力します。この場合は、サポートに連絡し、リクエストした Apache Hive のバージョン番号をお知らせください。

いいえ
--host localhost データベース サーバーのホスト名または IP アドレス。 いいえ
--port 9083 データベース サーバーのポート。 いいえ
--hive-kerberos-url 認証に使用する Kerberos プリンシパルとホスト。 Kerberos 認証が有効になっているクラスタでは必須。
-Dhiveql.rpc.protection

RPC 保護の構成レベル。これにより、クラスタと dwh-migration-dumper ツール間の Simple Authentication and Security Layer(SASL)接続の保護の質(QOP)が決まります。

クラスタの /etc/hadoop/conf/core-site.xml ファイル内の hadoop.rpc.protection パラメータの値と等しくする必要があります。次のいずれかの値を指定します。

  • authentication
  • integrity
  • privacy

例(Bash):
-Dhiveql.rpc.protection=privacy

例(Windows PowerShell):
"-Dhiveql.rpc.protection=privacy"

Kerberos 認証が有効になっているクラスタでは必須。

次の例は、認証を行わず、接続に代替ポートを使用して、指定されたホスト上の Hive 2.3.7 データベースのメタデータを抽出する方法を示しています。

dwh-migration-dumper \
  --connector hiveql \
  --hive-metastore-version 2.3.7 \
  --host host \
  --port port

Kerberos 認証を使用するには、Hive メタストアへの読み取り権限を持つユーザーとしてログインし、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

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 データベース接続に使用するユーザー名。 はい

次の例は、指定したホスト上の 2 つの IBM Netezza データベースのメタデータを抽出する方法を示しています。

dwh-migration-dumper \
  --connector netezza \
  --database database1,database2 \
  --driver path/nzjdbc.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

データベース接続に使用するユーザー名。

メタデータを抽出するには、指定したユーザーにロール SELECT_CATALOG_ROLE を付与する必要があります。ユーザーに必要なロールが付与されているかを確認するには、Oracle データベースに対してクエリ select granted_role from user_role_privs; を実行します。

はい

次の例は、接続に 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 から一度に抽出できるのは 1 つのデータベースのみです。

はい
--host localhost データベース サーバーのホスト名または IP アドレス。 いいえ
--password データベース接続に使用するパスワード。 指定しない場合、抽出ツールは安全なプロンプトを使用してパスワードをリクエストします。
--role 認可に使用する Snowflake のロール。これを指定する必要があるのは、INFORMATION_SCHEMA ではなく SNOWFLAKE.ACCOUNT_USAGE スキーマからメタデータを取得する必要がある大規模なインストールの場合のみです。詳細については、大規模な Snowflake インスタンスの操作をご覧ください。 いいえ
--user

データベース接続に使用するユーザー名。

はい
--warehouse

メタデータ クエリの処理に使用する Snowflake ウェアハウス。

はい

次の例は、ローカルホストで標準的なサイズの Snowflake データベースのメタデータを抽出する方法を示しています。

dwh-migration-dumper \
  --connector snowflake \
  --database database \
  --password password \
  --user user \
  --warehouse warehouse

次の例は、指定したホスト上の大規模な Snowflake データベースのメタデータを抽出する方法を示しています。

dwh-migration-dumper \
  --connector snowflake \
  --database database \
  --host "account.snowflakecomputing.com" \
  --password password \
  --role role \
  --user user \
  --warehouse warehouse

大規模な Snowflake インスタンスの操作

dwh-migration-dumper ツールは、Snowflake INFORMATION_SCHEMA からメタデータを読み取ります。ただし、INFORMATION_SCHEMA から取得できるデータの量には上限があります。抽出ツールを実行したときにエラー SnowflakeSQLException: Information schema query returned too much data を受け取った場合は、SNOWFLAKE.ACCOUNT_USAGE スキーマからメタデータを読み取ることができるように、次の手順を行う必要があります。

  1. Snowflake ウェブ インターフェースで [Shares] オプションを開きます。
  2. SNOWFLAKE.ACCOUNT_USAGE 共有からデータベースを作成します。

    -- CREATE DATABASE database FROM SHARE SNOWFLAKE.ACCOUNT_USAGE;
    
  3. ロールを作成します。

    CREATE ROLE role;
    
  4. 新しいデータベースに対する IMPORTED 権限をこのロールに付与します。

    GRANT IMPORTED PRIVILEGES ON DATABASE database TO ROLE role;
    
  5. 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 を使用するには、次の形式を使用します。
gs://<BUCKET>/<PATH>

Google Cloud 認証情報を使用して認証するには、クライアント ライブラリを使用して認証するをご覧ください。

--password データベース接続に使用するパスワード。
--port データベース サーバーのポート。
--save-response-file 再利用しやすいよう、コマンドライン フラグを JSON ファイルに保存します。このファイルの名前は dumper-response-file.json で、ファイルは作業ディレクトリに作成されます。レスポンス ファイルを使用するには、抽出ツールを実行する際に、@ で始まるパスを指定します(例: dwh-migration-dumper @path/to/dumper-response-file.json)。
--schema

抽出するスキーマのカンマ区切りのリスト。

Oracle ではスキーマとスキーマを作成したデータベース ユーザーが区別されません。そのため、--schema フラグでは、スキーマ名またはユーザー名のいずれも使用できます。たとえば、--schema schema1,user2,schema3 です。

--thread-pool-size

接続プールのサイズに影響を与えるスレッドプールのサイズを設定します。スレッドプールのデフォルトのサイズは、dwh-migration-dumper ツールを実行しているサーバー上のコア数です。

抽出ツールが遅い、またはより多くのリソースが必要と思われる場合は、使用するスレッド数を増やすことができます。サーバー上の他のプロセスで帯域幅を増やす必要があることが予想される場合は、使用するスレッド数を減らすことができます。

--url

JDBC ドライバによって生成された URI ではなく、データベース接続に使用する URL。

ほとんどの場合、生成された URI で十分です。生成された URI は、ソース プラットフォームに固有で、この表にあるいずれかのフラグにより設定されていない JDBC 接続設定を使用する必要がある場合のみ、オーバーライドしてください。

--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: … エラーが表示されることがあります。抽出ツールは複数のクエリをソースシステムに送信し、各クエリの出力が独自のファイルに書き込まれます。この問題は、これらのクエリのいずれかが失敗したことを示します。ただし、1 つのクエリが失敗しても、他のクエリの実行は妨げられません。複数の WARN エラーが発生した場合は、問題の詳細を確認し、クエリを適切に実行するために修正する必要があるものがないか確認してください。たとえば、抽出ツールを実行したときに指定したデータベース ユーザーにすべてのメタデータを読み取る権限がない場合は、適切な権限を持つユーザーで再試行してください。

破損した ZIP ファイル

dwh-migration-dumper ツールの zip ファイルを検証するには、SHA256SUMS.txt ファイルをダウンロードして次のコマンドを実行します。

sha256sum --check SHA256SUMS.txt

OK という結果は、チェックサムの検証が成功したことを示します。その他のメッセージは、検証エラーを示しています。

  • FAILED: computed checksum did NOT match: zip ファイルが破損しているため、もう一度ダウンロードする必要があります。
  • FAILED: listed file could not be read: zip ファイルのバージョンが見つかりません。チェックサム ファイルと 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 に拡張するか、行を複数行に分割します。

  • 1 MB Perm と Response Rows 機能および最新の TTU ソフトウェアをインストールして有効にします。詳細については、Teradata Database Message 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"

次のステップ

dwh-migration-dumper ツールを実行した後、変換するソースファイルとともに Cloud Storage に出力をアップロードします。