oracle net service相关概念

数据库service和数据库实例

数据库服务,下面显示了2个数据,每一个数据有自己的数据库服务。一个服务 sales.us.acme.com能让销售访问销售数据库,另一个服务,finance.us.acme.com能让财务分析人员访问财务数据库

图例

服务名字被初始化参数service_name指定,服务的名字默认是全局数据库名,这个名字包含了数据库名和 域名。在sales.us.acme.com这个例子中,sales是数据库名,us.acme.com是域名。数据库可以有多个服务,下面的例子中,一个数据库有2个不同的服务,一个是book.us.acme.com,另外一个是soft.uf.acme.com.

图例

一个数据库有多个服务有下面的功能:

1一个数据库对不同的客户有不同的用途

2数据库管理员可以限制或是保留系统资源。这个级别的控制能更好的分配资源给客户。

服务的访问

为了连接到数据库的服务,客户使用连接描述符,这个连接符提供了数据库的位置和数据库服务的名字。下面的例子显示了一个连接符能够让客户连接到数据库上一个叫sales.us.acme.com的服务上。

(DESCRIPTION=   (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))  (CONNECT_DATA=    (SERVICE_NAME=sales.us.acme.com)))

连接描述符的地址部分其实是监听的协议地址。为了连接到数据库服务,客户端先连接到监听器进程,监听器接受传入的客户端连接请求,把这些请求发送到数据库服务端。一旦连接建立了,客户端和数据库服务端就直接通信了。

连接描述符指定了想要建立连接的数据库服务名。监听器知道他能处理的连接的服务,因为数据库动态注册这个服务信息到监听器中。这个注册的动作叫做服务注册。他也提供数据库实例和实例上可用的服务处理器的信息给监听。服务处理器就是连接数据库server的连接点。一个服务处理器可以是dispatcher或是专用server。

如果要连接到数据库的指定的实例上去,客户也可以在连接描述符中指定instance_name,这个特色对于rac环境很有帮助,下面的连接描述符指定了与服务sales.us.acme.com相关的实例sales1.

(DESCRIPTION=
  (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
  (CONNECT_DATA=
    (SERVICE_NAME=sales.us.acme.com)
    (INSTANCE_NAME=sales1)))

 有时候,客户端想要使用特别的服务处理器,下面的例子中,一个连接描述符配置使用共享server的dispatcher

(DESCRIPTION=
  (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
  (CONNECT_DATA=
    (SERVICE_NAME=sales.us.acme.com)
     (SERVER=shared)))

 如果客户端想要使用专用server,那么可以指定server=dedicated,如果server参数没有被设置,那么就假设是使用的共享server,然而,如果没有dispatcher可以使用,那么客户端将会使用专用server。

当监听器接受到客户的请求,它选择一个之前注册了的服务处理器,依赖于选择的处理器的类型,通信协议的选择,和数据库服务所在的操作系统,监听器做下面其中的一个动作;

1将连接请求直接分给dispatcher

2发送dispachter和专用server的重定向的信息给客户端,然后客户端直接连接diapacher或专用服务器进程。

3生成一个专用服务器进程,并传递客户端的连接给专用服务器。

使用多个监听加强服务的访问性

一些配置,像是rac,在多节点上的多监听可以配置来处理客户请求对相同的服务。下面的例子中,可以使用sales1-server或sales2-server上的监听来连接sales.us.acme.com

(DESCRIPTION=
  (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521))
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)))
  (CONNECT_DATA=
    (SERVICE_NAME=sales.us.acme.com)))

 

多监听配置可以让你有下面的故障转移和负载平衡功能:1连接时故障转移 2透明应用程序故障转移3客户端的负载均衡4运行时连接负载均衡

连接时故障转移

如果在初始连接第一个监听失败的时候能够 连接都别的监听上去。监听协议地址的数量决定了有多少监听被尝试,没有连接时故障转移,oracle net只使用一个监听来尝试连结。

透明程序 故障转移

taf是为高可用环境的运行时故障转移,像是rac,taf重新连接 程序到服务的连接。可以让客户应用程序在连接失败了的时候自动重新连接数据库,回复当时在运行的select语句。

客户负载均衡

客户端的负载均衡能让客户端在监听中随机的连接。在不同的监听上负载均衡。没有客户端负载均衡,oracle net进程会在地址列表中顺序的访问直到一个成功的为止。

运行时负载均衡

在多dispatcher的环境中,该特色均衡了活动连接的数量。在单实例中,监听器选择负载最低的dispatcr来处理客户端的请求,在rac环境中,运行时的负载均衡能够平衡多个实例的活动连接数量。

由于动态服务注册,一个监听器总是知道所有的实例和dispatcher,不管他们的位置在哪。依赖于负载的信息,监听器决定哪个实例胡哪个dispacher被发送客户的请求。

在共享服务配置中,监听按下面的顺序来选择一个dispatcher

1负载最小的节点

2负载最小的实例

3那个实例上负载最小的dispatcher

在专用server配置中,监听器按下面的顺序选择实例

1负载最小的节点

2负载最小的实例

服务处理器

dispatcher

在共享服务架构中,使用一个dispatcher来处理讲客户的连接导向到普通的请求队列中,共享server池中一个空闲的共享server在队列中取出一个请求,这种方法能够使用一个小的server池来处理大量的客户请求。共享server模式比专用server模式的一个明显的优点就是,共享模式减少了系统资源。监听器使用dispatcher作为服务处理器,来转发客户请求,当一个请求过来时,监听器做下面的动作;

1讲连接请求转到dispatcher

2返回给客户一个重定向的信息,该信息包含了dispatcher的地址,客户端然后终端和监听的网络回话,然后建立和dispacher的连接。

 

监听器尽可能使用直接转发,但是当dispacher对监听是远程的时候,就使用重定向

直接转发:

1监听器接受客户的请求

2监听器直接把请求发给dispacher

3客户端直接连接dispacher

重定向连接:

1监听接受dispacher

2监听提供dispacher的地址,返回给客户重定向的信息

3客户端使用重定向的信息连接dispacher

专用服务 器模式

专用服务器模式中,监听在接受到客户端请求后开始,为了完成客户服务的连接,下面中的一个动作发生:

1专用服务器继承在监听的连接请求

2专用服务器告诉监听器它的监听协议地址,监听器传递协议地址到客户端,给客户端一个重定向信息结束连接,客户端使用重定向地址直接连接专用服务器。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值