7.4.4 Oracle¶
Apache Doris JDBC Catalog
支持通过标准 JDBC
接口连接 Oracle
数据库。本文档介绍如何配置 Oracle
数据库连接。
1 使用须知¶
要连接到 Oracle
数据库,您需要
-
Oracle
19c
,18c
,12c
,11g
或10g
。 -
Oracle
数据库的JDBC
驱动程序,您可以从Maven
仓库下载Ojdbc8
及以上版本的Oracle JDBC
驱动程序。 -
Apache Doris
每个FE
和BE
节点和Oracle
服务器之间的网络连接,默认端口为1521
。
2 连接 Oracle¶
SQL | |
---|---|
1 2 3 4 5 6 7 8 |
|
Tip
jdbc_url
定义要传递给 JDBC
驱动程序的连接信息和参数。使用 Oracle JDBC Thin
驱动程序时, URL
的语法可能会有所不同,具体取决于您的 Oracle
配置。例如,如果您要连接到 Oracle SID
或 Oracle
服务名称,则连接 URL
会有所不同。有关更多信息,请参阅 Oracle
数据库 JDBC
驱动程序文档。以上示例 URL
连接到名为 orcl
的 Oracle SID
。
3 层级映射¶
映射 Oracle
时, Apache Doris
的一个 Database
对应于 Oracle
中的一个 User
。而 Apache Doris
的 Database
下的 Table
则对应于 Oracle
中,该 User
下的有权限访问的 Table
。即映射关系如下:
Apache Doris | Oracle |
---|---|
Catalog | Database |
Database | User |
Table | Table |
4 类型映射¶
4.1 Oracle 到 Apache Doris 类型映射¶
Oracle Type | Apache Doris Type | Comment |
---|---|---|
number(p) / number(p,0) | TINYINT/SMALLINT/INT/BIGINT/LARGEINT | Doris会根据p的大小来选择对应的类型:p < 3 -> TINYINT; p < 5 -> SMALLINT; p < 10 -> INT; p < 19 -> BIGINT; p > 19 -> LARGEINT |
number(p,s), [ if(s>0 && p>s) ] | DECIMAL(p,s) | |
number(p,s), [ if(s>0 && p < s) ] | DECIMAL(s,s) | |
number(p,s), [ if(s<0) ] | TINYINT/SMALLINT/INT/BIGINT/LARGEINT | s<0的情况下, Doris会将p设置为 p+|s|, 并进行和number(p) / number(p,0)一样的映射 |
number | Doris目前不支持未指定p和s的oracle类型 | |
decimal | DECIMAL | |
float/real | DOUBLE | |
DATE | DATETIME | |
TIMESTAMP | DATETIME | |
CHAR/NCHAR | STRING | |
VARCHAR2/NVARCHAR2 | STRING | |
LONG/ RAW/ LONG RAW/ INTERVAL | STRING | |
Other | UNSUPPORTED |
5 查询优化¶
5.1 谓词下推¶
-
当执行类似于
where dt = '2022-01-01'
这样的查询时,Apache Doris
能够将这些过滤条件下推到外部数据源,从而直接在数据源层面排除不符合条件的数据,减少了不必要的数据获取和传输。这大大提高了查询性能,同时也降低了对外部数据源的负载。 -
当变量
enable_ext_func_pred_pushdown
设置为true
,会将where
之后的函数条件也下推到外部数据源。目前支持下推到
Oracle
的函数有:Function NVL
5.2 行数限制¶
如果在查询中带有 limit
关键字, Apache Doris
会将 limit
转义为 Oracle
的 rownum
语法,以减少数据传输量。
5.3 转义字符¶
Apache Doris
会在下发到 Oracle
的查询语句中,自动在字段名与表名上加上转义符: ("")
,以避免字段名与表名与 Oracle
内部关键字冲突。
6 常见问题¶
-
创建或查询
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 -
创建或查询
Oracle Catalog
时出现Non supported character set (add orai18n.jar in your classpath): ZHS16GBK
异常下载
orai18n.jar
并放到每个FE
和BE
的目录下的custom_lib/
目录下(如不存在,手动创建即可)并重启每个FE
和BE
。