Oracle 动态/静态监听注册

一、动态监听

oracle监听器是一个独立的进程,通常在数据库实例启动前先启动,当oracle实例在open时,会动态向监听器程序注册其service_names和instance_name。实例启动的时候,PMON进程会根据instance_name,service_name参数将实例和服务动态注册到listerer中。

1. listener.ora默认配置文件

# cat /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

SID_LIST_LISTENER =  
  (SID_LIST =    
    (SID_DESC =    
      (SID_NAME = PLSExtProc)    
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)    
      (PROGRAM = extproc)    
    )    
  )

LISTENER =  
  (DESCRIPTION_LIST =    
    (DESCRIPTION =    
      (ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521))    
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))    
    )    
  )

2. 查看监听状态,可以通过status READY状态看到是采用的动态监听。

[[email protected] ~]$ lsnrctl status

LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 21-11014 22:27:29

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node1)(PORT=1521)))  
STATUS of the LISTENER    
------------------------    
Alias                     LISTENER    
Version                   TNSLSNR for Linux: Version 10.2.0.5.0 - Production    
Start Date                21-11014 22:26:37    
Uptime                    0 days 0 hr. 0 min. 52 sec    
Trace Level               off    
Security                  ON: Local OS Authentication    
SNMP                      OFF    
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora    
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log    
Listening Endpoints Summary...    
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1)(PORT=1521)))    
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))    
Services Summary...    
Service "PLSExtProc" has 1 instance(s).    
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...    
Service "orcl" has 1 instance(s).    
  Instance "orcl", status READY, has 1 handler(s) for this service...    
Service "orclXDB" has 1 instance(s).    
  Instance "orcl", status READY, has 1 handler(s) for this service...    
Service "orcl_XPT" has 1 instance(s).    
  Instance "orcl", status READY, has 1 handler(s) for this service...    
The command completed successfully    
[[email protected] ~]$

3. 监听启动与关闭

$ lsnrctl start  
$ lsnrctl stop

4. 手工动态注册监听

数据库在监听器运行之后,open数据库时动态注册才会进行,如果监听器重启,动态注册信息将会暂时丢失,直到PMON进程会周期性扫描实例中service_names和instance_name后再进行动态注册。也可以手动注册,仅限于默认监听。

SQL> alter system register;

二、静态监听

静态注册就是通过实例启动时读取listener.ora文件的配置,将实例GLOBAL_DBNAME和服务注册到监听程序。无论数据库是否已启动,默认地都有两条信息注册到监听器中,可以随时保证可以远程通过监听连接到数据库。

1. listener.ora配置静态监听配置文件

# cat /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

SID_LIST_LISTENER =  
  (SID_LIST =    
    (SID_DESC =    
      (SID_NAME = PLSExtProc)    
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)    
      (PROGRAM = extproc)    
    )    
    (SID_DESC =      
      (SID_NAME = orcl)        
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)        
      (SID_NAME = orcl)        
    )
   
  )

LISTENER =  
  (DESCRIPTION_LIST =    
    (DESCRIPTION =    
      (ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521))    
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))    
    )    
  )

2. 查看监听状态,可以通过status UNKNOWN状态看到是采用的动态监听。

[[email protected] admin]$ lsnrctl status

LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 21-11014 22:58:16

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node1)(PORT=1521)))  
STATUS of the LISTENER    
------------------------    
Alias                     LISTENER    
Version                   TNSLSNR for Linux: Version 10.2.0.5.0 - Production    
Start Date                21-11014 22:58:04    
Uptime                    0 days 0 hr. 0 min. 11 sec    
Trace Level               off    
Security                  ON: Local OS Authentication    
SNMP                      OFF    
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora    
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log    
Listening Endpoints Summary...    
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1)(PORT=1521)))    
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))    
Services Summary...    
Service "PLSExtProc" has 1 instance(s).    
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...    
Service "orcl" has 1 instance(s).    
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...    
The command completed successfully    
[[email protected] admin]$

3. 如果在实际环境中在客户端访问数据库时出现如下错误提示,可以采用静态监听的方式去解决。

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

三、监听中配置(IP=FIRST)参数作用

1,在没有配置IP=FIRST之前服务器监听器会在本机所有IP地址1521端口上进行监听,如果本机上有多个IP地址,可以访问。

[[email protected] ~]# netstat -tunlp |grep 1521  
tcp        0      0 0.0.0.0:1521                0.0.0.0:*                   LISTEN      4071/tnslsnr

2. 配置(IP=FIRST)

$ cat /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

