ITPub博客

Oracle的service功能简介

Oracle 作者:烟花丶易冷 时间:2018-06-11 18:03:58 0 删除 编辑

Service 是连接oracle的一种方式。而且可以通过service 将不同的连接区分开来。例如,为不同的部门、业务创建不同的service,从而可以将连接映射到不同的服务器上(集群环境)以进行区分。从而也能看出service具有高可用性和负载均衡性。而且通过DRM(资源管理器)可以为不同的service分配不同的资源。

实验环境:

     11.2.0.4 双节点RAC,系统为redhat 6.4

    NODE1VIP192.168.17.177

    NODE2VIP 192.168.17.166

   SCANIP192.168.17.100

一、一 service的创建:

创建一个为名为 mgrser service ,优先连接racdb2 racdb2 不可用时连接racdb1,管理策略为automaticFailover方式为basicFailover type session

[oracle@NODE2 ~]$ srvctl add service  -d  racdb -s  mgrser -r racdb2 -a racdb1 -y  automatic -m basic  -e  session -z 3 -w 10


查看资源状态:

[grid@NODE2 ~]$ crsctl  status  res  -t

发现创建完mgrser后,会有对应的资源ora.racdb.mgrser.svc,只是现在为离线状态。


查看service的状态:为not running

启动service

[oracle@NODE2 ~]$ srvctl start service -d  racdb  -s mgrser

查看service的状态:发现在racdb2running。因为我们指定的优先实例为racdb2

查看资源状态:

[grid@NODE2 ~]$ crsctl  status  res  -t

发现资源ora.racdb.mgrser.svc现在为online状态,且在node2上。

 

三、二 使用service

tnsnames.ora 中配置连接串,指定service_name = mgrser

manager1=

  (description =

     (address = (protocol = tcp)(host = 192.168.17.100)(port = 1521))

     (connect_data =

   (server = dedicated)

   (service_name = mgrser)

   ))

manager2=

  (description =

     (address = (protocol = tcp)(host = 192.168.17.177)(port = 1521))

     (address = (protocol = tcp)(host = 192.168.17.166)(port = 1521))

   (failover= on)

     (connect_data =

   (service_name = mgrser)

   ))

两个节点均配置。tnsping保证ping通。

使用连接串manager1连接数据库:sqlplus lpfei/lpf@manager1

NODE1上:

 

NODE2上:

发现均优先连接racdb2,使用连接串manager2连接数据库也是优先连接到racdb2.

四、三 racdb2实例关闭

查看mgrser status,自动切换到racdb1

检查资源状态,ora.racdb.mgrser.svc也自动切换到racdb1

使用连接串manager1连接数据库:sqlplus lpfei/lpf@manager1

连接到racdb1

五、四 Open 实例racdb2

racdb2开启后mgrser依然在racdb1上运行,不会自动切换为racdb2,尽管racdb2为优先实例,但是racdb2宕掉后,服务会自动切换到racdb1(如四的实验)。

  若要恢复mgrserracdb2上需执行reload

[oracle@NODE2 ~]$ srvctl  relocate  service -d  racdb   -s  mgrser  -i racdb1 -t racdb2



六、注意:创建的mgrse 会被注册到监听器上,但是只注册到正在running的实例监听上。
这一点很重要因为在优先实例(如racdb2)宕掉以后,所有的原先连接在racdb2上的连接全都会连接到racdb1上,这是应该的,也是必须的。
但是当racdb2回复后,所有通过服务名为mgrser的连接不会自动切换到racdb2,这有可能会造成racdb1的负载过高。当不知道因为创建service造成时这种现象时,
很可能会以为问题出现在监听器上,有可能会手动添加服务(如:alter system set service_names='mgrser' scope=spfile;)切记这样操作不可行。必须执行reload才行,
或将所有实例都指定为优先组(这样做似乎没有意义了)。

节点二的监听状况:

 

节点一的监听状况:

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29618264/viewspace-2155974/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-04-20

  • 博文量
    135
  • 访问量
    165131