You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks连接Oracle Cloud报错:Listener拒绝连接

排查Databricks连接Oracle Cloud数据库Listener拒绝连接问题

以下是针对你的问题的具体排查步骤:

一、修正钱包配置参数

你当前使用的spark.net.wallet_location参数有误,Oracle JDBC钱包的正确配置参数为oracle.net.wallet_location,且需要通过JVM参数传递给驱动。修改SparkSession配置如下:

spark = SparkSession \
    .builder \
    .appName('SparkContent') \
    .config('spark.driver.memory', '15g') \
    .config('spark.driver.extraClassPath', 'dbfs:/FileStore/jars/d10772cb_3696_4274_b38c_ee49d540d7ce-ojdbc8.jar') \
    .config('spark.executor.extraClassPath', 'dbfs:/FileStore/jars/d10772cb_3696_4274_b38c_ee49d540d7ce-ojdbc8.jar') \
    .config('spark.driver.extraJavaOptions', '-Doracle.net.wallet_location=dbfs:/FileStore/shared_uploads/triethoangminh555@gmail.com/Wallet_PRFFIGRTZ8WW08IK.zip -Doracle.net.ssl_server_dn_match=true') \
    .config('spark.executor.extraJavaOptions', '-Doracle.net.wallet_location=dbfs:/FileStore/shared_uploads/triethoangminh555@gmail.com/Wallet_PRFFIGRTZ8WW08IK.zip -Doracle.net.ssl_server_dn_match=true') \
    .getOrCreate()
  • 新增oracle.net.ssl_server_dn_match=true是Oracle Cloud TCPS连接的强制要求,否则会触发SSL验证失败,表现为Listener拒绝连接。
  • 先通过dbutils.fs.ls("dbfs:/FileStore/shared_uploads/triethoangminh555@gmail.com/")确认钱包文件路径可访问。

二、规范JDBC连接串与参数传递

确保JDBC连接时显式传递必要参数,而非仅依赖SparkSession配置:

connection_url = 'jdbc:oracle:thin:@tcps://{host_name}:1522/{service_name}' # 替换为钱包tnsnames.ora中的真实host和service_name

df = spark.read.format("jdbc") \
    .option("url", connection_url) \
    .option("user", "<your_username>") \
    .option("password", "<your_password>") \
    .option("driver", "oracle.jdbc.OracleDriver") \
    .option("oracle.net.wallet_location", "dbfs:/FileStore/shared_uploads/triethoangminh555@gmail.com/Wallet_PRFFIGRTZ8WW08IK.zip") \
    .option("oracle.net.ssl_server_dn_match", "true") \
    .load()
  • 连接串中的host_name和service_name必须完全匹配钱包内tnsnames.ora文件中的配置,禁止手动修改。

三、验证网络连通性

在Databricks集群节点上执行网络测试,确认能访问Oracle Cloud的1522端口:

nc -zv <your_oracle_host> 1522
  • 若测试失败,需联系云管理员:
    1. 检查Databricks VPC与Oracle Cloud VPC的对等连接配置
    2. 确认Oracle安全组/网络ACL允许Databricks集群IP段访问1522端口

四、排查数据库资源限制

联系拥有Oracle Cloud数据库管理权限的人员,执行以下SQL确认PROCESS资源是否耗尽:

SELECT resource_name, current_utilization, limit_value FROM v$resource_limit WHERE resource_name = 'PROCESS';
  • 若current_utilization接近limit_value,说明数据库连接数已满,需扩容PROCESS配额或释放闲置连接。

五、获取完整错误日志

添加JVM日志配置,获取Oracle JDBC的详细错误信息:

  1. 在DBFS上传logging.properties文件,内容如下:
handlers=java.util.logging.ConsoleHandler
oracle.jdbc.level=FINEST
java.util.logging.ConsoleHandler.level=FINEST
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
  1. 修改SparkSession配置:
.config('spark.driver.extraJavaOptions', '-Doracle.net.wallet_location=dbfs:/path/to/wallet.zip -Doracle.net.ssl_server_dn_match=true -Djava.util.logging.config.file=dbfs:/path/to/logging.properties')
  • 查看Databricks驱动日志,可定位具体错误原因(如钱包无效、SSL验证失败等)

内容的提问来源于stack exchange,提问作者Minh Trit D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 17:52:40