oracle静态与动态监听

在运行lsnrctl命令的status时,常会看到如下返回值:

服务“test”包含1个例程。

例程"mydata",状态 UNKOWN,包含此服务的一个处理程序。。。

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

例程"mydata",状态 READY,包含此服务的一个处理程序。。。

这里的,状态UNKOWN即表明为静态注册(手动填写参数);

状态为READY的记录,表明为动态注册(listener.ora参数由PMON进程自动从参数文件获取);

一、静态注册

监听配置中,数据库服务中的全局数据库名,可以写任意内容,与数据库无关,只要保证SID正确即可连上数据库。
由于静态注册,参数是手动静态添加,与数据库无关。数据库无法确认监听是否正确配置。因此,lsnrctl中的status显示状态为unkown。即不保证能连通数据库。
注意:静态注册监听,客户端在配置tnsnames.ora服务命名时,“(Oracle 8i或更高版本)服务名”里填写内容要与服务端静态注册监听器时的全局数据库名一致。否则,无法连通。

lsnrctl中显示如下

服务“test”包含1个例程。

例程“mydata”,状态UNKOWN,包含此服务的一个处理程序。。。

test即从监听配置过程,数据库服务中的“全局数据库名”读到的值(即配置文件中GLOBAL_DBNAME的值),“mydata”是从监听配置中,数据库服务中SID读到的值(即SID_NAME的值)。

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = test)

(ORACLE_HOME = /orahome/oracle/product/10.2.0/db_1)

(SID_NAME = mydata)

)

)

客户端在配置tnsname时,服务名(SERVICE_NAME)即为test。否则,连接不到数据库。

ABC =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVICE_NAME =
test)

)

)

这里的ABC,为服务命名。可以为任意值,在客户端连接服务器时,填写的主机字符串,即为此服务命名ABC。

二、动态注册

1、缺省的动态注册

pmon在数据库启动到mount或open时,动态从参数文件中读取service_names值。service_names可以为多个值。
service_names缺省为dbca建立数据库时的全局数据库名。
设置参数service_names为‘a,b,c‘,命令如下:
alter system set service_names=‘a,b,c‘;
则:

lsnrctl状态如下:

服务“test”包含1个例程。

例程"mydata",状态 UNKOWN,包含此服务的一个处理程序。。。

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

例程"mydata",状态 READY,包含此服务的一个处理程序。。。

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

例程"mydata",状态 READY,包含此服务的一个处理程序。。。

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

例程"mydata",状态 READY,包含此服务的一个处理程序。。。

服务 "mydata.ccddt.cn" 包含一个例程。

例程"mydata",状态 READY, 包含此服务的一个处理程序。。。

以上服务名a, b, c, mydata.ccddt.cn都为READY,为动态注册。
这里多了最后一条"mydata.ccddt.cn",是PMON缺省动态注册到监听器内的。
注意:不管参数service_names为何值,pmon都会自动以全局数据库名(这里为mydata.ccddt.cn)为服务名,动态注册一个监听。
缺省情况下,若启用动态注册监听,端口号必须为1521。若启用其他端口的动态监听注册,必须要做相关配置。

通过查看v$session,状态为SYS$USERS的连接为通过静态注册监听连接到服务器。

2、自定义端口的动态监听注册
若要启用非默认端口1521的动态监听注册,缺省状态,Oracle不会进行动态注册。要启用动态注册,必须设置local_listener参数。并在服务端配置tnsnames.ora指定监听参数,或者直接通过修改local_listener指定监听参数。步骤如下:
1)服务端
netmgr,配置监听程序,监听端口为1525(非默认端口)

保存配置

2)、指定监听参数

(1)法1:直接通过修改local_listener参数指定

SQL>alter system set LOCAL_LISTENER=‘(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.23)(PORT=1525))‘;
    System altered

SQL>alter system register

System altered

(2)法2:

在Oracle服务器端建立$ORACLE_HOME/network/admin/tnsnames.ora。解析文件,位置并填入如下内容

mytest =

(DESCRIPTION =
    (ADDRESS_LIST =
        (ADDRESS=(PROTOCOL=TCP)(HOST = 192.168.1.23)(PORT = 1525))
    )
)

这里的mytest也可以根据自己需要,修改为其他字符串。如a或b等。

设置参数,指定通过tnsnames.ora内的信息指定监听参数

SQL>alter system set local_listener=mytest;

System altered

SQL>alter system register;

3、查看监听器状态

LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.23)(PORT=1525)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                15-MAR-2011 10:43:47
Uptime                    0 days 0 hr. 0 min. 56 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /orahome/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /orahome/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraserver)(PORT=1525)))
Services Summary...
Service "a" has 1 instance(s).
  Instance "mydata", status READY, has 1 handler(s) for this service...
Service "b" has 1 instance(s).
  Instance "mydata", status READY, has 1 handler(s) for this service...
