
检查oracle\product\10.1.0\db_1\NETWORK\log\listener.log:TNSLSNR for 32-bit Windows: Version 10.1.0.2.0 - Production on 04-1月 -2010 13:38:34 Copyright (c) 1991, 2004, Oracle. All rights reserved. 系统参数文件为D:\oracle\product\10.1.0\db_1\network\admin\listener.ora写入D:\oracle\product\10.1.0\db_1\network\log\listener.log的日志信息写入D:\oracle\product\10.1.0\db_1\network\trace\listener.trc的跟踪信息跟踪级别当前为0 以 pid=7180 开始监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROCipc)))监听该对象时出错: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=pc-xxx.mail.yyy.cn)(PORT=1521)))TNS-12542: TNS: 地址已被占用 TNS-12560: TNS: 协议适配器错误 TNS-00512: 地址已在使用 32-bit Windows Error: 48: Unknown error不再监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROCipc)))2. Oracle的listener已经启动。3. 查看oracle\product\10.1.0\db_1\NETWORK\ADMIN\listener.ora# listener.ora Network Configuration File: D:\oracle\product\10.1.0\db_1\network\admin\listener.ora# Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST =(SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = D:\oracle\product\10.1.0\db_1) (PROGRAM = extproc)) ) LISTENER = (DESCRIPTION_LIST =(DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = pc-xxx.mail.yyy.cn)(PORT = 1521)) )) ) 把(ADDRESS = (PROTOCOL = TCP)(HOST = pc-xxx.mail.yyy.cn)(PORT = 1521))改为(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))pc-xxx.mail.yyy.cn是计算机名127.0.0.1也就是目前数据库正在用的ip地址。4. 查看oracle\product\10.1.0\db_1\NETWORK\ADMIN\tnsnames.ora找到下列语句:ORCL = (DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = pc-xxx.mail.yyy.cn)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)) )将(ADDRESS = (PROTOCOL = TCP)(HOST = pc-xxx.mail.yyy.cn)(PORT = 1521))改为(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))5. 关闭后再启动listener运行->cmd启动dos窗口,执行lsnrctl stop关闭,lsnrctl start启动。TNS: 协议适配器错误的问题的原因有三个:
1.监听服务没有起起来。windows平台个一如下 *** 作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务。
2.database instance没有起起来。windows平台如下 *** 作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的database SID.
3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SID设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下输set oracle_sid=XXXX,XXXX就是你的database SID.
经过以上步骤,就可以解决问题
1、ORA-12541:TNS:没有监听器
原因:没有启动监听器或者监听器损坏。如果是前者,使用命令net start OracleOraHome81TNSListener(名字可能有出入)即可;如果是后者,则使用“Net8 Configuration
Assistant”工具向导之“监听程序配置”增加一个监听器即可(基本不用写任何信息,一路OK。在添加之前可能需要把所有的监听器先删除!)
2、ORA-12500:TNS:监听程序无法启动专用服务器进程或ORA-12560:TNS:协议适配器错误
原因:ORACLE的数据库服务没有启动。使用命令net start ORACLESERVICEORADB(ORADB为数据库名字)即可。如果仍没有解决,请继续向下看。
回答于 2020-03-21
“ORA-12541:TNS:无监听程序”错误 - kobe_lzq的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/kobe_lzq/article/details/4846734
评论列表(0条)