创建非默认Service Name及客户端连接设置

作者简介:张世强,现就职于北京海天起点,Exadata部门成员,持有11gOCP、Exadata、Goldengate、RHCE7认证,拥有4年的电力、电信行业数据库维护经验,擅长goldengate,数据库性能优化及问题处理。

背景

在一些大型的复杂的多节点RAC混合系统中,既有联机事务处理应用(OLTP),又有相关报表查询分析类应用(OLAP)。由于2种业务类型差异,客户端在连接配置中如果采用均衡负载方式,在业务高峰期,由于跨节点热块争用,有可能出现严重的Global Cache(GC)等待事件。

在这种情况下,为避免出现大量的GC等待,客户端连接配置不应采用负载均衡方式,而应按应用配置连接到特定实例,同时还应做到故障切换。可通过创建非默认service name,并在该service中指定连接实例的优先级和failover属性,在客户端连接配置或中间件数据源中指定该service name,这样既能实现客户端连接到特定的实例,又能保证在数据库节点发生宕机或宕库的情况时,数据库服务会自动切换,以保证应用能够继续连接。

实施步骤

新建非默认服务名

创建非默认服务名可使用dbca工具和命令行2中方式,以下我们使用命令行方式进行演示。

使用srvctl add service命令新建非默认服务名,注意srvctl是oracle用户所属Oracle Home目录下的,不是CRS Home目录下的。

以下为各个参数解释
-d 指定数据库的Unique name
-s 指定新建的数据库服务名
-r 首选实例(preferred instances),会优先选择该实例提供服务
-a 备用实例(available instances),用户连接会优先连接Preferred的实例,当Preferred的实例不可用时,才会跳转到Available的实例上
-m 指定Failover method
-P 指定TAF policy,有BASIC 和PRECONNECT 两种
-e 指定Failover type, 当选择SELECT时,单纯的 select 操作在利用 TAF 实现 Failover 后是可以从中断的地方继续往下执行的
-w 指定Failover delay 时间
-z 指定Failover retries次数通过以上命令,使用basic TAF policy去创建一个名为crmservice1的service,该服务优先运行在实例test1上,当数据库节点发生宕机情况时,数据库服务会自动切换实例test2。

该命令完成后将自动修改数据库中参数service_name,并且使用下面语句查询将看到新的service已经创建

启动新建服务资源

查看该资源状态

查看service相关属性

修改客户端连接串到新的service

在客户端的tnsnames.ora文件中增加新的service

或在中间件数据源连接串中设置

通过以上操作,既能实现客户端连接到特定的实例,又能保证在数据库节点发生宕机或宕库的情况时,数据库服务会自动切换,以保证应用的连续性。

未经允许不得转载:Oracle一体机用户组 » 创建非默认Service Name及客户端连接设置

相关推荐