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中配置的数据库服务。

版权声明:本文为quechao123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/quechao123/archive/2010/04/11/2346663.html