跳到主要内容 跳到补充内容

Oracle

本节介绍如何使用 Oracle 目标连接器配置与 Oracle 目标的连接。Oracle 只能在复制任务中用作目标。在连接到 Oracle 目标之前,您需要在数据库上配置 所需的权限。如果您通过 数据移动网关 连接到 Oracle,还需要安装驱动程序设置中所述的驱动程序。

有关使用 Oracle 连接器时的限制和注意事项的信息,请参阅限制和考虑事项

设置连接属性

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

数据目标

  • 数据网关选择将用于测试与 Oracle 目标的连接的 数据移动网关。这应该是用于访问数据源的同一网关。

    信息注释
    • 需要 数据移动网关 2023.5.10 或更高版本。
    • 您还需要在 数据移动网关 计算机上安装相应的驱动程序。有关详细信息,请参见下文的驱动程序设置

  • 连接字符串:要使用的 Oracle 数据库的 Oracle 连接字符串

    信息注释

帐户属性

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

内部属性

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

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

名称

连接的显示名称。

先决条件

所需的权限

必须向连接字符串中指定的用户授予在 Oracle 数据库中授予的以下权限:

  • CREATE ANY TABLE

  • CREATE ANY INDEXES

  • ALTER ANY TABLE;

  • DROP ANY TABLE
  • INSERT ANY TABLE

  • UPDATE ANY TABLE

  • DELETE ANY TABLE

  • SELECT ANY TABLE;

  • SELECT all_indexes

  • SELECT all_ind_columns

  • SELECT all_constraints

  • SELECT all_cons_columns

  • LOCK ANY TABLE

驱动程序设置

您可以使用驱动程序安装实用程序(推荐)安装 driver 或手动安装。只有在您遇到驱动程序安装实用程序发生问题的少见情况下,才应尝试手动安装。

使用驱动程序安装实用程序安装驱动程序

本部分介绍如何安装所需的 driver。这个过程包括运行一个脚本,该脚本将自动下载、安装和配置所需的 driver。您还可以根据需要运行脚本来更新和卸载 driver

  • 请确保在 数据移动 网关服务器上安装了 Python 3.6 或更高版本。

    Python 预装在大多数 Linux 发行版上。您可以通过运行以下命令来检查系统上安装了哪个 Python 版本。

    python3 --version

下载并安装 driver

  1. 数据移动 网关计算机上,将工作目录更改为:

    opt/qlik/gateway/movement/drivers/bin

  2. 然后运行以下命令:

    语法:

    ./install oracle

    如果无法下载 driver(由于访问限制或技术问题),将显示一条消息,为您指示在 数据移动 网关机器上下载 driver 的位置和复制驱动程序的位置。完成此操作后,请再次运行 install oracle 命令。

    否则,将显示 driver 的 EULA。

  3. 执行以下选项之一:

    • 重复按 [Enter] 可在 EULA 中缓慢滚动。
    • 重复按空格键可快速滚动 EULA。
    • 按 q 退出许可证文本并显示 EULA 接受选项。
  4. 执行以下操作之一:

    • 键入 "y" 并按 [Enter] 接受 EULA 并开始安装。
    • 键入 "n" 并按 [Enter] 拒绝 EULA 并退出安装。
    • 键入“v”并按 [Enter] 以再次查看 EULA。

  5. 将会安装 driver

如果要在安装提供的 driver 之前卸载以前版本的 driver,请运行 update 命令。

下载并更新 driver

  1. 数据移动 网关计算机上,将工作目录更改为:

    opt/qlik/gateway/movement/drivers/bin

  2. 然后运行以下命令:

    语法:

    ./update oracle

    如果无法下载 driver(由于访问限制或技术问题),将显示一条消息,为您指示在 数据移动 网关机器上下载 driver 的位置和复制驱动程序的位置。完成此操作后,请再次运行 update oracle 命令。

    否则,将显示 driver 的 EULA。

  3. 执行以下选项之一:

    • 重复按 [Enter] 可在 EULA 中缓慢滚动。
    • 重复按空格键可快速滚动 EULA。
    • 按 q 退出许可证文本并显示 EULA 接受选项。
  4. 执行以下操作之一:

    • 键入 "y" 并按 [Enter] 接受 EULA 并开始安装。
    • 键入 "n" 并按 [Enter] 拒绝 EULA 并退出安装。
    • 键入“v”并按 [Enter] 可从头开始查看 EULA。
  5. 将卸载旧的 driver,并安装新的 driver

如果要卸载 driver,请运行 uninstall 命令。

卸载 driver

  1. 停止所有配置为使用此连接器的任务。

  2. 数据移动 网关计算机上,将工作目录更改为:

    opt/qlik/gateway/movement/drivers/bin

  3. 然后运行以下命令:

    语法:

    ./uninstall oracle

    将卸载 driver

手动安装驱动程序

只有在自动驱动程序安装未成功完成的情况下,才应尝试手动安装 driver

安装 数据移动网关 后,下载 oracle-instantclient-basiclite-<版本>.x86_64.rpm 驱动程序。您可以在此路径下面找到受支持版本的直接下载链接:binary-artifacts in /opt/qlik/gateway/movement/drivers/manifests/oracle.yaml。下载完成后,将 RPM 复制到 数据移动网关 机器上。

