注册就是将数据库作为一个服务注册到监听程序。客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库。这个服务名可能与实例名一样,也有可能不一样。

注册分:
1. 静态注册
2. 动态注册

动态注册

  • 没有设置service_names值的情况

动态注册是向监听注册的首选方法。初始化参数local_listener会告知实例应当进行联系的、从而能找到注册实例的监听器的网络地址。

在实例启动时,PMON进程会使用local_listener参数来定位一个监听器,并向其通知实例的instance_name,service_names。

如果该service_names没有设定值,数据库将拼接db_name和db_domain的值来注册自己。如果该service_names设定了值,可以使用完全限定的名称(比如 orcl.oracle.com)或缩写的名称(比如orcl)。

SQL> show parameter service_names
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------
service_names                        string

SQL> show parameter db_name;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- -------
db_name                              string      ora11g

SQL> show parameter db_domain;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- -------
db_domain                            string

LSNRCTL> status
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Tough)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
启动日期                  07-4月 -2014 12:58:45
正常运行时间              0 天 0 小时 31 分 53 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          c:\oracle\product\10.2.0\db_1\network\admin\listener.ora
监听程序日志文件          c:\oracle\product\10.2.0\db_1\network\log\listener.log
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Tough)(PORT=1521)))
服务摘要..
服务 "ora11g" 包含 1 个例程。
  例程 "ora11g", 状态 READY, 包含此服务的 1 个处理程序...

服务 "ora11gXDB" 包含 1 个例程。
  例程 "ora11g", 状态 READY, 包含此服务的 1 个处理程序...
服务 "ora11g_XPT" 包含 1 个例程。
  例程 "ora11g", 状态 READY, 包含此服务的 1 个处理程序...
服务 "test" 包含 1 个例程。
  例程 "ora11g", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

我们没有设置service_names,则数据库拼接db_name和db_domain的值以及默认1521端口来来注册自己——这就是动态注册。

如果没有显式设置service_names和instance_name的值,那么仅当数据库在监听器运行之后启动时,动态注册才会发生;在这种情况下,如果监听器后来发生了重启,动态注册信息将会丢失。显然,最好在所有的数据库启动之前先启动监听器,这样就会避免没有显式设置 service_names和instance_name的值时,若重启监听器带来的动态注册信息丢失的情况。

如果监听器在默认端口1521上运行,则完全不需要配置动态注册。所有实例将自动查看相应端口上本机的监听器,如果找到就进行注册。

但如果监听器不在主机名标识地址上的默认端口运行,则必须通过设置local_listener参数来重新注册来指定监听器的位置。

SQL> alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = Tough)(PORT = 1530))';
 
System altered

SQL> alter system register;

System altered

  • 设置了service_names值的情况

SQL> alter system set service_names='a,b';
 
System altered

LSNRCTL> status
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Tough)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
启动日期                  07-4月 -2014 14:14:12
正常运行时间              0 天 0 小时 13 分 17 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          c:\oracle\product\10.2.0\db_1\network\admin\listener.ora
监听程序日志文件          c:\oracle\product\10.2.0\db_1\network\log\listener.log
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Tough)(PORT=1521)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "a" 包含 1 个例程。
  例程 "ora11g", 状态 READY, 包含此服务的 1 个处理程序...
服务 "b" 包含 1 个例程。
  例程 "ora11g", 状态 READY, 包含此服务的 1 个处理程序...
服务 "ora11g" 包含 1 个例程。
  例程 "ora11g", 状态 READY, 包含此服务的 1 个处理程序...

服务 "ora11gXDB" 包含 1 个例程。
  例程 "ora11g", 状态 READY, 包含此服务的 1 个处理程序...
服务 "ora11g_XPT" 包含 1 个例程。
  例程 "ora11g", 状态 READY, 包含此服务的 1 个处理程序...
服务 "test" 包含 1 个例程。
  例程 "ora11g", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功