Service "c" has 1 instance(s).
  Instance "mydata", status READY, has 1 handler(s) for this service...
Service "mydata" has 1 instance(s).
  Instance "mydata", status READY, has 1 handler(s) for this service...
Service "mydataXDB" has 1 instance(s).
  Instance "mydata", status READY, has 1 handler(s) for this service...
Service "mydata_XPT" has 1 instance(s).
  Instance "mydata", status READY, has 1 handler(s) for this service...
The command completed successfully

时间: 2024-08-04 12:52:40

oracle静态与动态监听的相关文章

oracle数据库静态监听和动态监听 区别

oracle静态监听和动态监听 一.什么是注册? 注册就是将数据库作为一个服务注册到监听程序.客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名 就可以申请连接到数据库.这个服务名可能与实例名一样,也有可能不一样. 在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务(无论何时启动一个数据库,默认地都有两条信息注册 到监听器中:数据库服务器对应的实例和服务.) 相当于是这样:在数据库服务器和客户端之间有一监听程序(Listener),在监听程序中,会记录相应数据库对

动态监听与静态监听(转载)

目录(?)[+] 1.在lsnrctl命令的status时常会看到如下返回值 1.认识下注册 2.静态监听 3.动态注册 1.1 缺省的动态注册 2.2 自定义端口的动态注册监听 在lsnrctl命令的status时,常会看到如下返回值: [plain] view plain copy print? Service "elvis" has 2 instance(s). Instance "elvis", statusUNKNOWN, has 1 handler(s)

Oracle 11.2.0.4 动态监听不注册

我所在的测试环境中有两个aix操作系统做成了HACMP + oracle11g 单实例.主备库. 当主库切换到备库时,发现动态监听不能注册. 查看/oracle/app/oracle/product/11.2.0/network/log/listener.log的时候发现有如下报错. 上面是我的监听日志,日志中有写warning的告警 上网搜索Doc ID 372959.1 得到答案,可以把监听日志中WARNING部分去掉 解决方法如下: 在监听配置文件最下面添加一行 SUBSCRIBE_FOR

关于动态监听的一些测试

昨天做了一个实验,环境是这样的,建立一个静态监听端口1526以及一个动态监听端口1521,并且要通过在tnsname用两种连接字符串进行连接,静态连接的字符串直接连接没有问题,可是后来动态连接的字符串怎么也连接不进去,尝试注册 SQL> alter system register; System altered. [[email protected] ~]$ lsnrctl stat LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 26

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

最近在装ORACLE的时候爆出了一个问题, Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务 以前装ORACLE好多遍了网上搜了好多方法还是解决不了,最后通过自己的摸索找到了一个不显眼的原因, 打开Oracle - OraDb11g_home1/配置和移植工具/  下面的Net Manager,配置好服务名后,打开监听程序右上角选择数据库服务 一开始的数据库服务中配置是有问题的,一般一开始这个目录是空的需要自己手动添加更改,如下图一开始我的Net Ma

win7 安装oracle 10g 未生成监听文件 导致配置监听时无法保存

最近这两天一直在为安装 的oracle 配置监听无法保存 再找各种解决方案,最后自己居然自己配置出来了. 因为缺少监听文件,拷贝别人的放到自己的目录下C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN   listener.ora.tnsnames.ora和 sqlnet.ora 1.修改 tnsnames.ora  中的 # tnsnames.ora Network Configuration File:  c:\oracle\product\10.

Oracle Net Manager 测试监听服务

前几天因为工作需要,安装了Oracle 11g,但怎么都监听不了本机.打开 PL/SQL Devloper 也登陆不了.随删除之. 今天有时间,又把Oracle 安装上了,想着怎么才能监听.经过操作,现在成功,下面是 过程: 1. 安装完ORACLE 后,进入 配置与移植工具,选择 Net Manager 2. 配置监听程序和服务命名. 我使用的协议为 TCP/IP. 主机 :127.0.0.1 .端口 : 1521. 3. 打开 CMD,输入 sqlplus.exe sys/manager a

关于Oracle报“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误

关于Oracle报“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误原因:listener.ora中没有指定监听服务器名. 如下是解决思路: 尝试1.通过重启服务的方式启动数据库,再次连接仍无法连接服务器. 尝试2.既然第一种方法不能解决问题,那就第二种方法.考虑监听listener.ora 步骤如下: 在oracle服务器Oracle安装目录(我的在C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN下,每个人的不一样,根据自己的情况

Linux Oracle 11g, lsnrctl start 监听服务启动失败解决办法

[本文谢绝转载原文来自http://990487026.blog.51cto.com] 报错的现象: [[email protected] ~]$ lsnrctl start LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 29-AUG-2016 10:38:59 Copyright (c) 1991, 2009, Oracle.  All rights reserved. Starting /opt/oracle/app/produc