ORACLE动静态监听
一、基础概念
注册:将实例或者服务注册到监听程序中,便于应用程序通过数据库提供对外服务名来透明地访问数据库。这样client端与数据库服务端在listener的作用下,来访问数据库。
oracle的动静态监听是从它们的注册方式来区分的
二、静态监听
静态注册:即直接写在listener.ora里的信息,与数据库配置无关,在lsnrctl status查看的状态unkown,
[oracle@s_dg1 admin]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.3.0 – Production on 24-MAR-2015 14:15:23
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.21.119)(PORT=1521)))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 – Production
Start Date 24-MAR-2015 09:20:29
Uptime 0 days 4 hr. 54 min. 54 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/s_dg1/listener/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.21.119)(PORT=1521)))
Services Summary…
Service “dgtrsen” has 1 instance(s).
Instance “dgtrsen”, status UNKNOWN, has 1 handler(s) for this service…
Service “dgtrsenXDB.trsen” has 1 instance(s).
Instance “dgtrsen”, status READY, has 1 handler(s) for this service…
Service “s_dgtrsen.trsen” has 1 instance(s).
Instance “dgtrsen”, status READY, has 1 handler(s) for this service…
Service “s_dgtrsen_DGMGRL.trsen” has 1 instance(s).
Instance “dgtrsen”, status UNKNOWN, has 1 handler(s) for this service…
The command completed successfully
–listener.ora文件里配置信息:
[oracle@s_dg1 admin]$ more listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = dgtrsen)==============>配置dgtrsen的的服务
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = dgtrsen)
)
(SID_DESC =
(GLOBAL_DBNAME = s_dgtrsen_DGMGRL.trsen)======>配置s_dgtrsen_DGMGRL.trsen的的服务
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = dgtrsen)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.119)(PORT = 1521))
)
ADR_BASE_LISTENER = /u01/app/oracle
三、动态监听
动态注册:instance启动时pmon进程从参数文件里读取instance_name和service_names将其注册到监听中。
service_names值,可以使用全称s_dgtrsen.trsen或缩写s_dgtrsen。选择缩写的名称并设置了db_domain参数,注册到监听器中的服务将是 service_name值和db_domain值的拼接。
oracle实例在启动时,使用命令alter system regieter,或每隔一分钟pmon进程向监听进行动态注册并且是默认1521端口上
Service “dgtrsenXDB.trsen” has 1 instance(s).======>此服务是XDB组件,可通过参数dispatcher查看
Instance “dgtrsen”, status READY, has 1 handler(s) for this service…
Service “s_dgtrsen.trsen” has 1 instance(s).====>这里是service_names读到的信息
Instance “dgtrsen”, status READY, has 1 handler(s) for this service…
Service “s_dgtrsen_DGMGRL.trsen” has 1 instance(s).
SQL> show parameter service_names;
NAME TYPE VALUE
———————————— ———– ——————————
service_names
string s_dgtrsen.trsen
SQL> show parameter domain;
NAME TYPE VALUE
———————————— ———– ——————————
db_domain string trsen
动态注册不能注册非默认端口监听,故故需要设置参数local_listener或者配置tnsnames.ora文件,然后设置此参数执行其name
SQL> alter system set local_listener='(address=(protocol=tcp)(host=192.168.21.119)(port=1522))’;
System altered.
SQL> show parameter local_l
NAME TYPE VALUE
———————————— ———– ——————————
local_listener string (address=(protocol=tcp)(host=1
92.168.21.119)(port=1522))
SQL> alter system register;
System altered.