报此错误,一般为以下几种情况:
1.Oracle实例服务未启动。导致此错误出现。
解决办法:到计算机管理里的服务启动实例
2.改变Oracle数据库所在服务器的IP地址及机器名以后,出现此错误。
解决办法:到tnsnames.ora文件中将相应的实例HOST改为更改后的IP地址,重新启动机器即可
3.采用shutdown immediate关闭后 报TNS: 监听程序当前无法识别连接描述符中请求的服务
原因:Oracle9i以后,后台进程PMON自动在监听器中注册 在系统参数SERVICE_NAMES中定义的服务名,SERVICE_NAMES默 认为DB_NAME+DOMAIN_NAME。监听配置文件listener.ora中 可以不必指定监听的服务名。但是,当数据库处于关闭状态下PMON进程没有启动,也就不会自动注册 监听的实例名,所以使用sqlplus sys/his@orc0 as sysdba会出现ORA-12514错误。
解决办法:
以上粗体部件为增加的内容,修改后重启监听服务后即可。
附:通过在lsnrctl中输入set display verbose,然后再通过命令service查 看,服务状态为READY表 示PMON自动注册的服务名,而UNKNOWN则 表示该服务是手工在LISTENER.ORA中配置的数据库服务。
1.Oracle实例服务未启动。导致此错误出现。
解决办法:到计算机管理里的服务启动实例
2.改变Oracle数据库所在服务器的IP地址及机器名以后,出现此错误。
解决办法:到tnsnames.ora文件中将相应的实例HOST改为更改后的IP地址,重新启动机器即可
QJXM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.228)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = qjxm)
)
)
3.采用shutdown immediate关闭后 报TNS: 监听程序当前无法识别连接描述符中请求的服务
原因:Oracle9i以后,后台进程PMON自动在监听器中注册 在系统参数SERVICE_NAMES中定义的服务名,SERVICE_NAMES默 认为DB_NAME+DOMAIN_NAME。监听配置文件listener.ora中 可以不必指定监听的服务名。但是,当数据库处于关闭状态下PMON进程没有启动,也就不会自动注册 监听的实例名,所以使用sqlplus sys/his@orc0 as sysdba会出现ORA-12514错误。
解决办法:
如果在listener.ora文件中指定 监听的实例名,则即使数据库处于关闭状态,仍然可以连接。
listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = G:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = G:\oracle\product\10.2.0\db_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = zyk)(PORT = 1521))
)
)
以上粗体部件为增加的内容,修改后重启监听服务后即可。
附:通过在lsnrctl中输入set display verbose,然后再通过命令service查 看,服务状态为READY表 示PMON自动注册的服务名,而UNKNOWN则 表示该服务是手工在LISTENER.ORA中配置的数据库服务。