ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 彻底理解初始化参数SERVICE_NAMES和客户端TNS中SERVICE_NAME(1)

彻底理解初始化参数SERVICE_NAMES和客户端TNS中SERVICE_NAME(1)

原创 Linux操作系统 作者:husthxd 时间:2004-10-14 00:00:00 0 删除 编辑

1.SERVICE_NAMESLISTENER


本文可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明

http://blog.itpub.net/post/11/3085

彻底理解初始化参数SERVICE_NAMES和客户端TNSSERVICE_NAME

 Authorhusthxd

msnhusthxd@hotmail.com

 

     1.       SERVICE_NAMESLISTENER

初始化参数SERVICE_NAMES默认为INSTANCE_NAME,后台进程PMON自动在服务器监听器中注册该SERVICE_NAMES。实验如下:

sidb@GDSI-HYQL> show parameter service_

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

service_names                        string      simis

 

sidb@GDSI-HYQL> show parameter instance_name

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_name                        string      simis

首先监听器配置文件手工配置了数据库服务,listener.ora的配置信息为:

# LISTENER.ORA Network Configuration File: D:oracleora90networkadminlistener.ora

# Generated by Oracle configuration tools.

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

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

      )

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = sb-hyk)(PORT = 1521))

      )

    )

  )

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = D:oracleora90)

      (PROGRAM = extproc)

    )

    (SID_DESC =

      (GLOBAL_DBNAME = simis)

      (ORACLE_HOME = D:oracleora90)

      (SID_NAME = simis)

    )

  )

 

lsnrctl service显示的信息如下:

LSNRCTL for 32-bit Windows: Version 9.0.1.1.1 - Production on 14-10-2004 10:32

:18

 

Copyright (c) 1991, 2001, Oracle Corporation.  All rights reserved.

 

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))

服务摘要..

服务 "PLSExtProc" 包含 1 个例程。

  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已被拒绝:0

         LOCAL SERVER

服务 "simis" 包含 2 个例程。

  例程 "simis", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已被拒绝:0

         LOCAL SERVER

  例程 "simis", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:4 已拒绝:0 状态:ready

         LOCAL SERVER

命令执行成功

 

通过如下实验可以证明服务状态为READY表示PMON自动注册的服务名,而UNKNOWN则表示该服务是手工在LISTENER.ORA中配置的数据库服务。

 

listener.ora配置文件中的数据库服务信息去掉,更改为:

# LISTENER.ORA Network Configuration File: D:oracleora90networkadminlistener.ora

# Generated by Oracle configuration tools.

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

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

      )

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = sb-hyk)(PORT = 1521))

      )

    )

  )

下面再看看lsnrctl service的显示信息:

LSNRCTL> reload

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))

命令执行成功

LSNRCTL> service

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))

服务摘要..

服务 "simis" 包含 1 个例程。

  例程 "simis", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

命令执行成功

 

这里显示的simis就是初始化参数中SERVICE_NAMES设置的参数值,由PMON自动注册到监听器上。下面不妨修改初始化参数SERVICE_NAMES来证明这一观点:

alter system set service_names='simis,hyk,hyb' scope=memory

/

 

在当前实例上修改sevice_names对监听器不起作用:

LSNRCTL> reload

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))

命令执行成功

LSNRCTL> service

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))

监听器不支持服务

命令执行成功

 

修改参数,关闭数据库

SQL> alter system set service_names='simis,hyk,hyb' scope=both

  2  /

 

系统已更改。

 

-- 平台是windows,901,这里不得不提一下的是901真的非常垃圾,还会出现如下的bug

SQL> shutdown immediate;

ORA-03113: 通信通道的文件结束

SQL>

SQL>

SQL> conn / as sysdba

已连接到空闲例程。

 

SQL> startup

ORACLE 例程已经启动。

 

Total System Global Area  114061244 bytes

Fixed Size                   282556 bytes

Variable Size              79691776 bytes

Database Buffers           33554432 bytes

Redo Buffers                 532480 bytes

数据库装载完毕。

数据库已经打开。

SQL>

SQL> show parameter service_

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

service_names                        string      simis,hyk,hyb

下面看看lsnrctl service的输出:

 

LSNRCTL> service

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))

服务摘要..

服务 "hyb" 包含 1 个例程。

  例程 "simis", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

服务 "hyk" 包含 1 个例程。

  例程 "simis", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

服务 "simis" 包含 1 个例程。

  例程 "simis", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

命令执行成功

我们看到SERVICE_NAMES设置的服务参数simishykhyb均在监听器中自动注册。

谢谢biti_rainy的指正:

parameter 中 service_name 默认是 db_name.db_dimain

SQL> show parameter db_name

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string ocn
SQL> show parameter instance_name

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string ocn1
SQL> show parameter db_domain

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_domain string db.alibaba.com
SQL>
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string ocn1
SQL> show parameter service_name

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string ocn.db.alibaba.com
SQL> 
 

2.   

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/6906/viewspace-21584/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
ITPUB数据库版块资深版主,对Oracle、PostgreSQL有深入研究。现就职于广州云图数据技术有限公司,系统架构师。

注册时间:2007-12-28

  • 博文量
    1388
  • 访问量
    3837813