12C新特性--Application Continuity
Application Continuity特性可以在中断后恢复受影响的数据库会话的任务,从而让终端用户和应用程序感觉不到中断的发生。Application Continuity执行恢复的过程是在应用程序的下层,因此中断发生后,应用程序只会表现为轻微的延迟。
这样,在计划内中断、或异常中断时,Application Continuity可以提高用户的使用体验,增强系统、应用的容错性。
在12CR2中,Application Continuity支持java、oci、odp.net应用。
当发生可恢复错误的时候,数据库会发送恢复请求,收到请求后,Application Continuity会以温和的、非破坏性的方式replay会话请求。请求可以包含事务型、非事务型调用,也可以是在客户端、中间层本地的调用。在replay成功之后,应用从数据库会话中断的时候继续执行,终端用户不会被挂起,可以继续执行操作。管理员也不用介入。
当然,对于不可恢复的错误,比如遇到无效的输入数据、或者其他限制,Application Continuity就不能起作用了。
1.未使用Application Continuity
2.使用Application Continuity后
12C中,Application Continuity支持以下的client端和server端:
1.client端
» Oracle JDBC Replay Driver 12c or later. This is a JDBC driver feature provided with Oracle Database 12c for Application Continuity, referred to as the “replay driver” onwards. » Oracle Universal Connection Pool (UCP) » Oracle WebLogic Server 12c, and third-party » Java connection pools or standalone Java applications using Oracle JDBC - Replay Driver 12c or later. » Oracle Tuxedo (version?) » OCI Session Pool 12c Release 2 or later » SQL*Plus 12c release 2 or later » ODP.NET Unmanaged Provider 12c Release 2 or later
2.server端
Oracle Database 12c Server » 数据库决定哪些调用是可恢复的,已经如何恢复。 » 以下数据库调用是可恢复的:select、pl/sql、alter session、dml、ddl、commit、rollback、savepint、jdbc、oci调用 » 支持所有的数据库事务类型:本地、并行、远程、分布式、内嵌事务
Application Continuity执行的三个阶段:
1.normal runtime 正常运行阶段
在正常运行阶段,每个数据库请求被会被加上标记(开始标记、结束标记)。
12C客户端和数据库端协作,决定请求中哪些调用是可replay的,哪些是不可以的。
replayable的调用以及调用的有效信息会被12c驱动保留的长一点,直到请求结束或者replay属性被取消。严格的调用、提交、请求结束,或者应用显式调用都会取消replay属性。
2.reconnect 重连接阶段
重连接阶段,可恢复的错误会触发Application Continuity。
在这个阶段会检查请求是否有replay属性;以及请求的replay的有效期。检查结束后,会对数据库建立新的连接,
重连接可能需要时间,所以dba应该检查网络配置属性replay_count、replay_delay,服务配置属性failover_delay、failover_timeout。
重连接数据库后,驱动会验证目标库的有效性,以及上一个事务是否成功提交。如果连接到数据库在逻辑上不是同一个库,或者事务已经丢失(比如数据库已经被还原到in time状态),驱动不会重新提交事务。
Transaction Guard强制提交上次事务结果。
3.replay 重放阶段
新连接建立后,进入replay阶段。
数据库会指导replay的执行。
如果有用户已经看到数据的变化,replay属性会被取消。
在replay阶段不可以提交事务,但是可以提交上一次的提交操作,也就是遇到需要恢复的调用。
replay成功后,请求恢复到上次失败的时间点。
如果replay不成功会报错。
Application Continuity使用的限制
1.global 全局限制
全局限制会取消对任何请求的Application Continuity特性
使用数据库service名连接数据库的请求是不支持Application Continuity特性的。比如默认的db_name,db_unique_name。数据库服务名不是设计用来支持高可用应用的,因为数据库服务名不能开启、取消或者fail over。
使用jdbc连接的应用,对已经过时的oracle.sql concrete classes不支持Application Continuity特性的,如blob、clob、bfile、opaque、rray、truct、oradata
OCI驱动要排除ADTs、高级队列,动态绑定,以及一些LOB APIs。
如果语句在应用服务器层设置了缓存(比如第三方应用服务器语句缓存),如果要开启replay特性,需要禁用缓存。作为替代,可以在jdbc、oci中设置语句缓存。比如设置oracle.jdbc.implicitstatementcachesize=nnn
2.request 请求级别限制
有些数据库请求不支持Application Continuity特性,下一个请求会自动恢复Application Continuity特性。
从12.2开始,分布式两阶段提交,replay只是支持本地事务。
ADG环境,如果应用使用dblink连接到其他库,不支持replay。
含有alter system、alter database的请求不支持replay。因为replya不会增加表空间、关闭或重启数据库
对于有些会修改提交行为、或set events的alter session操作也不支持replay。
3.目标数据库级别
目前Application Continuity不支持failover到不同的逻辑数据库。包括逻辑dg、ogg和第三方复制方案。
replay需要严格应用到相同的数据库,从而确保事务没有丢失
Application Continuity的评估
是否开启AC功能前需做出一些评估:
1.检查请求边界
请求边界是指数据库请求被标记了开始和结束标签。在12cR2的客户端中,被嵌入边界的连接池包括UCP、weblogic server数据源、Tuxedo、OCI、ODP.NET以及标准的第三方应用服务,使用12c jdbc驱动的单独java池。sql*plus也可以。
根据以下过程验证是否加了正确的标记:
(1)看应用是否从连接池使用和归还连接。如果是,请求会被内嵌加上连接边界。
(2)如果应用从连接池请求了连接,但是没有释放。通常是建议应用设置释放连接机制。
(3)如果是第三方java连接池,且没有使用oracle jdbc的 pooledconnection接口,有三种选择:
--使用UCP替换数据源
--使用oracle jdbc的 pooledconnection接口来创建和管理连接池
--增加带有开始请求和结束请求的api
2.确保没有过期的jdbc concreate classes
使用ORAchk中的acchk进行检测
$ ./orachk -asmhome /tmp/asm-all-5.0.3.jar -javahome /tmp/jdk1.8.0_40 -appjar /tmp/appdir
3.确定哪些请求不需要replay
比如使用外部调用、匿名事务等。如果不需要replay,要做好设置。
4.确定应用在failover之前是否需要最初的状态
有些应用是无连接状态的。要根据实际设置参数failover_restore的值
5.为易变值授权保留原值
易变函数通常每次会产生新值。要想使用replay,就要保持他们不会产生新的值:
sql> grant [keep date time | keep sysguid].. [to user]
sql> grant keep sequence.. [to user] on [sequence object];
sql> alter sequence.. [sequence object] [keep|nokeep];
sql> create sequence my_seq keep;
sql> -- or, if the sequence already exists but without keep:
sql> alter sequence my_seq keep;
Fast Connection Failover (FCF)
Fast Application Notification (FAN)
6.确定AC提供的保护级别
使用ORAchk的acchk生成报告AC的保护级别。
12C新特性--Application Continuity相关推荐
- Oracle 12c新特性--LREG进程专门负责注册实例服务
Oracle 12c引入了一些大量的新特性,数据库隐藏参数12.2比11.2就多了2000多个, 同时对之前版本的结构也发生了一些变化,虽然不如有些特性像temporary undo\immemory ...
- 【12c新特性】安装12c Standalone Grid Infrastructure
[12c新特性]安装12c Standalone Grid Infrastructure 转载于:https://blog.51cto.com/maclean/12 ...
- oracle desc能看约束,ORACLE 12C新特性-DESC显示不可见字段 | 信春哥,系统稳,闭眼上线不回滚!...
之前写过一篇关于12C新特性-不可见字段的文章,详见http://www.dbdream.com.cn/2014/01/19/oracle-12c%E6%96%B0%E7%89%B9%E6%80%A7 ...
- oracle12c 新增维护时间窗口,ORACLE 12C新特性-自动维护全局索引 | 信春哥,系统稳,闭眼上线不回滚!...
今天在网上看了一篇关于12C新特性-自动维护全局索引的帖子,经测试,貌似根本不是那么回事呀.如果对分区表进行分区DDL操作,如果不加update index字句,全局索引就会失效,下面先看一下是11. ...
- Oracle Database 12c 新特性:RAC Cluster Hub Node 和 Leaf Node
Oracle Database 12c 新特性:RAC Cluster Hub Node 和 Leaf Node 在 Oracle Database 12c 的 Cluster 中引入了很多新特性和新 ...
- Oracle 12C 新特性之扩展数据类型(extended data type)
Oracle 12C 新特性-扩展数据类型,在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及 RAW这些数据类型的大小会从4K以及2K字节扩展至32K字节.只要可能,扩展字 ...
- oracle12c asmfd,Oracle 12c新特性--ASMFD(ASM Filter Driver)特性
1 说明 ASMFD 是 12.1 中就引入的新特性,它可以不用手动配置 ASM 磁盘,更重要的是它可以保护磁盘被其他非 Oracle 操作复写,例如 dd , echo 等命令. 更为详尽的介绍,请 ...
- Oracle Database 12c新特性 In-Database Archiving数据库内归档
[Oracle Database 12c新特性] In-Database Archiving数据库内归档 Oracle Database 12c中引入了 In-Database Archiving的新 ...
- Oracle 12c新特性-多租户的维护管理
云和恩墨技术专家 现就职于云和恩墨,为某省电信公司数据库运维服务:在IT行业拥有10年以上的工作经历.擅长 ORACLE 数据库运维管理.shell 脚本开发:长期服务于电信.金融,政府行业:具有丰富 ...
- 【云和恩墨大讲堂】高凯 | Oracle 12c 新特性-多租户的维护管理
"云和恩墨大讲堂" 线上课程周四晚继续开讲.本期我们邀请的嘉宾是云和恩墨西北区技术专家 - 高凯,在这里跟大家分享一下 Oracle 12c 新特性方面的主题.课程以图文形式在微信 ...
最新文章
- 面试官问:对象池技术了解吗?apache common pool2呢?
- docker基础 (狂神说)
- DrawerLayout + Toolbar + ViewPager
- SpringBoot 自定义Kafka消息序列化和反序列化
- Apollo后台配置:添加部门
- 动作游戏老是卡?试试从这些方面提升流畅度
- springmvc restful风格操作
- flash调用js中的方法,让js传递变量给flash (兼容 IE FF) (转)
- mysql内置加密函数_MySQL数据库内置加密函数总结
- mysql5.7 查询今天 昨天 一周_mysql查询今天、昨天、7天、近30天、本月、上一月 各个季度的 数据...
- 线程范围内的线程共享(多线程)
- 推箱子 (hdu1254)(bfs双重广搜)
- 测开面试题大全及答案(含测试基础|实例介绍|软件本地化测试等)
- 软件测试工作基本流程
- 3dB带宽的简要解释
- 成功者的13个良好习惯
- kuka机器人三种运动编程
- bzoj1911【APIO2010】特别行动队
- C语言冒泡排序法,用函数形式实现。
- DCU Streamer Prefetcher
热门文章
- Docker 搭建Pika分片多主集群(Docker Codis Pika Replication Sharding)
- python使用pika库调用rabbitmq的交换机模式
- 抢菜捡漏工具(PrintScreenCatchImg)
- drools中Fact的equality modes
- EXCEL表格数据规范规则-日期时间篇
- Java实现系统统一对外开放网关入口设计
- Oracle 官网JDK下载地址
- windows10 共享视频到 Ipad
- 给new comer程序员的建议
- 华为手机灵敏度设置_和平精英灵敏度怎么调最稳华为手机?华为二指灵敏度调整设置一览[多图]...