将 Oracle 数据加载到 BigQuery 中

您可以使用 BigQuery Data Transfer Service for Oracle 连接器将数据从 Oracle 加载到 BigQuery。借助 BigQuery Data Transfer Service,您可以安排周期性转移作业,以将 Oracle 中的最新数据添加到 BigQuery。

限制

Oracle 转移作业受到以下限制:

  • 与 Oracle 数据库的并发连接数是有上限的,因此单个 Oracle 数据库的并发迁移作业运行数不得超过该上限。
  • 如果公共 IP 不适用于 Oracle 数据库连接,您必须设置网络连接,但需要满足以下要求:
    • 数据源必须可从网络连接所在的子网访问。
    • 网络连接不得位于 240.0.0.0/24 范围内的子网内。
    • 如果网络连接存在活动连接,则无法删除。如需删除网络连接,请与 Cloud Customer Care 团队联系
    • 对于 us 多区域,网络连接必须位于 us-central1 区域。对于 eu 多区域,网络连接必须位于 europe-west4 区域。
  • 周期性 Oracle 转移作业之间的最短间隔时间为 15 分钟。周期性转移作业的默认间隔时间为 24 小时。
  • 单个转移配置在同一时间只能支持一次数据转移运行。如果第二次数据转移的预定运行时间在第一次转移完成之前,则只有第一次数据转移会完成,而与第一次转移时间重叠的任何其他数据转移都会被跳过。
    • 为避免在单个转移配置中跳过转移,建议您通过配置重复频率来增加大型数据转移之间的时长。
  • 如果您配置的网络连接和虚拟机 (VM) 实例位于不同的区域,那么在从 Oracle 转移数据时,可能会发生跨区域数据移动。

数据注入选项

以下部分介绍了设置 Oracle 数据转移作业时可用的数据注入选项。

TLS 配置

Oracle 连接器支持配置传输层安全性 (TLS),以加密数据转移到 BigQuery 的过程。Oracle 连接器支持以下 TLS 配置:

  • 加密数据,并验证 CA 和主机名:此模式使用 TLS 通过 TCPS 协议对服务器执行完整验证。它会对传输中的所有数据进行加密,并验证数据库服务器的证书是否由可信的证书授权机构 (CA) 签名。此模式还会检查您要连接的主机名是否与服务器证书上的通用名称 (CN) 或主题备用名称 (SAN) 完全一致。此模式可防止攻击者使用其他网域的有效证书来冒充您的数据库服务器。
    • 如果您的主机名与证书 CN 或 SAN 不匹配,连接会失败。您必须配置与证书匹配的 DNS 解析,或使用其他安全模式。
    • 使用此模式可获得最安全的选项,以防止中间人 (PITM) 攻击。
  • 加密数据,仅验证 CA:此模式使用 TCPS 协议通过 TLS 加密所有数据,并验证服务器的证书是否由客户端信任的 CA 签名。不过,此模式不会验证服务器的主机名。只要证书有效且由可信的 VA 签发,此模式就能成功连接,无论证书中的主机名是否与您要连接的主机名匹配。
    • 如果您想确保连接到证书由可信 CA 签名的服务器,但主机名无法验证或您无法控制主机名配置,请使用此模式。
  • 仅加密:此模式使用 Oracle 的原生网络加密通过标准 TCP 端口加密客户端和服务器之间传输的所有数据。它不会执行任何证书或主机名验证。
    • 此模式通过保护传输中的数据来提供一定程度的安全性,但可能会受到 PITM 攻击。
    • 如果您需要确保所有数据都经过加密,但无法或不想验证服务器的身份,请使用此模式。建议在处理专用 VPC 时使用此模式。
  • 不加密或验证:此模式不会加密任何数据,也不会执行任何证书或主机名验证。所有数据都以纯文本形式发送。
    • 我们不建议在处理敏感数据的环境中使用此模式。
    • 我们建议仅在安全不是问题的隔离网络中将此模式用于测试目的。

可信服务器证书 (PEM)

