Oracle 12cR2中的ADG会话保留特性

    Oracle 12cR2中有一个不错的特性,那就是Active Data Guard会话保留,原本的叫法是Preserving Active Data Guard Application Connections

   怎么理解呢,比如在Active Data Guard上的连接会话,在switchover的过程中会话连接会始终保持不会中断。这一点听起来就很有特点,能够提高用户体验度,而且是一种相对透明的方式。

  到底怎么样呢,我们来简单测试一下,先看看默认情况下的ADG会话情况,切换的过程就直接使用DG Broker来做了,快。

  这是一个12cR2的环境,也使用了Far Sync。

DGMGRL>show  configuration
Configuration - dg_test12cs
  Protection Mode: MaxPerformance
  Members:
  test12cs  - Primary database
    test_sync - Far sync instance
    test12css - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS   (status updated 10 seconds ago)我们连接到备库,备库现在是ADG模式。

SQL> select open_mode from v$database;
OPEN_MODE
----------------------------------------
READ ONLY WITH APPLY如果这个时候我们就使用一条语句在备库端查询,使用TNS连接,然后DG Broker来切换,切换的情况如下,也是一气呵成。

DGMGRL> switchover to test12css
Performing switchover NOW, please wait...
Operation requires a connection to database "test12css"
Connecting ...
Connected to "test12css"
Connected as SYSDBA.
New primary database "test12css" is opening...
Operation requires start up of instance "test12cs" on database "test12cs"
Starting instance "test12cs"...
for RDBMS instance
ORACLE instance started.
Database mounted.
Database opened.
Connected to "test12cs"
Switchover succeeded, new primary is "test12css"
DGMGRL> 

在客户端反复测试连接的情况如下:

SQL> select count(*) from cat;
  COUNT(*)
----------
       153
SQL> /
  COUNT(*)
----------
       153
SQL> /
select count(*) from cat
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 94489
Session ID: 419 Serial number: 62932

可以看到在切换的过程中,连接被中断了,而接下来就会彻底断开连接。

SQL> /
ERROR:
ORA-03114: not connected to ORACLE

这里就需要说一下这个特性的情况,其实还涉及到一个参数standby_db_preserve_states,默认是NONE

SQL> show parameter standby_db_preserve_states
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------
standby_db_preserve_states           string                 NONE

我们设置为ALL,这个修改需要重启备库,我们设置好之后,再来做switchover

步骤和上面的类似,我们直接来看看效果,始终在这一个会话内查看数据查询的情况,整个过程相对平滑,在切换过程中会有一个大约两秒的停顿,但是连接始终是保持的。

  COUNT(*)
----------
       153
SQL> /
  COUNT(*)
----------
       153
SQL> /
  COUNT(*)
----------
       153      
SQL> /

  COUNT(*)
----------
       153
SQL> /
  COUNT(*)
----------
       153

  整体来看这个特性确实达到了预期的效果,还是蛮不错的。

时间: 2024-08-02 22:26:33

Oracle 12cR2中的ADG会话保留特性的相关文章

盘点 Oracle 11g 中新特性带来的10大性能影响

盘点 Oracle 11g 中新特性带来的10大性能影响 原创 2017-08-02 盖国强 数据和云 Oracle的任何一个新版本,总是会带来大量引人瞩目的新特性,但是往往在这些新特性引入之初,首先引起的是一些麻烦,因为对于新技术的不了解.因为对于旧环境的不适应,从Oracle产品到技术服务运维,总是要走过一个磨合的长期过程. 请注意:我们并不推荐大家盲目的关闭和摒弃Oracle的新特性,我们建议大家在遇到问题时,做出适合自己的调整. 就此盘点一下 Oracle 11g 中,那些新特性带来的新

Oracle 12cR2发布,金融行业准备大规模上了

