Oracle 监听动态注册与静态注册
静态注册
静态注册是在启动listener时,listener会从listener.ora文件中获取服务名及相关信息。信息包括:实例名和服务名等。
--静态注册时,listener.ora中的内容如下:
#SID_LIST_LISTENER描述对外提供数据库服务的列表;
#两个实例sun,+ASM分别对应服务名orcl01,orcl02
SID_LIST_LISTENER =
(
SID_LIST =
(
SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/oracle)
(PROGRAM = extproc)
) (
SID_DESC =
(SID_NAME = sun) --提供注册的实例名
(ORACLE_HOME = /u01/oracle)
(GLOBAL_DBNAME =orcl01) --向外提供服务名
) (
SID_DESC =
(SID_NAME = +ASM)
(ORACLE_HOME = /u01/oracle)
(GLOBAL_DBNAME =orcl02)
)
) #LISTENER部分描述了主机地址、端口及协议
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.128)(PORT = 1521))
)
--配置对应的tnsnames.ora 中的节点
-bash-3.00$ more tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/oracle/network/admin/tnsnames.ora
# Generated by Oracle configuration tools. #通过实例名连接
SUN01 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = mysolaris)(PORT = 1521))
)
(CONNECT_DATA =
(SID = sun)
)
) #通过服务名连接
SUN02 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = mysolaris)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl01)
)
) #通过实例名连接
ASM01 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = mysolaris)(PORT = 1521))
)
(CONNECT_DATA =
(SID = +ASM)
)
) #通过服务名连接
ASM02 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = mysolaris)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl02)
)
) EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
--启动监听
-bash-3.00$ lsnrctl start LSNRCTL for Solaris: Version 10.2.0.2.0 - Production on 10-AUG-2013 20:50:35 Copyright (c) 1991, 2005, Oracle. All rights reserved. Starting /u01/oracle/bin/tnslsnr: please wait... TNSLSNR for Solaris: Version 10.2.0.2.0 - Production
System parameter file is /u01/oracle/network/admin/listener.ora
Log messages written to /u01/oracle/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.100)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.100)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Solaris: Version 10.2.0.2.0 - Production
Start Date 10-AUG-2013 20:50:35
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/network/admin/listener.ora
Listener Log File /u01/oracle/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.100)(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 "orcl01" has 1 instance(s).
Instance "sun", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl02" has 1 instance(s).
Instance "+ASM", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
--可以看到实例sun及实例+ASM都在被监听
Service "orcl01" has 1 instance(s).
Instance "sun", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl02" has 1 instance(s).
Instance "+ASM", status UNKNOWN, has 1 handler(s) for this service...
从上面信息可以看到,静态注册时监听程序所获取的实例名或服务名均来自listener.ora文件
动态注册
动态注册是在instance启动的时候PMON进程根据init.ora中的instance_name,service_names两个参数将实例和服务动态注册到listener中。
- instance_name默认是:db_name
- service_names默认是:db_name.db_domain
在启动listener时,会从listener.ora读取监听配置,如果该文件不存在,则监听会在主机名对应的IP和1521端口上进行监听。但监听刚刚启动的时候,并没有注册的服务。
1.配置默认端口的动态服务注册
--关闭实例,关闭监听,备份listener.ora
-bash-3.00$ ls -l
-rw-r--r-- oracle oinstall Aug : listener.ora.bak
drwxr-x--- oracle oinstall Jan samples
-rw-r----- oracle oinstall Dec shrept.lst
-rw-r--r-- oracle oinstall Aug : tnsnames.ora
--启动监听
-bash-3.00$ lsnrctl start
.........
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Solaris: Version 10.2.0.2. - Production
Start Date -AUG- ::
Uptime days hr. min. sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/oracle/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=mysolaris)(PORT=)))
The listener supports no services
The command completed successfully
可以看到:监听会在主机名对应的IP和1521端口上进行监听;监听刚刚启动的时候,并没有注册的服务
--启动实例后,查看监听 发现PMON进程会将服务注册进来
-bash-3.00$ lsnrctl status
........
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=mysolaris)(PORT=)))
Services Summary...
Service "+ASM" has instance(s).
Instance "+ASM", status BLOCKED, has handler(s) for this service...
Service "+ASM_XPT" has instance(s).
Instance "+ASM", status BLOCKED, has handler(s) for this service...
Service "sun" has instance(s).
Instance "sun", status READY, has handler(s) for this service...
Service "sun_XPT" has instance(s).
Instance "sun", status READY, has handler(s) for this service...
The command completed successfully
2.配置非默认端口的动态服务注册
服务器端的配置
a.配置非默认的listener.ora
-bash-3.00$ more listener.ora LISTENER02 = --这个名字最好不要用默认的LISTENER
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mysolaris)(PORT = ))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
b.在配置文件tnsnames.ora中加入
-bash-3.00$ more tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/oracle/network/admin/tnsnames.ora
# Generated by Oracle configuration tools. LISTENER02 = (
ADDRESS = (PROTOCOL = TCP)
(HOST = mysolaris)
(PORT = )
)
-bash-3.00$
c.启动非默认的侦听器
-bash-3.00$ lsnrctl start LISTENER02 STATUS of the LISTENER
------------------------
Alias LISTENER02
Version TNSLSNR for Solaris: Version 10.2.0.2. - Production
Start Date -AUG- ::
Uptime days hr. min. sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/network/admin/listener.ora
Listener Log File /u01/oracle/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.100)(PORT=)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
The listener supports no services
The command completed successfully
-bash-3.00$
d.设定local_listener参数
SQL> alter system set local_listener = 'LISTENER02'; --LISTENER2为tnsnames.ora中的监听名称
e.手动使动态注册立即生效(此操作可有可无)
SQL> alter system register;
Oracle 监听动态注册与静态注册的更多相关文章
- oracle监听动态注册与静态注册
client端如果想要连接到远程的数据库服务器,首先数据库服务器必须启动监听器 oracle监听器的配置在$ORACLE_HOME/network/admin/listener.ora,打开这个文件, ...
- Oracle监听的静态注册和动态注册
静态注册:通过解析listene.ora文件 动态注册:由PMON进程动态注册至监听中 在没有listener.ora配置文件的情况下,如果启动监听,则监听为动态注册.用图形化netca创建的监听,默 ...
- ORACLE监听配置及测试实验
实验一: 修改db_domain和service_name 我们将Db_name和Db_domain两个参数用'.'连接起来,表示一个数据库,并将该数据库的名称称为Global_name即等于serv ...
- 【转】oracle 监听静态注册举例解析
网上有很多关于oracle 监听静态注册的文章,但大多都是简单说说,并没有详细的例子,这里,将结合linux as3 下的oracle 10gR2.0.1 举一个具体的例子 1.在 $ORACLE_H ...
- oracle 监听静态注册举例解析
网上有很多关于oracle 监听静态注册的文章,但大多都是简单说说,并没有详细的例子,这里,将结合linux as3 下的oracle 10gR2.0.1 举一个具体的例子 1.在 $ORACLE_H ...
- ORACLE 动态注册和静态注册的区别(转)
1, oracle 10g 用netca方式建立的都默认为动态注册方式2,如果想改为静态注册的方式则在listener.ora 中加入如下内容即可 SID_LIST_LISTENER = (SID_L ...
- oracle监听(lsnrctl)详解解读
(总结)Oracle监听服务lsnrctl参数及查询状态详解 lsnrctl命令常用参数详解: lsnrctlstart启动指定的监听器 stop关闭指定的监听器 status显示监听器的状态.s ...
- ORACLE监听理解
参考官方文档Net Services Reference的7 Oracle Net Listener Parameters (listener.ora) 1 监听概念 oracle监听,是个服务器端进 ...
- LINUX启动ORACLE监听和服务
可通过secureCRT或者telnet直接连 启动监听命令:lsnrctl start 成功启动后:sqlplus /nolog 回车 conn / as sysdba 回车 startup 回车 ...
随机推荐
- c语言趣味
改编java趣味100题,c语言版 1.C语言版金字塔 #include <stdio.h> int main() { int n,i,j,k; scanf("%d", ...
- Algernon's Noxious Emissions POJ1121 zoj1052
One of the greatest alchemists of the lower Middle Renaissance, Algernon da Vinci (one of Leonardo's ...
- ISO8583报文解析
在此只写了一个8583报文的拆包,组包其实也差不多的. 不多说直接上文件, 具体思路过程,在解析类里面写的有. 其中包含了四个文件 8583resp.txt报文 ISO8583medata配置文件 B ...
- poj2299解题报告(归并排序求逆序数)
POJ 2299,题目链接http://poj.org/problem?id=2299 题意: 给出长度为n的序列,每次只能交换相邻的两个元素,问至少要交换几次才使得该序列为递增序列. 思路: 其实就 ...
- Android(java)学习笔记83:finally关键字的作用
package cn.itcast_07; import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...
- Debian apt-get 无法补全
今天发现在终端里输入apt-get inst后按Tab键无法自动补全成 install,纳闷之余google了一下(我承认开始是baidu...),原来是没有安装 bash-completion. s ...
- South——谁说Django不能migrate!
零.前言 最近改一个项目,需要对已有的model进行更改.大家都知道Django自带的syncdb只能创建数据库,但是无法将已经改变的model应用的数据库中. 大概两年前遇到这个问题的时候,网上的答 ...
- python(1) - 第一个程序 Hello World!
进入python3的解释器环境. 我们让解释器输出 “Hello World!” 解释器成功的输出了Hello world! 程序就这样完成了. 当然上面的程序我们是在解释器中完成的. 我们可以通过 ...
- centos安装ftp
yum install -y vsftpd安装vsftpd service vsftpd start 启动vsftpd vim /etc/vsftpd/vsftpd.conf 将anonymous_e ...
- 软件设计师考试计算机系统知识——CPU
第一章: 计算机系统知识 1.1.1计算机系统硬件的基本组成 运算器.控制器.存储器.输入设备.输出设备 1.1.2 中央处理器 ①CPU的功能: a.程序控制:CPU通过执行指令来控制程序执行的顺序 ...