如果您使用的是加密数据,并验证 CA 和主机名模式或加密数据,并验证 CA 模式,则还可以提供一个或多个 PEM 编码的证书。在某些情况下,BigQuery Data Transfer Service 需要在 TLS 连接期间验证数据库服务器的身份,此时需要这些证书:

  • 如果您使用的是由组织内的私有 CA 签名的证书或自签名证书,则必须提供完整的证书链或单个自签名证书。对于由托管云提供商服务(例如 Amazon Relational Database Service (RDS))的内部 CA 签发的证书,这是必需的。
  • 如果您的数据库服务器证书是由公共 CA(例如 Let's Encrypt、DigiCert 或 GlobalSign)签名的,则无需提供证书。这些公共 CA 的根证书已预安装并受到 BigQuery Data Transfer Service 的信任。

创建 Oracle 转移配置时,您可以在受信任的 PEM 证书字段中提供 PEM 编码的证书,但需满足以下要求:

  • 证书必须是有效的 PEM 编码证书链。
  • 证书必须完全正确。证书链中缺少任何证书或内容不正确都会导致 TLS 连接失败。
  • 对于单个证书,您可以提供来自数据库服务器的单个自签名证书。
  • 对于由私有 CA 颁发的完整证书链,您必须提供完整的信任链。这包括数据库服务器的证书以及任何中间 CA 证书和根 CA 证书。

准备工作

以下部分介绍了在创建 Oracle 转移作业之前需要执行的步骤。

Oracle 前提条件

创建 Oracle 转移作业时,您还必须具有以下 Oracle 数据库信息。

参数名称 说明
database 数据库的名称。
host

数据库的主机名或 IP 地址。

port

数据库的端口号。

username

用于访问数据库的用户名。

password

用于访问数据库的密码。

BigQuery 前提条件

所需 BigQuery 角色

如需获得创建 BigQuery Data Transfer Service 数据转移作业所需的权限,请让您的管理员为您授予项目的 BigQuery Admin (roles/bigquery.admin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色可提供创建 BigQuery Data Transfer Service 数据转移作业所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

创建 BigQuery Data Transfer Service 数据转移作业需要以下权限:

  • BigQuery Data Transfer Service 权限:
    • bigquery.transfers.update
    • bigquery.transfers.get
  • BigQuery 权限:
    • bigquery.datasets.get
    • bigquery.datasets.getIamPolicy
    • bigquery.datasets.update
    • bigquery.datasets.setIamPolicy
    • bigquery.jobs.create

您也可以使用自定义角色或其他预定义角色来获取这些权限。

如需了解详情,请参阅授予 bigquery.admin 访问权限

将 Oracle 数据加载到 BigQuery 中

通过使用以下选项之一设置转移配置,将 Oracle 数据添加到 BigQuery 中:

控制台

  1. 前往 Google Cloud 控制台中的“数据转移”页面。

    转到“数据传输”

  2. 点击 创建转移作业

  3. 来源类型部分的来源中,选择 Oracle

  4. 数据源详细信息部分,执行以下操作:

    • 网络连接部分,选择现有网络连接或点击创建网络连接
    • 主机部分,输入数据库的主机名或 IP。
    • 端口部分,输入 Oracle 数据库用于传入连接的端口号,例如 1521
    • 数据库名称部分,输入 Oracle 数据库的名称。
    • 连接类型部分,输入连接网址类型(SERVICESIDTNS)。
    • 用户名部分,输入启动 Oracle 数据库连接的用户的用户名。
    • 密码部分,输入启动 Oracle 数据库连接的用户的密码。
    • 对于 TLS 模式,请从下拉菜单中选择一个选项。如需详细了解 TLS 模式,请参阅 TLS 配置
    • 对于可信 PEM 证书,请输入颁发数据库服务器 TLS 证书的证书授权机构 (CA) 的公共证书。如需了解详情,请参阅可信服务器证书 (PEM)
    • Oracle objects to transfer(要转移的 Oracle 对象)部分,点击浏览以选择要转移到 BigQuery 目标数据集的任何表。此外,您还可以在此字段中手动输入要包含在数据转移作业中的任何对象。
  5. 目标设置部分的数据集字段中,选择您创建用来存储数据的数据集。

  6. 转移配置名称部分的显示名称中,输入数据转移作业的名称。

  7. 时间表选项部分中,执行以下操作:

    • 重复频率列表中,选择一个选项来指定此数据转移作业的运行频率。如需指定自定义重复频率,请选择自定义。如果您选择按需,则当您手动触发转移作业时,此转移作业会运行。
    • 如果适用,请选择立即开始从设置的时间开始,并提供开始日期和运行时间。
  8. 可选:在通知选项部分,执行以下操作:

    • 如需启用电子邮件通知,请点击电子邮件通知切换开关。启用此选项后,转移作业管理员会在转移作业运行失败时收到电子邮件通知。
    • 如需为此转移作业启用 Pub/Sub 转移作业运行通知,请点击 Pub/Sub 通知切换开关。您可以选择主题名称,也可以点击创建主题来创建一个主题。
  9. 点击保存

bq

输入 bq mk 命令并提供转移作业创建标志 --transfer_config

bq mk
    --transfer_config
    --project_id=PROJECT_ID
    --data_source=DATA_SOURCE
    --display_name=DISPLAY_NAME
    --target_dataset=DATASET
    --params='PARAMETERS'

其中:

  • PROJECT_ID(可选):您的 Google Cloud 项目 ID。如果未提供 --project_id 来指定具体项目,则系统会使用默认项目。
  • DATA_SOURCE:数据源,oracle
  • DISPLAY_NAME:此标志表示转移配置的显示名称。数据转移作业名称可以是任何可让您在需要修改数据转移作业时识别该数据转移作业的名称。
  • DATASET:转移作业配置的目标数据集。
  • PARAMETERS:所创建转移作业配置的参数(采用 JSON 格式)。例如 --params='{"param":"param_value"}'。以下是 Oracle 数据转移作业的参数:

    • connector.networkAttachment(可选):要连接到 Oracle 数据库的网络连接的名称。
    • connector.authentication.Username:Oracle 账号的用户名。
    • connector.authentication.Password:Oracle 账号的密码。
    • connector.database:Oracle 数据库的名称。
    • connector.endpoint.host:数据库的主机名或 IP。
    • connector.endpoint.port:Oracle 数据库用于传入连接的端口号,例如 1520
    • connector.connectionType:连接网址类型(SERVICESIDTNS)。
    • connector.tls.mode:指定要用于此转移的 TLS 配置
      • ENCRYPT_VERIFY_CA_AND_HOST 用于加密数据,并验证 CA 和主机名
      • ENCRYPT_VERIFY_CA 用于加密数据,并仅验证 CA
      • ENCRYPT_VERIFY_NONE 仅用于数据加密
      • DISABLE 表示不加密或不验证
    • connector.tls.trustedServerCertificate:(可选)提供一个或多个 PEM 编码的证书。仅当 connector.tls.modeENCRYPT_VERIFY_CA_AND_HOSTENCRYPT_VERIFY_CA 时才需要提供此值。
    • assets:要转移到 BigQuery 的 Oracle 对象的路径,格式为 DATABASE_NAME/SCHEMA_NAME/TABLE_NAME

例如,以下命令会使用所有必需参数在默认项目中创建 Oracle 数据转移作业:

bq mk
    --transfer_config
    --target_dataset=mydataset
    --data_source=oracle
    --display_name='My Transfer'
    --params='{"assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
        "connector.authentication.username": "User1",
        "connector.authentication.password":"ABC12345",
        "connector.database":"DB1",
        "connector.endpoint.host":"192.168.0.1",
        "connector.endpoint.port":1520,
        "connector.connectionType":"SERVICE",
        "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST",
        "connector.tls.trustedServerCertificate": "PEM-encoded certificate",
        "connector.networkAttachment":
        "projects/dev-project1/regions/us-central1/networkattachments/na1"}'

API

使用 projects.locations.transferConfigs.create 方法并提供一个 TransferConfig 资源实例。

保存转移配置后,Oracle 连接器会根据您的安排选项自动触发转移运行。在每次转移运行时,Oracle 连接器都会将 Oracle 中的所有可用数据转移到 BigQuery。

如需在常规安排之外手动运行数据转移,您可以启动回填运行

数据类型映射

下表将 Oracle 数据类型映射到相应的 BigQuery 数据类型。

Oracle 数据类型 BigQuery 数据类型
BFILE BYTES
BINARY_DOUBLE FLOAT
BINARY_FLOAT FLOAT
BLOB BYTES
CHAR STRING
CLOB STRING
DATE DATETIME
FLOAT FLOAT
INTERVAL DAY TO SECOND STRING
INTERVAL YEAR TO MONTH STRING
LONG STRING
LONG RAW BYTES
NCHAR STRING
NCLOB STRING
NUMBER (without precision and scale) STRING
NUMBER (with precision and scale lower than the BigQuery Numeric range) NUMERIC
NUMBER (with precision and scale lower than the BigQuery BigNumeric range) BIGNUMERIC
NUMBER (with precision and scale greater than the BigQuery BigNumeric range) STRING
NVARCHAR2 STRING
RAW BYTES
ROWID STRING
TIMESTAMP DATETIME
TIMESTAMP WITH LOCAL TIME ZONE DATETIME
TIMESTAMP WITH TIME ZONE TIMESTAMP
UROWID STRING
VARCHAR STRING
VARCHAR2 STRING

排查转移作业设置问题

如果您在设置数据转移作业时遇到问题,请参阅 Oracle 转移作业问题

价格

将 Oracle 数据转移到 BigQuery 的功能处于预览版阶段时,您无需付费即可使用此功能。

后续步骤