在Apache Doris中创建Oracle Catalog时遭遇ONS配置失败错误求助
解决Apache Doris连接Oracle Catalog时的ONS配置失败问题
错误场景
在Apache Doris中创建Oracle JDBC Catalog后,执行查询操作时触发ONS configuration failed错误,操作步骤如下:
- 创建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' );
- 切换Catalog并执行查询:
switch oracle_catalog; show databases; select * from my_db_name.my_table_name;
- 触发错误:
ONS configuration failed
解决方案
1. 补充Oracle驱动依赖包
Oracle JDBC驱动的ojdbc8.jar本身不包含ONS相关依赖,需要将以下配套jar包一并放入Doris的fe/lib和be/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




