# oracle

本节介绍如何在数据任务中设置 Oracle 源。在开始数据任务之前，请确保已完成 [先决条件](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Oracle/oracle-prerequisites-server.htm)，设置 [所需权限](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Global_Common/Content/SharedReplicateHDD/Oracle/OracleDBSource_Security.htm)，并熟悉 [限制和考虑事项](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Global_Common/Content/SharedReplicateHDD/Oracle/OracleDB_source_limitations.htm)。

信息注释Qlik Talend Cloud Starter 订阅不支持此连接器。

从以下任何数据库登陆数据时，需要配置与 Oracle 的连接：

* Oracle 内部

* Amazon RDS for Oracle

* Oracle Cloud

## 设置连接属性

本节介绍可用的连接属性。除非另有说明，否则所有属性都是必需的。

要打开连接器，请执行以下操作：

1. 在连接中单击创建连接。

2. 选择 Oracle 源连接器，然后提供以下设置：

### 数据源

* 数据网关

  选择用于移动您的数据 数据移动网关。

  有关 数据移动网关 的信息，请参阅[Qlik 数据网关 - 数据移动](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm)。

* 云提供商：如果您的 Oracle 数据库位于云中，请选择提供商：

  * 无（默认）

  * Amazon RDS

  * Oracle Cloud

* 连接字符串：源数据库的 Oracle 连接字符串。您可以用任何 Oracle 格式键入连接字符串，例如：

  `//host:port/service name`

  其中：

  * `host`: 这是您正在使用的具有 Oracle 数据库的计算机的名称或 IP 地址。例如： `johnboy_W7` 或 `255.255.255.0`.
  * `port`：（可选）这是您正在使用的具有 Oracle 数据库的计算机的 TNS Listener 端口号。如果未输入端口号，则使用默认的 Oracle TNS Listener 端口。
  * `service name`：（可选）这是使用 Oracle 数据库的计算机的服务名称。如果未输入服务名称，则使用默认服务名称。

  您还可以输入 Oracle Net 关键字值对。例如：

  `"(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=dlsun242) (PORT=5521))` `(CONNECT_DATA=(SERVICE_NAME=bjava21)))"`

  信息注释

  使用多租户[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Oracle/Oracle-source.htm)环境时，连接字符串应指定特定的 PDB。

### 帐户属性

用户名称和密码：经授权可访问 Oracle 数据库的用户的用户名和密码。

### 数据库属性

* 保留数字为：选择以下项之一：

  * 精度-比例组合

  * FLOAT

  * VARCHAR

  信息注释

  * 如果精度为 39 或更高，请选择 VARCHAR
  * 默认情况下，NUMBER 数据类型转换为精度 38，比例 10
  * Oracle 数据库中的“Expose NUMBER”定义仅用于 NUMBER 数据类型（没有明确的精度和小数位数定义）

* 支持嵌套表：如果需要 land Oracle 表，其包含属于嵌套表或定义类型的列，请选择此选项。有关此功能及其先决条件的详细信息，请参阅[移动 嵌套表](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Global_Common/Content/SharedReplicateHDD/Oracle/nested_tables.htm)。

* 支持不可见列：选择此选项以land不可见的列。

### CDC 属性

* 重试间隔：使用计数器或键入系统在重新发送查询之前等待的秒数。

* 存档重做日志目标 ID：存档重做日志的目标。该值应与 `V$archived_log` 表中的 `DEST_ID` 数字相同。

  使用多个日志目标 (`DEST_ID`) 时，应指定一个存档的重做日志位置标识符，该标识符表示 Qlik Replication 服务器可以访问的存档日志。如果未指定存档的重做日志位置标识符，则 Qlik Replication 服务器将使用在备用存档重做日志目标 ID 字段中指定的 ID。如果未指定备用 ID，则 Qlik Replication 服务器将使用最小的现有 `DEST_ID`。

* 备用存档重做日志目标 ID：从主目标读取失败时的存档目标。

