ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

监听配置文件listener.ora中可以不必指定监听的服务名。但是,当数据库处于关闭状态下PMON进程没有启动,也就不会自动注册监听的实例名。

1 原来的listener.ora

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /app/oracle/product/10.2.1/db_1)

      (PROGRAM = extproc)

    )

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = rhfour.fsti.com)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

  )

 

2 修改后的listener.ora

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /app/oracle/product/10.2.1/db_1)

      (PROGRAM = extproc)

    )

    (SID_DESC =

       (GLOBAL_DBNAME = test)

       (ORACLE_HOME = /app/oracle/product/10.2.1/db_1) 

       (SID_NAME = test)

    )

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = rhfour.fsti.com)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

  )

3 主动跟被动的关系

3.1 Listener主动加载服务

原因是添加:

    (SID_DESC =

       (GLOBAL_DBNAME = test)

       (ORACLE_HOME = /app/oracle/product/10.2.1/db_1) 

       (SID_NAME = test)

    )

后,在使用lsnrctl start监听程序时会将listener的服务注册到进程监视器(pmon)中

3.2 Listener被动加载服务

如果没有该内容,那么由实例的pmon进程在listener中注册服务,对listener来讲,就是被动了。

这也就是为什么先启动监听后启动数据库能够正常连接的,反之不行的原因了。

 

你可能感兴趣的:(oracle,数据库,tcp,list)