然后,在 数据移动网关 服务器上,打开 shell 提示符并执行以下操作:

  1. 停止 数据移动网关 服务:

    sudo systemctl stop repagent

  2. 可选择确认服务已停止:

    sudo systemctl status repagent

  3. 状态应如下所示:

    Active: inactive (dead) since <timestamp> ago

  4. 安装驱动程序 (RPM)。
  5. 此外,如果尚未包含在系统中,请在 $Oracle_Home\lib 目录中创建符号链接。命名链接 libclntsh.so,并将其指向此文件的特定版本。

    lrwxrwxrwx 1 oracle oracle 63 Oct 2 14:16 libclntsh.so -> /u01/app/oracle/home/lib/libclntsh.so.21.1

  6. 将工作目录更改为 <数据移动网关-Install-Dir>/bin,并通过将驱动程序位置复制到e site_arep_login.sh 文件中,将 LD_LIBRARY_PATH 环境变量附加到 Oracle 即时客户端目录和 数据移动网关lib 目录:

    echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/oracle/instantclient_<version>:/opt/qlik/gateway/movement/lib/" >> site_arep_login.sh

  7. 可选择确认已将驱动程序位置复制:

    cat site_arep_login.sh
  8. 启动 数据移动网关 服务:

    sudo systemctl start repagent

  9. 可选择确认服务已启动:

    sudo systemctl status repagent

    状态应如下所示:

    Active: active (running) since <timestamp> ago

连接到 Oracle 自主数据仓库

当复制到 Oracle Autonomous Data Warehouse 时,应执行以下过程。

要设置到 Oracle Autonomous Data Warehouse (ADW) 的连接,您需要在设置 Oracle Autonomous Data Warehouse 环境时下载的 Client Credentials (Wallet) ZIP 文件。

要使得 数据移动网关 连接到 Oracle Autonomous Data Warehouse,请执行以下操作:

  1. 将 Client Credentials ZIP 文件的内容解压到您选择的文件夹中。

    这可以是任何文件夹,但就本过程而言,/home/adw_credentials 将是包含解压文件的 Linux 文件夹。

  2. 在包含解压文件的文件夹中,编辑 sqlnet.ora 文件,将 ?/network/admin 替换为包含解压文件的文件夹的路径:

    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/home/adw_credentials")))

    SSL_SERVER_DN_MATCH=yes

  3. 创建 TNS_ADMIN 环境变量,并将其设置为凭据文件的位置。

    然后运行以下命令:

    export TNS_ADMIN=/home/adw_credentials

    export PATH=$TNS_ADMIN:$PATH

  4. Oracle Target 连接器的连接字符串字段中,输入 tnsnames.ora 文件中的一个名称。

有关设置与 Oracle ADW 的连接的更多信息,请参阅:

使用客户端应用程序连接自主事务处理

限制和考虑事项

当使用 Oracle 作为复制目标时,以下限制适用:

  • 无法在 Oracle 数据库中创建新的模式。若要复制到新模式,新模式名称必须已存在于目标数据库中。然后,您应该在任务设置的 Metadata 选项卡中指定新的模式名称。
  • 批处理优化应用模式下工作时,空的 LOB 列可能会作为 NULL 值复制。

  • 满负载完成后,如果启用了将 LOB 大小限制为选项,并且表中包含 NCLOB 数据,则目标上的 NCLOB 大小将被截断为将 LOB 大小限制为字段中指定大小的一半。CDC 仍将根据限制截断它。

数据类型

本机数据类型信息将被保留,并显示在数据集视图的本机数据类型列中。如果列不可见,则需要打开数据集视图的列选择器,然后选择本机数据类型列。

数据类型
Qlik Cloud 数据类型 Oracle 数据类型

BOOLEAN

NUMBER (1)

BYTES

RAW (length)

DATE

DATETIME

TIME

TIMESTAMP (0)

DATETIME

如果比例 <= 9,则为 TIMESTAMP (scale)

否则为 VARCHAR2 (37)

INT1

NUMBER (3)

INT2

NUMBER (5)

INT4

NUMBER (10)

INT8

NUMBER (19)

NUMERIC

数字 (p,s)

REAL4

BINARY_FLOAT

REAL8

BINARY_DOUBLE

STRING

具有日期指示:DATE

具有时间指示:TIMESTAMP

具有时间戳指示:TIMESTAMP

具有 timestamp_with_timezone 指示:TIMESTAMP WITH TIMEZONE

具有 timestamp_with_local_timezone 指示:TIMESTAMP WITH LOCAL TIMEZONE

具有 interval_year_to_month 指示:INTERVAL YEAR TO MONTH

具有 interval_day_to_second 指示:INTERVAL DAY TO SECOND

如果长度 > 4000:CLOB

在所有其他情况下:VARCHAR2 (Length)

UINT1

NUMBER (3)

UINT2

NUMBER (5)

UINT4

NUMBER (10)

UINT8

NUMBER (19)

WSTRING

NVARCHAR2 (length)

请注意,当长度大于 2000 时,列数据类型将为 NCLOB。

BLOB

BLOB

信息注释
  • 要在复制任务中使用此数据类型,必须为特定任务启用 BLOB。
  • 在 CDC 期间或在启用允许无限 LOB 大小选项的“满负载”期间,仅在具有主键或唯一索引的表中支持 LOB 数据类型。

CLOB

CLOB

信息注释
  • 要在复制任务中使用此数据类型,必须为特定任务启用 CLOB。
  • 在 CDC 期间或在启用允许无限 LOB 大小选项的“满负载”期间,仅在具有主键或唯一索引的表中支持 LOB 数据类型。

NCLOB

NCLOB

信息注释
  • 要在复制任务中使用此数据类型,必须为特定任务启用 NCLOB。
  • 在 CDC 期间或在启用允许无限 LOB 大小选项的“满负载”期间,仅在具有主键或唯一索引的表中支持 LOB 数据类型。

XMLTYPE 目标数据类型仅与 Oracle 到 Oracle 复制任务相关。请参阅以下注释。

XMLTYPE

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们如何改进!