* 仅使用已存档的重做日志：选择此选项后，Qlik Replication 服务器将仅访问已存档的返工日志。如果存档的重做日志仅存储在 ASM 上，需要向连接器设置中指定的用户授予 [所需的 ASM 权限](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Global_Common/Content/SharedReplicateHDD/Oracle/OracleDBSource_Security.htm#ar_oracleds_385117211_beijchii) 中所述的 ASM 权限。

* 通过以下方式访问重做日志：选择是使用日志读取器（默认）还是 LogMiner 访问重做日志。当云提供商是 Oracle Cloud 时，将始终使用日志读取器访问重做日志。未选中时，将使用 LogMiner 访问重做日志。有关何时应使用 LogMiner 而不是日志读取器的指南，请参阅[重做日志文件 - 访问方法指南](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Global_Common/Content/SharedReplicateHDD/Oracle/Redo_Log_Files_Access_Method_Guidelines.htm)。

### ASM 属性

* 如果使用的 Oracle 重做日志是使用自动存储管理 (ASM) 存储的，请在指定字段中输入所需的访问信息。

  信息注释

  * 仅当选择了通过日志读取器访问重做日志时，这些选项才可用。

  * 要访问 ASM 中的重做日志，还需要授予 [所需的 ASM 权限](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Global_Common/Content/SharedReplicateHDD/Oracle/OracleDBSource_Security.htm#ar_oracleds_385117211_beijchii) 中所述的其他权限

* * ASM 连接字符串：Oracle 数据库正在使用 ASM 时，指向 ASM 实例的连接字符串。

  * ASM 用户名：ASM 用户的用户名。

  * ASM 密码：ASM 用户的密码。

  * 并发 ASM 读取线程数：从 ASM 读取重做日志时要使用的线程数。当存在大量更改时，增加此数字可能会提高性能。

### CDC 的密钥存储加密条目

Secret Store 加密条目：当某些源表列被加密时，您需要指定 Oracle Wallet 加密名称和值。 有关更多信息，请参见下面的查找钱包条目。

### 内部属性

内部属性用于特殊用例，因此不会在对话框中公开。只有在 Qlik 支持部门的指示下，您才应该使用它们。

使用字段右侧的 the 新建 icon 和 the 取消 icon 按钮可以根据需要添加或删除特性。

### 名称

安全连接的显示名称。

## 查找钱包条目

### 查找用于 TDE 列加密的钱包条目

为了指定用于 TDE 表空间加密或 TDE 列加密的正确加密密钥，您首先需要在包含加密密钥的 Oracle Wallet 中找到相关条目（或多个密钥情况下的条目）。找到相关条目后，将条目及其值（或条目和值，如果不止一个）分别复制到名称和值字段中。

信息注释

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Oracle/Oracle-source.htm)要输入多个值，首先将每个条目复制到文本编辑器（如记事本）中，确保用逗号分隔这些值。然后，从文本编辑器复制包含值和逗号的字符串，并将其粘贴到 **值** 字段。没有必要为条目执行此操作。您可以将条目直接粘贴到条目字段中，记住用逗号分隔每个条目。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Oracle/Oracle-source.htm)要查找 Oracle Wallet 条目：

1. 如果在 sqlnet.ora 文件中定义了 ENCRYPTION\_WALLET\_LOCATION 参数，使用此参数定义的目录中的钱包。

2. 如果在 sqlnet.ora 文件中定义了 WALLET\_LOCATION 参数，使用此参数定义的目录中的钱包。

3. 在其他情况下，请在默认数据库位置使用钱包。

   信息注释

   钱包的名称应为 ewallet.p12

4. 使用 Oracle mkstore 实用程序中的“类别”选项确定 ORACLE.SECURITY.DB/TS.ENCRYPTION.&lt;SUFFIX&gt; 条目名称，如下所示：

   `mkstore –wrl <full wallet name> -list`

5. [](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Oracle/Oracle-source.htm)如果您知道哪些条目用于加密重做日志，请选择条目名称并使用 Oracle mkstore 实用程序中的“viewEntry”选项确定条目值，如下所示：

   ` mkstore –wrl <full wallet name> -viewEntry <entry name>
                            `

   信息注释

   如果您不知道哪个条目用于加密重做日志，可以选择多个 DB 或 TS 条目并如上所述确定其值（然后将条目名称和值复制并粘贴到名称和值字段中）。如果指定的条目不正确，任务将失败，错误消息将包含正确的条目名称。

   信息注释

   如果 DBA 在任务运行时更改了条目，则任务将失败，错误消息将包含新的条目名称。将新条目（名称和值）添加到已指定的条目中，然后继续执行任务。

### 在特定表中查找用于 TDE 列加密的钱包条目

本部分介绍如何在特定表中找到用于TDE列加密的正确加密密钥。

要查找 Oracle Wallet 条目：

1. 在 Oracle 数据库上，根据给定的所有者和表名运行以下查询以返回 `object_id`（例如表格 ID）：

   `Select object_id from all_objects where owner='<table owner>' and object_name='<table name>' and object_type='TABLE';`

2. 使用以下查询中检索到的 `object_id` 返回相关主密钥：

   `select mkeyid from sys.enc$ where obj#=OBJECT_ID;`

3. 从 Oracle Wallet 中选择键值，如下所示：

   `mkstore –wrl <full_wallet_name> -viewEntry <entry_name>`

4. 将主密钥条目及其值分别复制到名称和值字段中。