当前位置: 首页 > backend >正文

Oracle 19C 配置TAF

Oracle 19C 配置TAF

  • 一、客户端配置TAF
  • 二、数据库服务端TAF配置
  • 三、服务切换测试
  • 四、Oracle用户查看服务

一、客户端配置TAF

示例:

##在客户端tnsnames.ora文件中添加如下配置:
Lemon =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.127.104)(PORT = 1521))(CONNECT_DATA =(SERVER=DEDICATED)(SERVICE_NAME = mesdb)(FAILOVER_MODE=(TYPE=session)(METHOD=basic)(RETRIES=180)(DELAY=5))))

选项含义解释:

  1. TYPE:故障转移类型。定义故障转移后会话的重建方式。
选项含义
session会话级故障转移(常用):
- 连接中断时,在备用节点重建新会话。
- 用户需重新执行未提交的事务(SELECT查询自动恢复)。
select查询级故障转移(高级):
- 在游标打开期间发生故障,自动在新节点恢复结果集。
- 限制:仅支持SELECT,且游标需以WITH HOLD方式打开(如JDBC ResultSet.HOLD_CURSORS_OVER_COMMIT)。
none禁用故障转移(默认值)。

推荐:普通应用用session;只读报表系统可尝试select(需应用适配游标)。


  1. METHOD:故障转移触发方式。定义何时建立到备用节点的连接。
选项含义
basic被动等待故障(默认):
- 主节点故障后才尝试连接备用节点。
- 优点:节省资源。
- 缺点:切换延迟较高(需重建TCP连接)。
preconnect预先连接备用节点
- 初次连接时同时连接主备节点(备用节点待命)。
- 优点:故障转移秒级完成(会话状态提前同步)。
- 缺点:双倍连接数消耗资源。

推荐:高延迟敏感系统用preconnect(评估资源开销);普通场景用basic


  1. RETRIES:重试次数
参数含义默认值
RETRIES连接失败后的最大重试次数(整数)。5

  1. DELAY:重试间隔
参数含义默认值
DELAY每次重试的间隔时间(秒)。1

重试行为: 客户端每间隔DELAY秒重试一次,最多尝试RETRIES次。
示例:(RETRIES=180, DELAY=5) → 每5秒重试一次,持续15分钟(180×5=900秒)。

⚠️ 注意

  • RETRIES=0或未设置,则不会重试(立即报错)。
  • 过长重试可能导致应用线程阻塞,需结合应用超时机制使用。

在这里插入图片描述

点击跳转,可见官方文档说明

二、数据库服务端TAF配置

示例:

##Oracle-11G
1)添加SERVICE--oratest
srvctl add service -d lemon -s oratest -r lemon1 -a lemon2 -P basic -e session -w 5 -z 3 -y automatic##语法说明:
-d:数据库名称
-s:新创建的service名称
-r:首选节点列表
-a:备用节点列表
-P:TAF策略
-e:TAF类型
-z:在failover之前重新尝试连接的次数
-w:在failover之前两次尝试连接的时间间隔
-y:是否自动启动2)启动SERVICE(添加完成后需手动启动)
srvctl start service -d lemon -s oratest
3)检查SERVICE信息
srvctl config service -d lemon -s oratest
4)停止SERVICE
srvctl stop service -d lemon -s oratest
5)移除SERVICE
srvctl remove service -d lemon -s oratest
##Oracle-19C
创建语法:
srvctl add service -database db_unique_name -service service_name_list
[-pdb pluggable_database] [-eval]
[-preferred preferred_list] [-available available_list] [-failback {YES | NO}]
[-netnum network_number] [-tafpolicy {BASIC | NONE}]
[-edition edition_name]
[-role "[PRIMARY][,PHYSICAL_STANDBY][,LOGICAL_STANDBY][,SNAPSHOT_STANDBY]"
[-policy {AUTOMATIC | MANUAL}] [-notification {TRUE | FALSE}]
[-clbgoal {SHORT | LONG}] [-failovertype {NONE|SESSION|SELECT|TRANSACTION|AUTO}]
[-rlbgoal {NONE | SERVICE_TIME | THROUGHPUT}] [-dtp {TRUE | FALSE}]
[-failovermethod {NONE | BASIC}] [-failoverretry failover_retries]
[-drain_timeout timeout] [-stopoption {NONE|IMMEDIATE|TRANSACTIONAL}]
[-failover_restore {NONE|LEVEL1|AUTO}] [-failoverdelay failover_delay]
[-sql_translation_profile sql_translation_profile]
[-global {TRUE | FALSE}] [-maxlag max_lag_time] [-commit_outcome {TRUE|FALSE}]
[-retention retention_time] [-replay_init_time replay_initiation_time]
[-session_state {STATIC|DYNAMIC|AUTO}] [-force] [-verbose]创建示例:1)添加SERVICE--oratest
srvctl add service -db lemon -service oratest -preferred "lemon1" -available "lemon2" -tafpolicy basic -failovertype SESSION -failoverdelay 5 -failoverretry 3 -policy AUTOMATIC2)启动SERVICE(添加完成后需手动启动)
srvctl start service -d lemon -s oratest
3)检查SERVICE信息
srvctl config service -d lemon -s oratest
5)停止SERVICE
srvctl stop service -d lemon -s oratest
5)移除SERVICE
srvctl remove service -d lemon -s oratest