​DBAplus Newsletter第二期资讯中我们已经预告Oracle率先发布了Exadata.SuperCluster版本12c Release 2的发布也拉开了帷幕而在2017年3月1日Oracle终于发布了它的Linux 64版本和Solaris版本包括x86和SPARC架构.  对于很多Oracle DBA来说12c最期待人心的就是12c Release 2的发布了而Linux 64位版本的发布则是一个重头戏.     Oracle12cR2版本跟以前的版本相比多了一个Global

Oracle存储过程中使用临时表

原文地址: http://sosuny.javaeye.com/blog/551006   一.Oracle临时表知识   在Oracle中,临时表分为SESSION.TRANSACTION两种,SESSION级的临时表数据在整个SESSION都存在,直到结束此次SESSION:而 TRANSACTION级的临时表数据在TRANACTION结束后消失,即COMMIT/ROLLBACK或结束SESSION都会清除 TRANACTION临时表数据.  1) 会话级临时表 示例  1创建 Sql代码 

Oracle 12c中DBCA搭建备库体验(r11笔记第92天)

   Oracle 12c中DBCA有一个特性看起来蛮有意思,就是直接通过DBCA来搭建Data Guard,当然这么说也有点噱头,我们来实际看看.   Oracle提供的官方命令结构如下:       dbca -createDuplicateDB         -gdbName global_database_name         -primaryDBConnectionString easy_connect_string_to_primary         -sid databas

如何收集Oracle进程中的sql跟踪信息

oracle|进程 在诊断数据库系统性能的过程中,总会涉及到跟踪效率低下的sql语句,现在就如何跟踪sql语句来做一个简单的总结.权做抛砖引玉之用. 如果我们可以修改应用系统的源代码,则可以直接在程序中加入如下的语句: 1)alter session set timed_statistics=true: /*适用于Oracle 7.3以后的版本*/ 2)alter session set max_dump_file_size=unlimited : /*适用于Oracle 7.3以后的版本*/

ORACLE应用中常见的傻瓜问题1000问 (一)

oracle|问题           大家在应用ORACLE的时候可能会遇到很多看起来不难的问题, 特别对新手来说, 今天我简单把它总结一下, 发布给大家, 希望对大家有帮助! 和大家一起探讨, 共同进步!对ORACLE高手来说是不用看的. 1. Oracle安装完成后的初始口令? internal/oracle sys/change_on_install system/manager scott/tiger sysman/oem_temp2. ORACLE9IAS WEB CACHE的初始默

如何处理Oracle数据库中的坏块问题

oracle|数据|数据库|问题   本文主要介绍如何去处理在Oracle数据库中出现坏块的问题,对于坏块产生在不同的对象上,处理的方法会有所不同,本文将大致对这些方法做一些介绍.因为数据库运行时间长了,由于硬件设备的老化,出现坏块的几率会越来越大,因此,做为一个DBA,怎么去解决数据库出现的坏块问题就成了一个重要的议题了.   一:什么是数据库的坏块   首先我们来大概看一下数据库块的格式和结构 数据库的数据块有固定的格式和结构,分三层:cache layer,transaction laye

Oracle中自定义临时表的实现及其在Oracle Spatial中的应用

oracle|临时表 Oracle 临时表功能介绍:         Oracle中的临时表是全局的,需要在数据库设计时创建完成,而不是程序使用时.每个登陆用户都使用这一个相同的临时表,但互相之间看不到彼此的数据,也就是说临时表是会话独立的.         Oracle 的临时表分为事务型和会话型.         事务型临时表就是指在事务处理过程中插入的记录只在事务提交或回滚之前有效,一旦事务完成,表中的记录便被自动清除.         会话型临时表指临时表中的数据在本次会话期间一直有效,

ORA FAQ 性能调整系列之——Oracle 9与Oracle 8中CPU

oracle|性能 What is the difference between cpu_costing in Oracle 9 and the old costing of Oracle 8 ?Oracle 9与Oracle 8中CPU_COSTING有什么变化? Author's name: Jonathan LewisAuthor's Email: Jonathan@jlcomp.demon.co.ukDate written: 15th Dec 2002 Oracle version(s