Oracle监听器—动态注册的更多相关文章

  1. Oracle监听器—静态注册

    注册就是将数据库作为一个服务注册到监听程序.客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库.这个服务名可能与实例名一样,也有可能不一样. 注册分: 1. 静 ...

  2. Oracle Listener 动态注册 与 静态注册

    http://blog.csdn.net/tianlesoftware/article/details/5543166

  3. Oracle监听静态注册和动态注册

    静态注册和动态注册总结 一.什么是注册? 注册就是将数据库作为一个服务注册到监听程序.客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库.这个服务名可能与实例名 ...

  4. [Oracle] Listener的动态注册

    在有Oracle Listener的动态注册之前,采用的是静态注册,所谓静态注册是指Oracle实例在启动时,读取listener.ora里的配置,然后注册到Listener,它主要有两个缺点: 1. ...

  5. oracle监听的动态注册和静态注册

    参考资料: https://blog.csdn.net/tianlesoftware/article/details/5543166 https://www.cnblogs.com/guilingya ...

  6. oracle监听动态注册与静态注册

    client端如果想要连接到远程的数据库服务器,首先数据库服务器必须启动监听器 oracle监听器的配置在$ORACLE_HOME/network/admin/listener.ora,打开这个文件, ...

  7. Oracle监听的静态注册和动态注册

    静态注册:通过解析listene.ora文件 动态注册:由PMON进程动态注册至监听中 在没有listener.ora配置文件的情况下,如果启动监听,则监听为动态注册.用图形化netca创建的监听,默 ...

  8. Oracle 监听动态注册与静态注册

    静态注册 静态注册是在启动listener时,listener会从listener.ora文件中获取服务名及相关信息.信息包括:实例名和服务名等. --静态注册时,listener.ora中的内容如下 ...

  9. ORACLE 动态注册和静态注册的区别(转)

    1, oracle 10g 用netca方式建立的都默认为动态注册方式2,如果想改为静态注册的方式则在listener.ora 中加入如下内容即可 SID_LIST_LISTENER = (SID_L ...

随机推荐

  1. Android ExpandableListView的技巧和问题

    前言: 最近一个多月在认真的学习Android和做项目,文章内容表达的不好或者理解错了,希望大家评论指出. :-) 本文是总结几个比较常用且使用的技巧,和一个大家都会遇到的问题. 文章中大部分语句摘抄 ...

  2. obj 转为Json 时间格式自定义

    var tb = evnWarningBll.GatWarning();             var  timeFormat = new IsoDateTimeConverter();       ...

  3. delphi xe5 android tts(Text To Speech)

    TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话. 以下代码实现xe5 开发的文本转语音的方法 和访问蓝牙一样,这里用javaclass的接口实现 接 ...

  4. ActiveMQ(5.10.0) - Configuring the JAAS Authentication Plug-in

    JAAS provides pluggable authentication, which means ActiveMQ will use the same authentication API re ...

  5. 获取登录的IP或者信息

    这是转载的,也不想去检查性能,对于这些成熟的代码,发在这里完全是懒,仅此而已! 1.获取客户端IP /// <summary> /// 获取客户端Ip /// </summary&g ...

  6. 北大ACM(POJ1753-Flip Game)

    Question:http://poj.org/problem?id=1753 问题点:穷举. #include <iostream> using namespace std; ][];/ ...

  7. 第三十三篇、富文本 NSMutableAttributedString

    // 设置颜色等 NSMutableDictionary *arrDic = [NSMutableDictionary dictionary]; arrDic[NSForegroundColorAtt ...

  8. C# 数据结构--单链表

    什么是单链表 这两天看到很多有关单链表的面试题,对单链表都不知道是啥的我.经过学习和整理来分享一下啥是单链表和单链表的一些基本使用方法.最后看些网上有关单链表的面试题代码实例. 啥是单链表? 单链表是 ...

  9. 【转】Newtonsoft.Json 的序列化与反序列化

    http://www.cnblogs.com/08shiyan/p/3464028.html 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Fr ...

  10. C# WinForm打开IE浏览器并访问网址

    C# WinForm 打开浏览器并访问网址代码: System.Diagnostics.Process.Start("iexplore.exe", "http://kel ...