IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Oracle 19C 备库DML重定向—DML Redirection

    惜分飞发表于 2024-02-12 12:48:27
    love 0

    联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

    标题:Oracle 19C 备库DML重定向—DML Redirection

    作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

    在19c之前,oracle Data Guard备用数据库上不能执行DML操作,但是,从19c开始备库就可以进行DML操作了;Active Data Guard备用数据库上运行DML操作,可以在备用数据库上运行只读应用程序,偶尔执行DML(太频繁影响主库性能),备库上的DML操作可以透明地重定向到主数据库并在主数据库上运行。也包括PL/SQL块中的DML语句。Active Data Guard会话将等待,直到将相应的更改发送到Active Data Guard备用数据库并将其应用于Active Data Guard备用数据库为止。在DML操作期间将保持读取一致性,并且运行DML的备用数据库可以查看其未提交的更改。但是,所有其他备用数据库实例只有在提交事务后才能查看这些更改。
    在主库上创建测试表

    SQL> select * from v$version;
    
    BANNER
    --------------------------------------------------------------------------------
    BANNER_FULL
    --------------------------------------------------------------------------------
    BANNER_LEGACY
    --------------------------------------------------------------------------------
        CON_ID
    ----------
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.5.0.0.0
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    	 0
    
    
    SQL> select database_role ,open_mode from v$database;
    
    DATABASE_ROLE	 OPEN_MODE
    ---------------- --------------------
    PRIMARY 	 READ WRITE
    
    SQL> create table system.t_xff as select * from dba_objects;
    
    Table created.
    
    SQL> select count(*) from system.t_xff;
    
      COUNT(*)
    ----------
         72407
    

    在备库上进行dml操作

    SQL> select database_role ,open_mode from v$database;
    
    DATABASE_ROLE	 OPEN_MODE
    ---------------- --------------------
    PHYSICAL STANDBY READ ONLY WITH APPLY
    
    
    
    SQL> select count(*) from system.t_xff;
    
      COUNT(*)
    ----------
         72407
    
    SQL> alter session enable adg_redirect_dml;
    
    Session altered.
    
    SQL> delete from system.t_xff;
    
    72407 rows deleted.
    
    SQL> commit;
    
    Commit complete.
    
    

    在主库上验证备库dml操作结果

    SQL> select count(*) from system.t_xff;
    
      COUNT(*)
    ----------
    	 0
    
    SQL> 
    

    在18c中可以通过_enable_proxy_adg_redirect隐含参数实现dml重定向

    • oracle active dataguard修改密码备库延迟生效
    • EXADATA与非EXADATA搭建DATAGURAD关于EHCC特性测试
    • 11G RAC TO 11G RAC ADG SWITCHOVER
    • dataguard配合flashback实现主备任意切换(failover和switchover)
    • 18c新特性:alter system cancel sql
    • ORACLE ROWID 分析
    • move lob导致index失效
    • 通过ROWID找回坏块数据
    • 通过修改col$.col#改变列展示顺序
    • 授权用户访问数据字典三种方式
    • Data Gurad switchover切换(Physical Standby Databases)
    • ORA-600 16703直接把orachk备份表插入到tab$恢复


沪ICP备19023445号-2号
友情链接