변환 및 평가를 위한 메타데이터 생성

dwh-migration-dumper 명령줄 추출 도구를 사용하면 기존 데이터 웨어하우스에서 메타데이터 및 쿼리 로그 파일을 추출하여 워크로드를 평가하고 BigQuery로 마이그레이션할 수 있습니다. 메타데이터 파일은 소스 시스템의 SQL 객체를 설명합니다.

BigQuery Migration Service는 이 메타데이터를 사용하여 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 저장소에서 소스 코드를 검토하고 자체 바이너리를 컴파일할 수 있습니다.

기본 요건

자바 설치

dwh-migration-dumper 도구를 실행하려는 서버에 Java 8 이상이 설치되어 있어야 합니다. Java가 설치되어 있지 않으면 Java 다운로드 페이지에서 Java를 다운로드하여 설치합니다.

필수 권한

dwh-migration-dumper 도구를 소스 시스템에 연결하기 위해 지정하는 사용자 계정에는 해당 시스템에서 메타데이터를 읽을 수 있는 권한이 있어야 합니다. 이 계정에 플랫폼에 제공되는 메타데이터 리소스를 쿼리할 수 있는 적절한 역할 멤버십이 있는지 확인합니다. 예를 들어 INFORMATION_SCHEMA는 여러 플랫폼에 공통되는 메타데이터 리소스입니다.

dwh-migration-dumper 도구 설치

dwh-migration-dumper 도구를 설치하려면 다음 단계를 수행합니다.

  1. dwh-migration-dumper 도구를 실행하려는 머신의 dwh-migration-dumper 도구 GitHub 저장소에서 ZIP 파일을 다운로드합니다.
  2. 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 파일이 동일한 출시 버전에서 다운로드되어 동일한 디렉터리에 있는지 확인합니다.

  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 테이블에 대한 대안을 참조하고, 두 번째 매개변수는 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 뷰에서 추출되는 행 수를 제한합니다. 행은 DatabaseName, AccountName, TableName 열로 그룹화된 후에 영구 크기의 크기를 기준으로 내림차순으로 정렬됩니다(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 (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 시스템 카탈로그 테이블을 참조하세요.

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

메타데이터를 추출할 때 평가 모드를 켭니다. dwh-migration-dumper 도구는 메타데이터 추출에 사용될 때 BigQuery 마이그레이션 평가를 위해 필요한 메타데이터 통계를 생성합니다.

평가에 필요합니다. 변환에는 필요하지 않습니다.
--connector 사용할 커넥터의 이름입니다(여기에서는 hiveql). 예
--hive-metastore-dump-partition-metadata true

dwh-migration-dumper 도구로 파티션 메타데이터를 추출합니다. Thrift 클라이언트 성능 영향으로 인해 상당 수의 파티션이 포함된 프로덕션 metastore에 대해 이 플래그를 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 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 시스템 식별자(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 메타데이터를 추출하는 데 일반적으로 사용되는 플래그를 설명합니다. 지원되는 모든 플래그에 대한 자세한 내용은 전역 플래그를 참조하세요.

이름 기본값 설명 필수
--assessment

데이터베이스 로그를 생성하거나 메타데이터를 추출할 때 평가 모드를 켭니다. dwh-migration-dumper 도구는 메타데이터 추출에 사용될 때 BigQuery 마이그레이션 평가를 위해 필요한 메타데이터 통계를 생성합니다. 쿼리 로그에 사용되는 경우 이 도구는 BigQuery 마이그레이션 평가를 위한 추가 열을 추출합니다.

평가용으로만 사용됩니다.
--connector 사용할 커넥터의 이름입니다(여기에서는 snowflake). 예
--database

추출할 데이터베이스 이름의 쉼표로 구분된 목록입니다.

이 플래그는 평가 모드에서 허용되지 않습니다.

번역 전용입니다.
--host localhost 데이터베이스 서버의 호스트 이름 또는 IP 주소입니다. 아니요
--private-key-file

인증에 사용되는 RSA 비공개 키의 경로입니다. 키 쌍 기반 인증을 사용하는 SERVICE 사용자를 사용하는 것이 좋습니다. 이렇게 하면 MFA 토큰을 생성할 필요 없이 Snowflake 데이터 플랫폼에 액세스하는 안전한 방법이 제공됩니다.

아니요. 제공되지 않으면 추출 도구는 비밀번호 기반 인증을 사용합니다.
--private-key-password

RSA 비공개 키를 만들 때 사용한 비밀번호입니다.

아니요. 비공개 키가 암호화된 경우에만 필요합니다.
--password 데이터베이스 연결에 사용할 비밀번호입니다. 지정하지 않으면 추출 도구가 보안 프롬프트를 사용하여 요청합니다. 하지만 대신 키 쌍 기반 인증을 사용하는 것이 좋습니다.
--query-log-start

추출할 쿼리 로그의 시작 시간(포함)입니다. 값은 시간으로 잘립니다. 이 플래그는 snowflake-logs 커넥터에서만 사용할 수 있습니다.

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

아니요
--query-log-end

추출할 쿼리 로그의 종료 시간(제외)입니다. 값은 시간으로 잘립니다. 이 플래그는 snowflake-logs 커넥터에서만 사용할 수 있습니다.

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

아니요
--role 승인에 사용할 Snowflake 역할입니다. 기본 역할에 충분한 권한이 있는 경우 기술적으로 선택사항이지만 세션에 SNOWFLAKE.ACCOUNT_USAGE 스키마에 액세스하는 데 필요한 권한이 있는지 확인하려면 ACCOUNTADMIN과 같은 역할을 지정하는 것이 좋습니다. 자세한 내용은 대규모 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 스키마에서 메타데이터를 읽을 수 있도록 다음 단계를 수행해야 합니다.

  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

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를 사용하려면 다음 형식을 사용합니다.
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로 충분합니다. 소스 플랫폼과 관련이 있고 아직 이 테이블에 나열된 플래그 중 하나로 설정되지 않은 JDBC 연결 문자열을 사용해야 할 경우에만 생성된 URI를 재정의하세요.

--user 데이터베이스 연결에 사용할 사용자 이름입니다.
--version 제품 버전을 표시합니다.
--telemetry

실행 시간, 실행 횟수, 리소스 사용량과 같은 실행 성능 특성에 대한 통계를 수집합니다. 이 기능은 기본적으로 사용 설정되어 있습니다. 원격 분석을 사용 중지하려면 이 플래그를 false로 설정합니다.

문제 해결

다음 섹션에서는 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의 행 크기 한도는 64KB입니다. 한도를 초과하면 다음 메시지와 함께 추출 도구가 실패합니다.

[Error 9804] [SQLState HY000] Response Row size or Constant Row size overflow

이 오류를 해결하려면 행 한도를 1MB로 늘리거나 행을 여러 행으로 분할합니다.

  • 1MB 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을 재정의해야 합니다.

oracle-service, host, port 플래그를 제공하는 대신 jdbc:oracle:thin:@tcps://HOST_NAME:PORT/ORACLE_SERVICE 형식으로 url 플래그를 제공하여 이 문제를 해결할 수 있습니다. 일반적으로 Oracle 서버에서 사용하는 TCPS 포트 번호는 2484입니다.

다음 예시에서는 명령어에서 연결 URL을 지정하는 방법을 보여줍니다.

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 구성을 제공해야 할 수도 있습니다. 구성 옵션에 대한 자세한 내용은 Oracle JDBC 드라이버를 사용한 SSL을 참조하세요.

다음 단계

dwh-migration-dumper 도구를 실행한 후 변환할 소스 파일과 함께 Cloud Storage에 출력 업로드하기