虽然第一部分是11G的语法,但是在19C环境测试也是一样可以添加成功!!

在这里插入图片描述

点击跳转,可见官方文档说明

另附所有的参数详解

ParameterDescription
-db db_unique_nameUnique name for the database.
-service service_name_listUnique service name(s) within the cluster (comma-delimited). DB_DOMAIN appended if no domain specified. 4KB total length limit for all service names.
-evalHypothetically evaluate command impact (only for policy-managed services).
-edition edition_nameInitial session edition for connections (SRVCTL does not validate; user requires USE privilege).
-sql_translation_profile profile_nameSpecify SQL translation profile for migrated non-Oracle applications (use srvctl config service to view).
-preferred preferred_listPreferred instances for administrator-managed databases (mutually exclusive with -available; Oracle RAC only).
-available available_listFailover instances for administrator-managed databases (mutually exclusive with -preferred; Oracle RAC only).
-failback {YES | NO}Automatically fail back to preferred instances when available after failover.
-serverpool server_poolServer pool name for policy-managed databases (Oracle RAC only).
-cardinality {UNIFORM | SINGLETON}Service cardinality: UNIFORM (all instances) or SINGLETON (one instance). Policy-managed/Oracle RAC One Node only.
-netnum network_numberNetwork number for service VIP dependency (default from -defaultnetwork database config; Oracle RAC/RAC One Node only).
-tafpolicy {BASIC | NONE}TAF policy specification (administrator-managed databases only).
-role "[PRIMARY][,PHYSICAL_STANDBY][,LOGICAL_STANDBY][,SNAPSHOT_STANDBY]"Service role(s) for automatic startup (matches Data Guard role; manual start unaffected).
-policy {AUTOMATIC | MANUAL}Service restart policy: AUTOMATIC (default, subject to role) or MANUAL (never auto-restarts).
-notification {TRUE | FALSE}Enable Fast Application Notification (FAN) for OCI connections.
-rfpool pool_nameReader farm server pool name.
-dtp {TRUE | FALSE}Enable Distributed Transaction Processing (Oracle RAC only; requires singleton/preferred single-node service).
-clbgoal {SHORT | LONG}Connection Load Balancing Goal: SHORT (runtime/integrated pools) or LONG (long-running sessions).
-rlbgoal {NONE | SERVICE_TIME | THROUGHPUT}Runtime Load Balancing Goal: SERVICE_TIME (response time) or THROUGHPUT (throughput).
-failovertype {NONE | SESSION | SELECT | TRANSACTION | AUTO}Failover type: TRANSACTION (Application Continuity), AUTO (Transparent App Continuity), SELECT/SESSION (TAF).
-failovermethod {NONE | BASIC}TAF failover method (backward compatibility; Oracle RAC only).
-failoverretry failover_retriesConnection attempts after incident (Application Continuity/TAF).
-drain_timeout timeoutTime (seconds) for resource draining during maintenance (default: unset; 0 = immediate).
-stopoption {NONE | IMMEDIATE | TRANSACTIONAL}Service stop mode: IMMEDIATE (drain sessions), TRANSACTIONAL (drain + timeout terminate). Requires -force.
-failover_restore {NONE | LEVEL1 | AUTO}Session state restore: LEVEL1 (AC/TAF), AUTO (Transparent AC).
-failoverdelay failover_delayDelay (seconds) between reconnect attempts (Application Continuity/TAF).
-gsmflags gsm_flagsSet locality/region failover values.
-pdb pluggable_databaseAssociate service with a PDB (SRVCTL does not validate PDB existence).
-global {TRUE | FALSE}Indicate Global Data Services service (GDS only).
-maxlag maximum_lag_timeMaximum replication lag (seconds; default: ANY).
-commit_outcome {TRUE | FALSE}Enable Transaction Guard (commit outcome tracking). Required for -failovertype TRANSACTION.
-retention retention_timeCommit outcome retention time (seconds) if -commit_outcome TRUE.
-replay_init_time replay_initialization_timeMax time difference (seconds) for replay readiness (Application Continuity; default: 300).
-session_state {STATIC | DYNAMIC | AUTO}Non-transactional session state handling for AC/TAC. Requires -failovertype TRANSACTION/AUTO.
-pqservice pq_serviceParallel query service name.
-pqpool pq_poolParallel query server pool.
-update {-preferred new_preferred_instance | -available new_available_instance}Add instance to preferred/available lists.
-css_critical {yes | no}Weight service as critical for node eviction priority (administrator-managed only).
-verboseDisplay verbose output.
-forceForce operation without listener configuration.

