跳到主要内容

Oracle JDBC Catalog

Apache Doris JDBC Catalog 支持通过标准 JDBC 接口连接 Oracle 数据库。本文档介绍如何配置 Oracle 数据库连接。

关于 JDBC Catalog 概述,请参阅: JDBC Catalog 概述

使用须知

要连接到 Oracle 数据库,您需要

  • Oracle 19c, 18c, 12c, 11g 或 10g。

  • Oracle 数据库的 JDBC 驱动程序,您可以从 Maven 仓库下载 Ojdbc8 及以上版本的 Oracle JDBC 驱动程序。

  • Apache Doris 每个 FE 和 BE 节点和 Oracle 服务器之间的网络连接,默认端口为 1521。

连接 Oracle

CREATE CATALOG oracle_catalog PROPERTIES (
'type' = 'jdbc',
'user' = 'username',
'password'='pwd',
'jdbc_url' = 'jdbc:oracle:thin:@example.net:1521:orcl',
'driver_url' = 'ojdbc8.jar',
'driver_class' = 'oracle.jdbc.driver.OracleDriver'
)

jdbc_url 定义要传递给 JDBC 驱动程序的连接信息和参数。使用 Oracle JDBC Thin 驱动程序时,URL 的语法可能会有所不同,具体取决于您的 Oracle 配置。例如,如果您要连接到 Oracle SID 或 Oracle 服务名称,则连接 URL 会有所不同。有关更多信息,请参阅 Oracle 数据库 JDBC 驱动程序文档。以上示例 URL 连接到名为orcl的 Oracle SID。

层级映射

映射 Oracle 时,Apache Doris 的一个 Database 对应于 Oracle 中的一个 User。而 Apache Doris 的 Database 下的 Table 则对应于 Oracle 中,该 User 下的有权限访问的 Table。即映射关系如下:

DorisOracle
CatalogDatabase
DatabaseUser
TableTable

列类型映射

Oracle TypeDoris TypeComment
number(P) / number(P, 0)tinyint/smallint/int/bigint/largeintDoris 会根据 P 的大小来选择对应的类型:P < 3:TINYINT; P < 5:SMALLINT; P < 10:INT; P < 19:BIGINT; P > 19:LARGEINT
number(P, S), 如果 (S > 0 && P > S)decimal(P, S)
number(P, S), 如果 (S > 0 && P < S)decimal(S, S)
number(P, S), 如果 (S < 0)tinyint/smallint/int/bigint/largeintS < 0 的情况下,Doris 会将 P 设置为 `P +
numberDoris 目前不支持未指定 P 和 S 的 number 类型
decimal(P, S)decimal(P, S)
float/realdouble
datedate
timestampdatetime(S)
char/ncharstring
varchar2/nvarchar2string
long/raw/long raw/internalstring
otherUNSUPPORTED

常见问题

  1. 创建或查询 Oracle Catalog 时出现 ONS configuration failed

    在 be.conf 的 JAVA_OPTS 增加 -Doracle.jdbc.fanEnabled=false 并且升级 driver 到 https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/19.23.0.0/ojdbc8-19.23.0.0.jar

  2. 创建或查询 Oracle Catalog 时出现 Non supported character set (add orai18n.jar in your classpath): ZHS16GBK 异常

    下载 orai18n.jar 并放到 每个 FE 和 BE 的目录下的 custom_lib/ 目录下(如不存在,手动创建即可)并重启每个 FE 和 BE。