数据库已经装好了,且数据库已经起起来了,但是客户端pl/sql 死活连接不上服务器,报”ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 ”
这个是监听有问题,查看一下服务端的监听是否已经启动
[oracle@localhost ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-FEB-2015 14:52:56
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 01-FEB-2015 23:39:04
Uptime 0 days 15 hr. 13 min. 53 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/network/admin/listener.ora
Listener Log File /u01/app/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Services Summary...
Service "orcl.localdomain" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl11gXDB.localdomain" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
再看看监听文件的配置内容
[oracle@localhost admin]$ more listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.3.142)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app
监听程序是启动了的,感觉应该没有问题,但是客户端就是说监听有问题,后来在网上搜索了一下相关的问题,在 listener.ora 中添加下面的内容
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = /u01/app/oracle)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle)
(SID_NAME = orcl)
)
)
就解决问题了。
重启监听,再看看监听的内容:
[oracle@localhost admin]$ more listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = /u01/app/oracle)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.3.142)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app
OK,客户端可以正常连接了,但是在网上查了一下 SID_LIST_LISTENER 的信息,有个解释是:
LISTENER部分包含协议地址列表,每个实例一个入口 SID_LIST_LISTENER部分标识全局数据库名称、标识监听程序正在服务的每个实例的Oracle软件主目录以及实例或SID。 SID_LIST描述用于静态数据库注册、保持和以前的版本兼容性以及供Oracle Enterprise Manager使用。 |
感觉还是理解有点模糊,为什么一定要加上这段字符串客户端才能连接,希望在以后的学习中,对这个进行深入理解后再来补充,
也希望有哪位大神能指点指点!