Oracle9i以后,后台进程PMON自动在监听器中注册系统参数SERVICE_NAMES中定义的服务名,SERVICE_NAMES默认为DB_NAME+DOMAIN_NAME。监听配置文件listener.ora中可以不必监听的服务名。但是,当数据库处于关闭状态下,PMON进程没有启动,也就不会自动注册监听的实例名。所有就报错了。
如果在listener.ora文件中指定监听的实例名,则即使数据库处于关闭状态,仍然可以连接。
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = G:\oracle\product\10.2.0\db_1)
(SID_NAME = ORCL)
)
附:通过lsnrctl中输入set display verbose ,然后再通过命令servic查看,服务状态为read表示PMON自动注册的服务名,而UNKOMN则表示该服务是手工在listener.ora中配置的数据服务。