plsql连接oracle12c监听服务报错ORA-12514监听程序当前无法识别(亲测已解决)

本文详细解析了Oracle12c环境下,sqlplus能够正常连接数据库,但PL/SQL却无法连接的问题。主要涉及两个关键场景:一是由于主机名更改为localhost导致的监听服务自动关闭;二是由于listener.ora配置不全引起的PL/SQL连接失败。通过修改tnsnames.ora和listener.ora文件中的HOST参数,并补充SID_LIST_LISTENER部分的配置,最终实现了PL/SQL的成功连接。

sqlplus控制台能正常连接oracle12,但是使用plsql无法连接。

问题一、oracle12c监听服务启动后自动关闭。

**原因:**oracle12c安装成功后,修改计算机名为localhost,导致监听服务无法启动。
解决方法:
在D:\software\oracle_client\instantclient_12_2\NETWORK\ADMIN目录下,修改tnsnames.ora文件,将host改为修改后的主机名。如下图:
在这里插入图片描述
具体配置如下:

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-ZXD1I9U)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )

注意:个人总结:计算机名即使要修改,也不能改成localhost,亲测改成localhost之后,不管你怎么修改tnsnames.ora文件中的host为localhost,监听服务仍启动后自动关闭。

问题二、plsql连接oracle报12514监听程序当前无法识别连接描述符中请求的服务

原因:listener.ora少配置东西了。
解决方法:

原来listener.ora中只有:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = DESKTOP-ZXD1I9U))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
  )

原因是:少配置了,修改listener.ora文件如下:

# listener.ora Network Configuration File: D:\software\oracle_client\instantclient_12_2\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-ZXD1I9U)(PORT = 1521))
  )

ADR_BASE_LISTENER = D:\software\oracle12c_data\lenovo\virtual\product\12.2.0\dbhome_1\log
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = D:\software\oracle12c_data\lenovo\virtual\product\12.2.0\dbhome_1)
      (SID_NAME = ORCL)
    )
    (SID_DESC =
       (GLOBAL_DBNAME = orcl)
       (ORACLE_HOME = D:\software\oracle12c_data\lenovo\virtual\product\12.2.0\dbhome_1)
       (SID_NAME = orcl)
    )
  )

保存后,重新启动serviceOracle服务和监听服务,plsql连接成功!!

(SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\app\lovelyCute\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\app\lovelyCute\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )这种情况改了不好使oracle11g

