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

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.dtcms.com/a/325449.html

相关文章:

  • 投资光伏怕成本超标?鹧鸪云系统配置最优方案
  • 微算法科技(NASDAQ:MLGO)通过蚁群算法求解资源分配的全局最优解,实现低能耗的区块链资源分配
  • 【深度学习计算性能】03:自动并行
  • Apache Ignite 生产级的线程池关闭工具方法揭秘
  • 【C++】封装哈希表模拟实现unordered_set和unordered_map
  • 【10】微网优联——微网优联 嵌入式技术一面,校招,面试问答记录
  • 【Linux让旧电脑重获新生的奇妙魔法】
  • 【k8s】k8s安装与集群部署脚本
  • Godot ------ 平滑拖动03
  • 量子神经网络:从NISQ困境到逻辑比特革命的破局之路
  • Day 37:早停策略和模型权重的保存
  • C语言指针(四):字符指针、数组指针与函数指针的实战指南
  • Unity大型场景性能优化全攻略:PC与安卓端深度实践 - 场景管理、渲染优化、资源调度 C#
  • 在Mac 上生成GitLab 的SSH 密钥并将其添加到GitLab
  • 在 .NET Core 5.0 中启用 Gzip 压缩
  • AI时代基于云原生的 CI/CD 基础设施 Tekton
  • Redis Sentinel 中 `sentinel resolve-hostnames yes` 的必要性解析
  • C#图形库SciChart与ScottPlot及LiveCharts2对比
  • Linux客户端利用MinIO对服务器数据进行同步
  • 掌握while循环:C语言编程基础
  • Unity跨平台性能优化全攻略:PC与安卓端深度优化指南 - CPU、GPU、内存优化 实战案例C#
  • 《番外:Veda的备份,在某个未联网的旧服务器中苏醒……》
  • 扩展运算符...作用介绍
  • 关系型数据库:原理、演进与生态全景——从理论基石到云原生的深度巡礼
  • 国内 Mac 开启 Apple Intelligence 教程
  • 深入浅出JVM:Java虚拟机的探秘之旅
  • 第2节 PyTorch加载数据
  • 关系操作符详解与避坑指南
  • 软件编程2-标准IO
  • Maxscript实现在物体表面均匀散布的4种主流算法