ORA-12541错误总结

这个错误很普遍,也很容易遇到。今天刚在电脑上装了个oracle,连接时就出现了这个问题

1、 ORA-12541: TNS: 没有监听器

显而易见,服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确。
启动监听器:

//1、进入cmd命令界面

//2、进入oracle
sqlplus / as sysdba 

//3、启动监听器
$ lsnrctl start  

2、ORA-12154: TNS: 无法处理服务名

检查输入的服务名与配置的服务名是否一致。另外注意生成的本地服务名文件(Windows下如D:oracleora92networkadmin tnsnames.ora,Linux/Unix下/network/admin/tnsnames.ora)里每项服务的首 行服务名称前不能有空格。

3、 ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的SERVICE_NAME

打开Net Manager,选中服务名称,检查服务标识栏里的服务名输入是否正确。该服务名必须与服务器端监听器配置的全局数据库名一致。同时检查sqlnet.ora,例如如果想要采用简便连接方式连接就需要在NAMES.DIRECTORY_PATH参数中添加EZCONNECT。

4、ORA-12514:TNS:监听程序当前无法识别链接描述符中请求的服务

这种情况一般是配置了监听但是系统未写入到listener.ora文件中(在此我暂未搞明白什么时候写入),所以只需要在该文件中写入配置参数就可以了。

解决办法:

1、打开listener.ora文件

找到listener.ora文件的存放位置并打开。

我本机文件目录在D:\app\administer\product\11.2.0\dbhome_1\NETWORK\ADMIN下。该文件须根据自己安装目录的实际情况找。(注:Oracle10g与11g的目录好像不太一样)。文件内容如下:

# listener.ora Network Configuration File: D:\app\administer\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\app\administer\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\app\administer\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.194)(PORT = 1555))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = D:\app\administer

从上中我们可以看出我已经配置过监听了,但是报错是由于Oracle的地址没有写到SID_DESC中,在此我们将此写入就可以了。

2、修改listener.ora文件

将以下内容追加到该文件的SID_LIST节点下

(SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = D:\app\administer\product\11.2.0\dbhome_1)
      (SID_NAME = orcl)
    )

结果如下图:
ORA-12541错误总结_第1张图片

注:标红的部分根据自己机器安装目录修改

3、我在此本机修改完毕后,总是提示我不能保存,提示说该文件已在别的地方打开。于是我另存一份,然后直接将原来的文件给覆盖掉。

4、重启监听服务。OK搞定!!

你可能感兴趣的:(oracle,ORA-12154,oracle)