You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

在Apache Doris中创建Oracle Catalog时遭遇ONS配置失败错误求助

解决Apache Doris连接Oracle Catalog时的ONS配置失败问题

错误场景

在Apache Doris中创建Oracle JDBC Catalog后,执行查询操作时触发ONS configuration failed错误,操作步骤如下:

  1. 创建Oracle Catalog:
CREATE CATALOG oracle_catalog PROPERTIES (
    'type' = 'jdbc',
    'user' = 'my_oracle_user_name',
    'password'='my_oracle_upassword',
    'jdbc_url' = 'jdbc:oracle:thin:@example.net:1521:orcl',
    'driver_url' = 'ojdbc8.jar',
    'driver_class' = 'oracle.jdbc.driver.OracleDriver'
);
  1. 切换Catalog并执行查询:
switch oracle_catalog; 
show databases; 
select * from my_db_name.my_table_name;
  1. 触发错误:
ONS configuration failed

解决方案

1. 补充Oracle驱动依赖包

Oracle JDBC驱动的ojdbc8.jar本身不包含ONS相关依赖,需要将以下配套jar包一并放入Doris的fe/libbe/lib目录:

  • ons.jar
  • oraclepki.jar
  • osdt_core.jar
  • osdt_cert.jar

放入后重启FE和BE节点,确保依赖包被加载。

2. 修改JDBC连接URL,禁用ONS自动配置

在原JDBC URL末尾添加参数oracle.net.ns.active=false,强制禁用ONS服务,避免触发配置逻辑:

'jdbc_url' = 'jdbc:oracle:thin:@example.net:1521:orcl?oracle.net.ns.active=false'

如果使用服务名格式的URL,同样添加该参数:

'jdbc_url' = 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=example.net)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))?oracle.net.ns.active=false'

3. 更新驱动类配置

Oracle 12c及以上版本的驱动推荐使用oracle.jdbc.OracleDriver(旧的oracle.jdbc.driver.OracleDriver已被标记为过时),修改Catalog创建语句中的driver_class参数:

'driver_class' = 'oracle.jdbc.OracleDriver'

4. 重新创建Catalog并验证

整合以上修改后,重新创建Catalog:

CREATE CATALOG oracle_catalog PROPERTIES (
    'type' = 'jdbc',
    'user' = 'my_oracle_user_name',
    'password'='my_oracle_upassword',
    'jdbc_url' = 'jdbc:oracle:thin:@example.net:1521:orcl?oracle.net.ns.active=false',
    'driver_url' = 'ojdbc8.jar,ons.jar,oraclepki.jar,osdt_core.jar,osdt_cert.jar',
    'driver_class' = 'oracle.jdbc.OracleDriver'
);

切换到Catalog后执行show databases;和测试查询,验证错误是否解决。

5. 检查网络权限(可选)

如果以上步骤无效,确认Doris的FE、BE节点能访问Oracle服务器的1521端口,以及ONS默认使用的6200端口(若未禁用ONS)。

内容的提问来源于stack exchange,提问作者Young

火山引擎 最新活动