<think>嗯,用户遇到了PL/SQL连接Oracle时出现ORA-12547错误的问题,并且希望得到在特定电脑环境下解决这个错误的方案。首先,我需要回忆一下ORA-12547错误的常见原因。根据之前的学习,这个错误通常与Oracle客户端或网络配置有关,特别是在客户端无法正确加载必要的库文件时。例如,环境变量设置不正确,或者ORACLE_HOME路径有误,都可能导致这个问题。 接下来,我需要考虑用户提到的“特定电脑环境差异”。可能用户的电脑环境与其他正常工作的电脑不同,比如操作系统版本、Oracle客户端的安装路径,或者缺少某些依赖库。例如,在Linux系统中,如果libclntsh.so库文件缺失或权限不正确,就可能引发ORA-12547错误。而在Windows系统中,可能是PATH环境变量没有包含ORACLE_HOME的bin目录,导致系统找不到必要的DLL文件。 然后,我需要整理解决步骤。首先应该检查ORACLE_HOME的设置是否正确,确保路径没有错误,并且用户有权限访问该目录。接着查看PATH环境变量是否包含ORACLE_HOME的bin目录,这在Windows和Linux中都很重要。对于Linux用户,还需要检查库文件的权限,可能需要使用chmod命令修改权限,或者设置LD_LIBRARY_PATH环境变量。 另外,用户可能没有正确安装Oracle Instant Client,或者安装的版本与数据库不兼容。这时候建议用户重新下载并安装对应版本的Instant Client,并确保所有依赖项都已安装,比如在Linux上需要安装libaio包。 还有可能是PL/SQL Developer的配置问题,特别是在指定OCI库时路径错误。需要指导用户检查PL/SQL的Preferences中的OCI配置,确保指向正确的oci.dll文件。 此外,可能需要检查网络配置,比如tnsnames.ora文件中的连接描述是否正确,以及监听器是否正常运行。使用tnsping工具连接可以帮助诊断网络问题。 最后,如果上述步骤都无法解决,可能需要重新安装Oracle客户端或者PL/SQL Developer,确保所有组件都正确安装和配置。同时,查看Oracle的日志文件,如listener.log和sqlnet.log,可能会提供更详细的错误信息。 需要注意的是,用户提到的问题仅出现在特定电脑上,说明其他电脑连接正常,所以重点应放在该电脑的环境配置上,与其他电脑进行对比,找出差异点,比如不同的操作系统补丁、安全软件阻止了连接,或者防火墙设置等。 总结起来,解决ORA-12547错误需要系统性地检查环境变量、文件权限、客户端安装完整性、网络配置以及PL/SQL Developer的设置,逐步排除可能的原因,直到找到具体的环境差异点并进行修正。</think>### PLSQL连接Oracle ORA-12547错误解决方案 #### 1. 错误背景分析 ORA-12547错误通常表示客户端无法加载Oracle核心库文件(如$ORACLE_HOME/bin/oracle.exe或libclntsh.so),常见于以下场景: - 环境变量配置异常(如$ORACLE_HOME未正确设置)[^2] - 文件权限问题(Oracle二进制文件或库文件权限不足) - 操作系统与Oracle客户端版本不兼容 - PLSQL Developer配置错误 #### 2. 分步排查与解决 **步骤1:验证基础环境** - **检查ORACLE_HOME** 确保环境变量`ORACLE_HOME`指向正确的客户端安装路径(如`C:\app\oracle\product\12.2.0\client_1`) ```bash echo %ORACLE_HOME% # Windows命令提示符 echo $ORACLE_HOME # Linux/Unix终端 ``` - **检查PATH变量** 确认`PATH`包含`%ORACLE_HOME%\bin`(Windows)或`$ORACLE_HOME/bin`(Linux) **步骤2:文件权限修复** *适用于Linux环境:* - 检查Oracle库文件权限: ```bash ls -l $ORACLE_HOME/lib/libclntsh.so chmod 755 $ORACLE_HOME/lib/*.so # 若权限不足则修复 ``` **步骤3:PLSQL Developer配置验证** - 打开PLSQL Developer → Tools → Preferences → Connection - 确认`OCI Library`路径指向有效文件(如`%ORACLE_HOME%\bin\oci.dll`) - 确认`Oracle Home`与客户端安装路径一致 **步骤4:兼容性排查** - **检查客户端与数据库版本兼容性** 例如:Oracle 19c客户端连接12c数据库需确认支持矩阵 - **禁用安全软件** 临时关闭防火墙或杀毒软件,试是否拦截连接(如Windows Defender) **步骤5:日志分析** - 查看Oracle客户端日志: - Windows: `%ORACLE_HOME%\network\log\sqlnet.log` - Linux: `$ORACLE_HOME/network/log/sqlnet.log` - 检查错误详情,如`TNS-12547: TNS:lost contact` #### 3. 特定电脑环境差异处理 若其他电脑正常,仅特定机器报错,需对比以下差异: - **操作系统补丁** 例如:Windows更新后导致权限策略变化 - **注册表冲突** 使用工具(如`regedit`)检查`HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE`键值 - **多版本客户端冲突** 卸载冗余Oracle客户端,清理残留环境变量 #### 4. 扩展建议 - 使用Oracle Instant Client替代完整客户端(体积更小,依赖更少)[^4] - 通过`tnsping`试基础连通性: ```bash tnsping <TNS服务名> # 返回时间应小于100ms ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值