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 回车 ...
随机推荐
- DataBase 之 常用操作
(1) try catch 配合 Transactions 使用 --打开try catch功能 set xact_abort on begin try begin tran ) commit tra ...
- Python文件IO
Python文件IO 有如下文本内容,文件路径为D:\temp,文件名称为lyric.txt, line1 Look ! line2 If U had one shot line3 One oppor ...
- iOS之上线被拒
前言 感谢您付出宝贵的才华与时间来开发iOS应用程程序.从职业与报酬的角度而言,这对于成千上万的开发员来说一直都是一项值得投入的事业,我们希望帮助您加入这个成功的组织.我们发布了<App Sto ...
- iOS 成员变量,实例变量,属性变量的区别,联系
在ios第一版中: 我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 注意:(这个是以前的用法) @interface MyV ...
- python(5)-os模块
os.getcwd() 获取当前工作目录 os.chdir('dirname') 改变当前脚本的工作目录 os.curdir 返回当前目录名,即"." os.pardir 返回当前 ...
- 【安卓面试题】使用SQLiteOpenHelper的getReadableDatabase()获得的数据库能不能,做写的操作
可以! 不要被Readable的意思误导啦,readable是可读的意思,但不代表不能写哦. getReadableDatabase() 会获取用于操作SQLiteDatabase的实例. getRe ...
- [转]oracle EBS 基础100问
from:http://www.cnblogs.com/xiaoL/p/3593691.html http://f.dataguru.cn/thread-51057-1-1.html 1001 OR ...
- java通过反射获取调用变量以及方法
一:反射概念 可以通过Class类获取某个类的成员变量以及方法,并且调用之. 二:通过反射获取方法.变量.构造方法 @Test // 通过反射获取类定义的方法 public void testMeth ...
- Samba服务详解
Samba文件服务器 本章结构 服务简介 SMB协议 Server Message Block,服务消息块 CIFS协议 Common Internet File System,通用互联网文件系统 S ...
- CMS垃圾回收与G1垃圾回收
CMS垃圾回收与G1垃圾回收的比较请参见:http://colobu.com/2015/04/14/G1-Getting-Started/