SID_LIST_LISTENER =  
  (SID_LIST =    
    (SID_DESC =    
      (SID_NAME = PLSExtProc)    
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)    
      (PROGRAM = extproc)    
    )    
    (SID_DESC =    
      (SID_NAME = orcl)    
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)    
      (SID_NAME = orcl)    
    )    
  )

LISTENER =  
  (DESCRIPTION_LIST =    
    (DESCRIPTION =    
      (ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521)(IP=FIRST))    
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))    
    )    
  )

3. 重启监听后的效果,本机主机名配置在127.0.0.1上,监听应该在127.0.0.1上, 也可以指定本机上一个IP地址做为监听地址,这里仅是示例。

$ cat /etc/hosts  
127.0.0.1               node1 localhost.localdomain localhost

$ lsnrctl stop  
$ lsnrctl start

$ netstat -tunlp |grep 1521  
tcp        0      0 127.0.0.1:1521              0.0.0.0:*                   LISTEN      4157/tnslsnr

时间: 2024-08-24 21:13:24

Oracle 动态/静态监听注册的相关文章

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

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

Oracle 静态监听注册详解

网上有很多关于oracle 监听静态注册的文章,但大多都是简单说说,并没有详细的例子,这里,将结合linux as4 下的oracle 10gR2.0.1 举一个具体的例子 1.在 $ORACLE_HOME/network/admin/listener.ora 文件中加入一个静态注册的节点 [[email protected] oracle]$ cd $ORACLE_HOME/network/admin [[email protected] admin]$ vi listener.ora # l

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

目录(?)[+] 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)

配置静态监听解决ORA-12514错误的案例

今天做Linux下DG配置的时候,遇到一个现象,tnsname.ora文件配置都正常,tnsping也正常,监听也正常,但是仍然报ORA-12514错误: SQL> set lin 130 pages 130 SQL> select dest_id,error from v$archive_dest; DEST_ID ERROR ---------- ----------------------------------------------------------------- 1 2 OR

jQuery封装自定义事件--valuechange(动态的监听input,textarea)之前值,之后值的变化

jQuery封装自定义事件--valuechange(动态的监听input,textarea)之前值,之后值的变化 js监听输入框值的即时变化 网上有很多关于 onpropertychange.oninput的讲解,但是他们都不是我想要的,我想要的是动态的监听input,textarea等之前值和之后改变的值,比如像KISSY中的valuechange事件一样,当我在输入框里面开始输入1的时候,那么之前值是undefined,现在的值是1,当我接着输入2时候,那么之前的值是1,现在的值是2.等,

oracle 11g rac 监听程序offline

oracle 11g rac 监听程序在调整过网络后出现监听进程offline,而且两台节点之间频繁切换,查看日志/var/log/message 发现有频繁的注册撤销动作. 监听日志 /u01/app/oracle/diag/tnslsnr/rac1/listener/trace/listener.log监听文件 /u01/app/11.2.0/grid/network/admin/listener.oraoracle错误日志 /u01/app/oracle/diag/rdbms/oaorcl

ADG静态监听

11g ADG 环境必须要配置的静态监听,复制粘贴,简单修改就可以 SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (GLOBAL_DBNAME=orcl) (SID_NAME=orcl1) (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1) ) (SID_DESC= (GLOBAL_DBNAME=orcl_DGMGRL) (SID_NAME=orcl1) (ORACLE_HOME=/u01/app/ora

AIX下RAC搭建 Oracle10G(五)安装oracle、建立监听

AIX下RAC搭建系列 AIX下RAC搭建 Oracle10G(五)安装oracle.建立监听 环境 节点 节点1 节点2 小机型号 IBM P-series 630 IBM P-series 630 主机名 AIX203 AIX204 交换机 SAN光纤交换机 存储 SAN T3存储 大纲流程例如以下: 第一部分:主机配置 一.检測系统环境 二.网络配置 三.用户和组 四.网络參数调整 五.时间同步 六.卷组 第二部分:安装hacmp并配置 七.hacmp安装并配置 第三部分:安装CRS 八.

修改oracle 10g rac监听端口号为1523的步骤

修改oracle  10g rac监听端口号为1523的步骤 一. 修改listener.ora ,将其中的1521改为1523.事先做该文件的备份,以便快速复原 二. 修改tnsnames.ora ,将remote_listener对应的值 在 tnsnames.ora中的参数改为1523,事先做该文件的备份,以便快速复原 三. 修改local_listener数据库初始化参数 alter system set local_listener = '(ADDRESS = (PROTOCOL =