● ITPUB名人堂嘉宾 ● ChinaUnix社区博客专家 ● ChinaUnix社区Oracle板块版主 ● 优酷网认证音乐牛人:EricGuitar ● SDOUG 核心成员 ●E-mail:gaoqiangdba@163.com
分类: Oracle
2021-02-15 10:15:47
Oracle 19c中的应用延续性
设想一下,用户运行一个应用程序时,不必担心“计划内停机”,也不必想知道为什么他们最新的数据输入会消失在黑洞中。想象一下,您可以进行一些简单的配置更改,所有这些问题都会消失。这是在您配置应用程序连续性(AC)时进行的,以便您的用户不再受到滚动修补、数据库配置更改甚至罕见的数据库崩溃的影响。
应用程序连续性做什么?
应用程序连续性对应用程序和最终用户隐藏了数据库层中的中断。它有效地屏蔽了滚动修补活动、网络故障、数据库实例暂停和崩溃、切换到活动Data Guard备用数据库以及许多其他以前中断的事件。配置应用程序连续性后,用户将不再受到计划内停机或意外停机的影响。他们可以简单地继续工作,而不知道幕后正在发生计划内或计划外的事件。
它是如何工作的?
应用程序连续性完全按照最初提交的方式重放数据库请求(不管是事务还是查询),以确保结果与请求一致。对于每个请求,它首先在一个活动的数据库实例上恢复和验证会话,然后将语句从请求重放直到完成,并将结果返回给用户。
可变表(每次引用时都返回新值的函数)包括对SYSDATE和SEQUENCES(NEXTVAL)的调用。例如,这意味着如果从序列调用NEXTVAL在请求的原始处理中返回47,则该请求的重播也必须使用47作为该值。AC还保证重播的任何事务只提交一次。这是通过调用transactionguard来实现的,它提供了在重放期间跟踪和管理所有事务状态的功能。
透明应用程序连续性(Transparent Application Continuity,TAC)是随着Oracle数据库18c引入的,并在Oracle数据库19c中进一步增强,它扩展了对不使用Oracle连接池的应用程序配置的支持(尽管它们仍然是首选解决方案)。此配置显著地将重播功能的可用性扩展到更多的应用程序堆栈,因此也是升级到Oracle Database 19c的另一个原因。默认情况下,Oracle Autonomous Database会启用TAC,并且可以在Oracle云中轻松配置。
是否需要更改应用程序或数据库?
不需要。编写良好的应用程序不需要更改代码。
通过应用程序连续性重播数据库请求相关的配置更改是必须做限制的。通过两个简单的步骤配置应用程序以通过应用程序连续性进行保护:
1. 使用推荐的TNS连接字符串以实现连续可用性:
Alias (or URL) =
(DESCRIPTION =
(CONNECT_TIMEOUT=120) (RETRY_COUNT=20)(RETRY_DELAY=3)(TRANSPORT_CONNECT_TIMEOUT=3)
(ADDRESS_LIST =
(LOAD_BALANCE=on)
(ADDRESS = (PROTOCOL = TCP)(HOST=primary-scan)(PORT=1521)))
(ADDRESS_LIST =
(LOAD_BALANCE=on)
(ADDRESS = (PROTOCOL = TCP)(HOST=standby-scan)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME = YOUR SERVICE)))
2.
(a) 如果使用JDBC,请用官方最新的文件替换,必须将它们作为一组文件进行替换,以确保替换成功。。
(b) 如果为OCI客户端配置,请将所有出现的OCismtPrepare替换为OCismtPrepare2(OCismtPrepare在12.2中已被弃用,将不会重播)。另外,将HA_EVENTS=TRUE添加到推荐的连接字符串中,并确保dba已将数据库服务配置为aq_ha_notifications = True。
在数据库级别,只需要3个简单的配置步骤:
1为应用程序连续性或透明应用程序连续性配置数据库服务。这些服务应该专门针对它们支持的应用程序工作负载进行定制。
以下说明如何为透明应用程序连续性(TAC)配置服务:
$ srvctl add service -db mydb -service GOLD –preferred inst1 -available serv2 -failover_restore AUTO -failoverretry 1 -failoverdelay 3 -commit_outcome TRUE -failovertype AUTO -replay_init_time 600 -retention 86400 -notification TRUE -drain_timeout 300 -stopoption IMMEDIATE
2.对可变项授予KEEP特权。具体来说,对将要访问的序列授予“keep”。
3.为ONS通知打开端口6200(或配置其他端口)。
结论
应用程序连续性允许在数据库层中断期间保持工作负载处理的连续性。它与已建立的应用程序或新部署的应用程序一起工作,为广泛的常用应用程序堆栈提供保护。它这样做的同时保证了返回给用户的事务、数据和结果的完整性。所有这些都不需要更改应用程序。