ORA-12518: TNS:listener could not hand off client connection 解决办法

说明一下问题: 就是给本地安装了一个oracle,但是就是用plsql 或者 Navicat咋都连接不上。报错: ORA-12518: TNS:listener could not hand off client connection。

看了很多博客里面说的,基本上是:  alter system set processes=400 scope=spfile;  这种 方法。

后来看了一下tnsnames.ora文件(文件在你的安装路径下,我的在E:\oracle\app\oracle\product\11.2.0\server\network\ADMIN的下面),才明白:

我的tnsnames.ora文件是这样的:

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = XB-201810060733)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

ORACLR_CONNECTION_DATA = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
    (CONNECT_DATA = 
      (SID = CLRExtProc) 
      (PRESENTATION = RO) 
    ) 
  )

注意: XE 、 EXTPROC_CONNECTION_DATA  、 ORACLR_CONNECTION_DATA  是数据库的名称,就是用Navicat或者plsql连接的时候要填写的数据库名,一般Navicat和plsql默认的是ORCL,但是我的文件里面是XE,就直接写成XE就可以了。。。。  

 

### 权限被拒绝导致连接无法建立的解决方案 当遇到 `Permission denied` 和 `could not establish connection` 的错误时,通常涉及操作系统级别的权限设置、网络配置以及应用程序依赖库的问题。以下是针对不同场景的具体分析和解决方法。 #### 1. **串口或TTY设备PPP协议问题** 如果问题是由于串口连接失败引起的(如引用中的 `Couldn't set tty to PPP discipline: Invalid argument`),可能的原因包括: - 设备文件 `/dev/tty*` 或 `/dev/ppp` 缺少必要的读写权限。 - 用户未加入到拥有访问这些设备权限的组中。 解决方法如下: - 验证当前用户的权限是否允许操作目标设备文件[^1]。 ```bash ls -l /dev/tty* ``` - 如果发现权限不足,则可以通过修改文件权限来解决问题: ```bash sudo chmod 666 /dev/ttyUSB0 ``` 或者将用户添加到相应的组中: ```bash sudo usermod -aG dialout $USER ``` #### 2. **Oracle数据库监听器权限问题** 对于 Oracle 数据库监听器返回的 `TNS-12518: TNS:listener could not hand off client connection` 错误,通常是由于以下原因之一引起: - 客户端尝试连接的服务名不存在于监听器配置文件 `tnsnames.ora` 中。 - 监听器进程本身缺乏足够的权限启动新的会话。 - 文件系统的某些目录缺少执行权限。 具体措施包括: - 检查并确认服务名称和服务地址的一致性[^2]。 ```bash cat $ORACLE_HOME/network/admin/listener.ora ``` - 确认运行监听器的账户是否有权访问数据文件所在的路径及其子目录。 ```bash ls -ld $(find /u01/app/oracle/product/19c/dbhome_1/dbs/) ``` - 调整相关目录权限以满足需求: ```bash chmod u+x /path/to/database/files/ chown oracle:oinstall /path/to/database/files/ ``` #### 3. **Java应用缺失类定义引发的连接异常** 在 Java 应用程序中抛出 `java.lang.NoClassDefFoundError` 表明某个必需的外部库未能加载成功。这可能是由于 JAR 文件丢失或是版本不兼容造成的。 处理方式为: - 将所需的 HTTPClient 类库上传至 HDFS 并确保 Spark 可以找到它们[^3]。 ```bash hadoop fs -mkdir -p /user/spark/extlib/ hadoop fs -put httpclient-4.3.jar /user/spark/extlib/ hadoop fs -put httpcore-4.3.jar /user/spark/extlib/ ``` - 修改提交作业命令以便包含额外的库路径参数: ```bash spark-submit --jars hdfs:///user/spark/extlib/httpclient-4.3.jar,hdfs:///user/spark/extlib/httpcore-4.3.jar ... ``` 通过上述调整可以有效缓解因权限受限而导致的各种连接障碍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lm_y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值