千家信息网

Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务解决过程:1. 找到listener.ora监听文件,具体位置:D:\app\Administrator\p
千家信息网最后更新 2024年11月24日Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务


Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务

解决过程:

1. 找到listener.ora监听文件,具体位置:D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora

2. 在lisener.ora文件中找到

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


将下面的一段内容copy进去,并适当修改。(红字部分为你的SID,其中GLOBAL_DBNAME为全局数据库名,可以与SID不同)

(SID_DESC =
(GLOBAL_DBNAME = ORAC11)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
(SID_NAME = ORAC11)
)

3. 保存listener.ora文件,关闭并重新启动监听程序。

lsnrctl stop // 关闭

lsnrctl start // 启动


4. 此时,用正常的用户去连接双出现新的错误。


ORA-27101: shared memory realm does not exist
5. 启动打开目录:D:\app\Administrator\admin\orac11\pfile,会发现里面有一个文件:init.ora.1052011103553,这是Oracle最后一次成功启动时备份的启动文件。
6. sqlplus /nolog,
create spfile from pfile='D:\app\Administrator\admin\orac11\pfile\init.ora.1052011103553'
startup // 启动数据库。
7. 一切恢复正常。




ora-12514的错误的原因有很多。但无外乎这几种:
1)、 ORA-12541: TNS: 没有监听器
显而易见,服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确。启动监听器:
$ lsnrctl start或
C: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:监听程序当前无法识别链接描述符中请求的服务
该问题是由于缺少监听器的SID_LIST描述项引起的,采用netca进行配置的时候经常会遇到该问题,listener.ora示例如下
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/oracle/product/9.2.0.4)
(PROGRAM = extproc))
(SID_DESC =
(GLOBAL_DBNAME = SAMPLE.COM)
(ORACLE_HOME = /opt/oracle/product/9.2.0.4)
(SID_NAME = SAMPLE)))LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = tcy.com)(PORT = 1521)))








// 解决办法
1.cmd 进入 sqlplus / as sysdba
2.增加 process 和session 重启服务
3.修改LISTENER.OAR 文件添加
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = f:\app\MY\product\11.2.0\dbhome_1)
(SID_NAME = orcl)
)

4.修改tnsnames.ora
(CONNECT_DATA =
(SERVER = dedicate)
(SERVICE_NAME = orcl)
)

dedicate

0