lsncrtl start | stop时:
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 12-SEP-2012 21:55:52
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.4)(PORT=1521))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
以为是listener.ora出现错误,最后发现时自己在listener启动的时候修改listener.ora导致监听崩溃,但是还是有进程:lsof -i:1152 查出进程号,然后kill -9 sid。重启listener.
还有一个问题:在客户端使用sql*plus时出现:ORA-01031: insufficient privileges 以及ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
从网上找解决办法:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
通过重启服务的方式启动数据库,再次连接却能成功登录,也就是说在关闭数据库状态下无法连接服务器。
开始以为是系统环境变量Oracle_SID的配置问题,因为机器有多个实例,一阵折腾后还是不能连接。后来查资料得知:
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:oracleproduct10.2.0db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = G:oracleproduct10.2.0db_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中配置的数据库服务。
但是没有起作用,无奈之下,删除了network/admin下所有文件,而后使用netca,netmgr重建网络配置文件,奇迹般的恢复了。具体原因不知,等以后成为oracle大牛再来解决...
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27784356/viewspace-1059409/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27784356/viewspace-1059409/

1896

被折叠的 条评论
为什么被折叠?



