Oracle rac 资源,Oracle RAC Service资源管理

Service资源

每个数据库都有一个或多个service名称,service名称是提供给客户端连接到数据库实例的名称。

创建数据库会默认创建与数据库同名的service,默认的service实现所有实例的负载均衡,可以认为数据库的所有实例是默认创建的service的首选节点。

手工创建的service资源区分首选节点与备用节点,客户端无论通过哪个节点请求连接都会固定连接到service资源的首选节点,只有当首选节点故障才会连接到备用节点。

TAF(Transparent Application Failover):对于已经连接到数据库的客户端连接(会话),当前连接的数据库实例出现问题时,将已经存在的数据库连接透明地迁移到其他数据库实例中。对应的连接可能在实例出现问题之前已经执行了一些操作,或者在实例出现问题时正在执行某个操作,所以在failover到新实例的时候需要对执行过的操作和正在执行的操作进行相应的处理。

TAF目前可以实现:

使用相同数据库用户在正常实例中创建一个会话。

在原有服务出现问题之前已经执行过的操作不会被重复执行。

对于正在执行的操作,如果是select语句,failover后会继续执行,但是对DML语句,会被自动回滚,用户需要重新执行。

如果用户执行了一些PL/SQL程序,和PL/SQL程序相关的信息在failover后也不会保留。

TAF的策略

basic:只与首选节点实例创建连接,在发生failover的时候才与备用节点实例创建连接。

preconnect:在与首选节点实例创建连接的同时与备用节点实例也创建连接。

TAF的类型

session:在failover发生后,新的连接被创建到正常实例,问题出现时正在运行的操作不会被继续执行。

select:在failover发生后,新的连接被创建到正常实例,问题出现时正在运行的select语句会被继续执行。

none:不会发生failover(禁用TAF)

TAF仅支持使用OCI方式连接到数据库的会话,不支持使用JDBC方式连接到数据库的会话。

创建Service资源

[root@linuxmi01 ~]# su - Oracle

[oracle@linuxmi01 ~]$ srvctl add service -d linuxmi -s zt -r linuxmi1 -a king2 -P basic -e session -w 5 -z 3 -y automatic

-d:数据库名称

-s:新创建的service名称

-r:首选节点列表

-a:备用节点列表

-P:TAF策略

-e:TAF类型

-z:在failover之前重新尝试连接的次数

-w:在failover之前两次尝试连接的时间间隔

-y:是否自动启动

查询Service资源属性

[oracle@linuxmi01 ~]$ srvctl config service -d linuxmi -s zt

Service name: zt

Service is enabled

Server pool: linuxmi_zt

Cardinality: 1

Disconnect: false

Service role: PRIMARY

Management policy: AUTOMATIC

DTP transaction: false

AQ HA notifications: false

Failover type: SESSION

Failover method: NONE

TAF failover retries: 3

TAF failover delay: 5

Connection Load Balancing Goal: LONG

Runtime Load Balancing Goal: NONE

TAF policy specification: BASIC

Edition:

Preferred instances: linuxmi1

Available instances: linuxmi2

查询Service资源状态

[oracle@linuxmi01 ~]$ srvctl status service -d linuxmi

Service zt is not running.

启动Service资源

[oracle@linuxmi01 ~]$ srvctl start service -d linuxmi -s zt

[oracle@linuxmi01 ~]$ srvctl status service -d linuxmi

Service zt is running on instance(s) linuxmi1

验证TAF

查询GV$SESSION视图可以验证连接成功的会话是否具备failover的能力,如果会话相应的failover_type和failover_method字段为空,证明此会话不具备failover的能力。

[root@linuxmi01 ~]# su - oracle

[oracle@linuxmi01 ~]$ sqlplus / as sysdba

SQL> col username for a20

SQL> col failed_over for a15

SQL> select inst_id,username,failover_type,failover_method,failed_over from gv$session where username = 'TPCC';

INST_ID USERNAME            FAILOVER_TYPE                          FAILOVER_METHOD                FAILED_OVER

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

1 TPCC                  SESSION                                BASIC                          NO

重启节点一,数据库连接failover到节点二

[root@linuxmi02 ~]# su - oracle

[oracle@linuxmi02 ~]$ sqlplus / as sysdba

SQL> select inst_id,username,failover_type,failover_method,failed_over from gv$session where username = 'TPCC';

INST_ID USERNAME            FAILOVER_TYPE                          FAILOVER_METHOD                FAILED_OVER

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

2 TPCC                  SESSION                                BASIC                          YES

0b1331709591d260c1c78e86d0c51c18.png

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值