Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1055719
  • 博文数量: 171
  • 博客积分: 55
  • 博客等级: 民兵
  • 技术积分: 2077
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 10:11
个人简介

pugna

文章分类

全部博文(171)

文章存档

2021年(4)

2020年(1)

2019年(4)

2018年(5)

2017年(7)

2016年(9)

2015年(36)

2014年(8)

2013年(96)

2012年(1)

分类: Oracle

2013-03-23 21:20:27

Oracle监听器Listener中的服务管理

 

instance_nameorcldb

db_domaintest

global_nameorcldb.test

 

listener.ora文件路径:$ORACLE_HOME/network/admin/listener.ora

 

 

一、动态注册服务与静态注册服务的区别与区分

Listener监听中的服务有两种,一种是动态注册的(Oracle实例启动后,由实例向Listener注册的),一种是静态注册的(Listener启动时,通过读取listener.ora中的配置而注册的)。

动态注册,是在Oracle实例启动后的12分钟由pmon进程完成的。默认注册的服务名称为 instance_name.db_domain 。这个名称不一定与Oracleglobal name相同,如手动修改了domain name但未修改global name的情况。

静态注册,是通过读取listener.ora中的配置完成的,并没有与Oracle实例进行交互,所以,在Listener中能看到静态服务,并不代表此服务可用。若此时Oracle实例未启动,客户端请求此服务时就会报 ORA-01034 ORA-27101 的错误。

 

lsnrctl statuslsnrctl service的结果中,可以区分这两种服务。若在结果中显示实例状态为“状态 READY”或“状态 BLOCKED”的服务为动态注册的;而显示“状态 UNKNOWN”的则为静态注册的监听服务。

 

[oracle@oracle ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 22-3 -2013 20:28:35

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

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

LISTENER STATUS

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

别名                      LISTENER

版本                      TNSLSNR for Linux: Version 11.2.0.1.0 - Production

启动日期                  22-3 -2013 18:26:35

正常运行时间              0 2 小时 1 59

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          /opt/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

监听程序日志文件          /opt/oracle/diag/tnslsnr/oracle/listener/alert/log.xml

监听端点概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.centos)(PORT=1521)))

服务摘要..

服务 "orcldb.test" 包含 1 个实例。

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

服务 "orcldb.static" 包含 1 个实例。

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

命令执行成功

 

[oracle@oracle ~]$ lsnrctl service

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 22-3 -2013 20:23:15

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

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

服务摘要..

服务 "orcldb.test" 包含 1 个实例。

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

    处理程序:

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

         LOCAL SERVER

服务 "orcldb.static" 包含 1 个实例。

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

    处理程序:

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

         LOCAL SERVER

命令执行成功

 

 

二、动态注册服务

--查看实例名

show parameter instance_name;

 

--查看domain name

show parameter domain;

 

--查看global name

select * from global_name;

 

--查看本实例对应的服务名

show parameter service_names;

select name from v$services;

select name from dba_services;

 

--查看所有在监听程序中注册了的监听服务

lsnrctl service

 

--手动将此实例的动态监听服务(service_names)在监听程序Listener中注册

alter system register;

 

--修改本实例对应的监听服务名为orcl.centos

alter system set service_names='orcl.centos' scope=both;

 

--修改本实例对应的监听服务名为aaabbb(即aaabbb监听服务都对应本实例)

alter system set service_names='aaa,bbb' scope=both;

 

 

通过 alter system set service_names 修改后,此实例对应的动态注册服务数量可能只有一个,也可能有多个。

若修改后的值与 instance_name.db_domain 的值相同或为空字符串'',则此实例只有一个动态注册服务,即 instance_name.db_domain

若修改后的值为'aaa',而aaa instance_name.db_domain 的值不同,则此实例有两个动态注册服务,即 instance_name.db_domain aaa

若修改后的值为'aaa,bbb',而aaabbb都与 instance_name.db_domain 的值不同,则此实例有三个动态注册服务,即 instance_name.db_domain aaabbb

 

 

 

移除XDB监听服务的方法

--重置dispatchers参数

ALTER SYSTEM RESET dispatchers scope=spfile sid='*';

 

--此时XDB监听服务还存在

show parameter dispatchers;

select name from dba_services;

lsnrctl service

 

--最后将监听重启一下即可生效

lsnrctl stop && lsnrctl start

lsnrctl service

 

 

 

动态注册配置示例(listener.ora

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = test)(PORT = 1521))

    )

  )

 

ADR_BASE_LISTENER = /opt/oracle

 

 

 

三、静态注册服务部分

静态注册服务无法通过下面的语句查看

show parameter service_names;

select name from v$services;

select name from dba_services;

 

只能通过lsnrctl statuslsnrctl service查看。

 

另外,在listener.ora中修改静态注册服务后,必须运行 lsnrctl reload lsnrctl stop && lsnrctl start 后才能生效。

 

 

静态注册配置示例(listener.ora

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = orcldb.test)

      (SID_NAME = orcldb)

      (ORACLE_HOME = /opt/oracle/product/11.2.0/dbhome_1)

    )

  )

 

在多网卡的时候,推荐使用静态服务注册;如果是用默认的动态注册,速度会慢些。
                                                                               2013-03-21 11:36

阅读(3615) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~