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
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341