Chinaunix首页 | 论坛 | 博客
  • 博客访问: 151292
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-31 21:58
文章分类

全部博文(30)

文章存档

2015年(1)

2014年(18)

2013年(11)

我的朋友

分类: Oracle

2013-08-01 10:11:11

什么是注册?

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

  在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务(无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务。) 相当于是这样:在数据库服务器和客户端之间有一监听程序(Listener),在监听程序中,会记录相应数据库对应的服务名(一个数据库可能对应有多个服务名),当客户端需要连接数据库时,只需要提供服务名,就可以建立客户端和服务器之间的连接。

 

静态注册

只通过listener.ora来配置,可以在这里为一个实例配置多个对外的服务名

图形化界面配置静态注册

1、如下图先要配置监护的位置,再指明数据库服务

   

2、在listener.ora中效果如下

   

 从这里可以看出静态注册也可以改变端口,只需要改变一下端口,然后重启监听的进程即可,这样新添加的端口就打开了。

 可选择的是,您可以在service_names参数中指定多个服务值,值之间用逗号格开,这样我们就可以在客户端设置SID就随心所欲了。这对于共享服务器配置是很有用的。

      

 

动态注册即没有在上图中配置数据库服务,只配置了监听位置

   在instance启动的时候PMON进程根据init.ora中的instance_name,service_names两个参数将实例和服务动态注册到listener中。 如果采用动态注册,当监护后于实例启动,

   就会导致PMON监听注册失败(过1分钟左右PMON才会继续注册),导致客户端无法连接。通过lsnrctl status会看到提示The listener supports no services

   此时我们可以用ALTER SYSTEM REGISTER 手动注册

     

  动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),如果需要向非默认监听注册,则需要配置local_listener参数!

    首先 alter system set local_listener='(address=(protocol=tcp)(port=1522)(host=linan))'

        alter system set local_listener=T

    再在tnsname.ora文件中添加 

T =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = wms)(PORT = 1522))

    )

    #(CONNECT_DATA =                    -----这里有用的就是上面的HOSTPORT这一块的信息没用

    #  (SERVICE_NAME = orcl11g)

    #)

  )

再修改listener.ora文件添加

        LISTENER =

           (DESCRIPTION_LIST =

              (DESCRIPTION =

                 (ADDRESS = (PROTOCOL = TCP)(HOST = wms)(PORT = 1522))

               )

            )

最后,重启监听,重启该实例,保证注册监听成功。这样服务器就只能监听1522这个端口了,连接1521会被拒绝:Linux Error: 111: Connection refused

---------------------------------------

   实例状态为UNKNOWN值时表明此服务是静态注册的设置。这时监听器用来表明它不知道关于该实例的任何信息,只有当客户发出连接请求时,它才检查该实例是否存在。

  动态注册的数据库通过状态信息中的状态READY或状态BLOCKED(对于一个备用数据库)来指明。不管关闭何时数据库,动态注册的数据库都会动态地从 监听器注销,而与之相关的信息将从状态列表中消失。这样,不管数据库是在运行还是已经关闭,监听器总是知道它的状态。该信息将被用于连接请求的回退 (fallback)和负载平衡

阅读(1192) | 评论(0) | 转发(0) |
0

上一篇:Oracle的Resumable特性

下一篇:闪回七大功能

给主人留下些什么吧!~~