在使用oracle时,经常会遇到ora-12154问题,但一直没总结,解决办法过段时间就忘,再遇到问题只能再去找解决办法。今天,把目前了解到的内容汇总记录,方便以后查找。

一、监听器介绍

1、概念   

监听器直接面向用户,也就是客户端程序。监听器启动时,负责打开监听端口,等待客户端连接。当有客户端连接时,在专用服务器连接模式下,创建专用服务器进程,用来处理和响应用户请求;而在共享服务器连接模式下,将监听到的用户请求转发调度器,再由调试器调度共享服务器进程处理。以前一直以为oracle服务器中一个实例对应一个监听器,最近才刚知道oracle服务器可以创建多个数据库实例,这多个实例可以使用同一个监听器。这样一来,数据库实例进程只负责维护管理数据库,并不参与和客户端的通信。

 2、listener.ora文件

监听器在服务器中对应的配置文件叫listener.ora,在...\dbhome\network\admin\目录下,格式如下。SID_LIST_LISTENER表示名为LISTENER的监听器内注册的实例列表,里面包含所注册的实例信息,全局名称和sid名称;LISTENER表示监听器,里面包含该监听器所支持的协议及地址。监听器创建可以直接修改listener.ora文件,也可以通过oracle自带的配置工具创建。给监听器注册实例可以通过修改该文件静态注册,也可以动态注册(可查看相关资料)。

SID_LIST_LISTENER =  #监听器LISTENER服务的实例列表(SID_LIST =  (SID_DESC =      #实例1(SID_NAME = CLRExtProc)  (ORACLE_HOME = C:\app\root\product\11.2.0\dbhome_1)  (PROGRAM = extproc)  (ENVS = "EXTPROC_DLLS=ONLY:C:\app\root\product\11.2.0\dbhome_1\bin\oraclr11.dll"))  (SID_DESC =      #实例2(GLOBAL_DBNAME = orcl)  (ORACLE_HOME = C:\app\root\product\11.2.0\dbhome_1)  (SID_NAME = orcl)  )  )
LISTENER =           #监听器LISTENER(DESCRIPTION_LIST =  (DESCRIPTION =  (ADDRESS_LIST =  # 监听器协议及地址(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))  )  )  )SID_LIST_LISTENER2 =  #监听器LISTENER2服务的实例列表(SID_LIST =  (SID_DESC =      #实例1(SID_NAME = CLRExtProc)  (ORACLE_HOME = C:\app\root\product\11.2.0\dbhome_1)  (PROGRAM = extproc)  (ENVS = "EXTPROC_DLLS=ONLY:C:\app\root\product\11.2.0\dbhome_1\bin\oraclr11.dll"))  (SID_DESC =      #实例2(GLOBAL_DBNAME = orcl2)  (ORACLE_HOME = C:\app\root\product\11.2.0\dbhome_1)  (SID_NAME = orcl2)  )  )
LISTENER2 =           #监听器LISTENER2(DESCRIPTION_LIST =  (DESCRIPTION =  (ADDRESS_LIST =  # 监听器协议及地址(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1522))  )  )  )

3、监听器常用命令

在命令行中输入lsnrctl命令,进入lsnrctl命令行,输入help可以查看支持的命令。常用的包括status,start <xxx>和stop <xxx>等。其中,status可以查看当前服务器中监听器的状态,start可以启动特定监听器,stop可以关闭特定监听器,不加参数指启动或关闭所有监听器。

二、问题原因

1、监听服务未启动,通过lsnrctl status命令查看监听服务有没启动
2、连接的数据库实例没有在监听器中注册
检查listener.ora文件,看SID_LIST_LISTENER内有无所连接的实例。如果没有,补上。
3、监听器的IP配置为localhost
在oracle服务器端,检查tnsnames.ora和listener.ora文件(一般情况下oracle服务器不需要tnsnames.ora文件,在多服务器做数据共享时才需要。网上查的,未确认过),将监听器和实例中的localhost改为IP地址。
在使用netmanager工具来配置时,比较容易出现这些问题。
4、tnsnames.ora和listener.ora中实例名不一致
这种情况可能出现在为了解决12541问题,而多次删除或创建监听器导致。在修改监听器时,最好先用lsnrctl stop命令关闭所有监听服务
5、客户端配置问题,检查客户端的tnsnames.ora文件
这类问题是在搜索解决方法时发现的,本人并没有遇到过。症状多发生在使用plsql或其他客户端工具时,没有配置oracle主目录导致未找到tnsnames.ora文件或该文件本身有问题(文件中的实例名前不能有空格)。
附tnsnames.ora文件格式
orcl =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100 )(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))

三、解决思路

1、先确认客户端连接配置没有问题,特别是服务名。如果使用plsql之类工具,检查oracle主目录和oci路径配置是否正确;
2、检查服务器端,首先通过lsnrctl status命令查看监听服务有没启动,状态有无问题;
3、如服务已启动且状态正确,检查服务器端配置文件,包括listener.ora和tnsnames.ora;
4、修改配置文件时,要先关闭监听服务,修改完成后再打开。