添加完成

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

⚠️ 注意

  • 服务端创建成功后,客户端需要更新tns信息,用新的service连接:

三、服务切换测试

关闭节点一集群服务:

[root@lemon01 ~]# /u01/app/19.3.0/grid/bin/crsctl stop cluster -n lemon01

在这里插入图片描述

服务切换至节点二:
在这里插入图片描述
开启节点一集群服务:

[root@lemon01 ~]# /u01/app/19.3.0/grid/bin/crsctl start cluster -n lemon01

在这里插入图片描述

关闭节点二集群后,服务又在节点一online:

在这里插入图片描述

四、Oracle用户查看服务

##在数据库中查询配置的oratest的服务的详细信息
col name for a20
col FAILOVER_METHOD for a20
col FAILOVER_TYPE for a20
select SERVICE_ID,NAME,CREATION_DATE,FAILOVER_METHOD,FAILOVER_TYPE,FAILOVER_RETRIES,FAILOVER_DELAY,goal,clb_goal,aq_ha_notifications from dba_services where NAME='oratest';

在这里插入图片描述

##查看RAC环境中所有可被客户端连接的有效服务的相关信息
set line 222 pages 2222 
col NETWORK_NAME for a30
col name for a18
col NETWORK_NAME for a30
col SESSION_STATE_CONSISTENCY for a30
col FAILOVER_RESTORE for a15
select inst_id,SERVICE_ID,NAME,NETWORK_NAME,CREATION_DATE,GOAL,GLOBAL,SESSION_STATE_CONSISTENCY,FAILOVER_RESTORE from gv$services where NETWORK_NAME is not null and NAME not like '%XDB';

在这里插入图片描述

http://www.xdnf.cn/news/17516.html

相关文章:

  • CLIP,BLIP,SigLIP技术详解
  • 分治-归并-912.排序数组-力扣(LeetCode)
  • 机器学习——K-means聚类
  • IPCP(IP Control Protocol,IP控制协议)
  • Apache Ignite 生产级的线程池关闭工具方法揭秘
  • 【运维进阶】LAMPLNMP 最佳实践
  • 疯狂星期四文案网第36天运营日记
  • WNZ-20转速扭矩试验台
  • PHP request文件封装
  • 小杰python高级(three day)——matplotlib库
  • ESP32 配合上位机串口打印数据
  • Python面试题及详细答案150道(41-55) -- 面向对象编程篇
  • linux安装和使用git
  • CVE-2019-0708复刻
  • SpringBoot 实现 Excel 导入导出功能的三种实现方式
  • [激光原理与应用-240]:光学器件 - 变形镜,波前校正器
  • 数据结构:树与二叉树
  • python之浅拷贝深拷贝
  • Java Selenium 自动打开浏览器保存截图
  • DevExpress ASP.NET Web Forms v25.1新版本开发环境配置要求
  • 操作系统1.5:操作系统引导
  • OpenHarmony概述与使用
  • ttyd终端工具移植到OpenHarmony
  • 大模型工程问题
  • 用vscode 里docker显示不出有容器和镜像 ?
  • [Shell编程] Shell 编程之免交互
  • 华为watch5心率变异性测量法的底层逻辑
  • Docker部署MySQL完整指南:从入门到实践
  • MyBatis插件开发与扩展:从原理到实战的完整指南
  • 阿里发布数字人模型echomimic_v3,在视频合成的基础上支持prompt输入~