oracle ora-12154问题总结相关推荐

  1. 00058 imp_IMP-00058: ORACLE error 12154 encountered

    imp icms/password@portaldb file=/home/oracle/icms.dmp fromuser=icms touser=icms ignore=y; 出现 IMP-000 ...

  2. Oracle错误12154的解决方法

    在用oracle11g导出表时,出现错误,如下所示: G:\Myoracle\oracle\product\11.2.0\dbhome_1\BIN>expuserid=scott/m123456 ...

  3. 【数据库】报错ora 12154 解决方法

    Oracle报错 ora 12154 解决办法: 1.确认服务器监听正确打开: 2.确认别名前无空格.

  4. oracle12c 12154,oracle12c,18c的pdb数据库导入报错:UDI-12154: operation generated ORACLE error 12154...

    UDI-12154: operation generated ORACLE error 12154 ORA-12154: TNS:could not resolve the connect ident ...

  5. exp-00056:遇到oracle错误 12154,EXP-00056: 遇到 ORACLE 错误 12154

    我在执行导出的时候遇到的错误:EXP-00056: 遇到 ORACLE 错误 12154 ORA-12154: TNS: 无法解析指定的连接标识符 EXP-00000: 导出终止失败 导出语句为: e ...

  6. exp-00056:遇到oracle错误 12154,EXP-00056 遇到 ORACLE 错误 12154 ORA-12154 TNS 无法解析指定...

    EXP-00056 遇到 ORACLE 错误 12154 ORA-12154 TNS 无法解析指定 EXP-00056: 遇到 ORACLE 错误 12154 ORA-12154: TNS: 无法解析 ...

  7. Oracle Ora 错误解决方案合集

    Oracle Ora 错误解决方案合集 参考文章: (1)Oracle Ora 错误解决方案合集 (2)https://www.cnblogs.com/ios9/p/8627643.html 备忘一下 ...

  8. oracle12154错误 Linux,关于“EXP-00056: ORACLE error 12154 encountered”的解决方法

    有用户问到这样一个问题,在进行导出操作时如何转义口令中的@符号? 由于缺省的Oracle会将@符号后面的字串当作服务名来解析,所以不加处理是不行的. 有的企业因为安全规则的需要,口令中都会加入@符号. ...

  9. 关于“EXP-00056: ORACLE error 12154 encountered”的解决方法

    有用户问到这样一个问题,在进行导出操作时如何转义口令中的@符号? 由于缺省的Oracle会将@符号后面的字串当作服务名来解析,所以不加处理是不行的. 有的企业因为安全规则的需要,口令中都会加入@符号. ...

  10. PLSQL连接Oracle数据库时报ORA 12154错误的解决方法

    pl/sql连接Oracle时遇到的问题: 解决办法:安装后将Oracle安装目录下的文件夹network(包括其中的子文件,其中主要是tnsnames.ora) 在pl/sql菜单–"工具 ...

最新文章

  1. Apache POI和EasyExcel 第五集:Apache POI的Excel读取不同类型的数据
  2. UI控件库分享:DWZ(j-UI)、LigerUI、Linb
  3. Vue2接口地址配置(webpack)
  4. Linux 编译 mysql
  5. 0010服务器无对应信息,服务器版本对应的内存
  6. 只用2000行代码实现google protocol buffer c++版的功能
  7. 电商小程序 -- 商品多规格选择弹框
  8. RS请求错误之RSV-BBP-0028
  9. redis copy-on-write机制
  10. Spring Boot + OAuth2 统一认证SSO单点登录
  11. 高速PCB设计中走线屏蔽的各项规则解析
  12. 医院管理系统/案列/APP/小程序/网站
  13. python google地图_Google地图下载
  14. SQL存储过程对象名无效
  15. 【天池竞赛系列】菜鸟-需求预测与分仓规划初赛冠军解决方案
  16. 动画:从 AE 到 Web
  17. 将淘宝爬取的数据写入Excel表格
  18. 17、文件IO详解及实例
  19. 云计算基础设施平台iaas(openstack)超级详细搭建(十三) 安装Trove服务
  20. ubuntu(Linux) 挂接小鹤音形 (基于IBus框架)

热门文章

  1. 关于CS1061报错(XX不包含XXX的定义,并且找不到类型为XX的第一个参.....)的一种可能的解决的办法
  2. WebService重学(自用)
  3. Cannot find class: com.github.pagehelper.PageIntercepto
  4. 图片处理GUI界面(手把手带你创建)
  5. AcWing 3468. 森森旅游
  6. 从苏宁电器到卡巴斯基(第二部)第01篇:我在卡巴的日子 I
  7. idea启动项目很慢
  8. 【Java】模拟地下城与勇士(DNF)的装备强化过程
  9. fastlane的使用
  10. 匿名信V1.4.5.1版本更新“数据大屏”功能