dataguard 主库DML等SQl操作迅速在备库应用

概述:如何使得主库的DML等SQL操作能够立即在备库等到应用?oracle  dataguard 按照官方文档刚刚搭建完成备库应用的是归档日志文件也就是需要主库触发日志文件归档后才能够使得备库和主库同步,这样主备库就会存在误差,而11g开始备库是可以作为查询供业务使用的,这样就会导致如果读写分离的情况下,备库查询数据将会比主库慢而导致查询结果的不准确;本文就对主备库的实时查询等功能就行测试;

实验步骤:

1、主备库添加redo standby 日志

2、开启实时接收日志应用

3、测试


实验:

主库新建表:

[root@cube ~]# su - oracle
[oracle@cube ~]$ sqlplus / as sysdba


SQL*Plus: Release 11.2.0.4.0 Production on Sun Dec 31 16:35:05 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> grant connect,resource to cube identified by cube ;         
Grant succeeded.

SQL> conn / as sysdba
Connected.

SQL> create table cube.cube1 as select * from scott.emp;

Table created.

SQL> conn cube/cube
Connected.

Connected.
SQL> select count(*) from cube1;


  COUNT(*)
----------
        14

备库查询:

[oracle@jakki ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sun Dec 31 16:39:50 2017
Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select count(*) from cube.cube1;
select count(*) from cube.cube1
                          *
ERROR at line 1:
ORA-00942: table or view does not exist


主备切换日志或者归档当前日志:

SQL> conn / as sysdba
Connected.
SQL> alter system switch logfile;  或者 alter system archive log current;
System altered.、

备库再次查询:

SQL> select count(*) from cube.cube1;

  COUNT(*)
----------
        14


添加standby logfile,如果只是为了使得备库能够实时应用而不考虑后期一旦主库变为备库的实时应用的话 可以只在备库添加standby logfile; 一般添加standby logfile文件的大小跟redo log文件的大小相同,组数比redo log多一组。

建议主备库都添加吧。

主库:

SQL>  col member for a60 
SQL> select f.member,l.bytes/1024/1024 from v$log l,v$logfile f where l.group#=f.group#;


MEMBER                                                       L.BYTES/1024/1024
------------------------------------------------------------ -----------------
/u01/app/oracle/oradata/CUBE/redo03.log                                     50
/u01/app/oracle/oradata/CUBE/redo02.log                                     50
/u01/app/oracle/oradata/CUBE/redo01.log                                     50

SQL> alter database add standby logfile '/u01/app/oracle/oradata/CUBE/redo04.log' size 50M;

Database altered.

SQL>  alter database add standby logfile '/u01/app/oracle/oradata/CUBE/redo05.log' size 50M;

Database altered.

SQL>  alter database add standby logfile '/u01/app/oracle/oradata/CUBE/redo06.log' size 50M;

Database altered.

SQL>  alter database add standby logfile '/u01/app/oracle/oradata/CUBE/redo07.log' size 50M;

Database altered.


备库:

SQL> recover managed standby database cancel;
Media recovery complete.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/JAKKI/redo05.log' size 50M;

Database altered.

SQL> alter database add standby logfile '/u01/app/oracle/oradata/JAKKI/redo04.log' size 50M;

Database altered.

SQL> alter database add standby logfile '/u01/app/oracle/oradata/JAKKI/redo06.log' size 50M;

Database altered.

SQL> alter database add standby logfile '/u01/app/oracle/oradata/JAKKI/redo07.log' size 50M;

Database altered.


备库开启实时应用:

SQL> recover managed standby database using current logfile disconnect;
Media recovery complete.

主库创建一张表并且插入数据commit,查看归档日志保证没有使用归档应用。

SQL> select group#,thread#,status from v$log; 

    GROUP#    THREAD# STATUS
---------- ---------- --------------------------------
         1          1 ACTIVE
         2          1 CURRENT
         3          1 INACTIVE

SQL> create table cube.t1 (id number);

Table created.
备库查看:

SQL> select * from cube.t1;

no rows selected

主库插入一行数据提交
SQL> insert into cube.t1 values (1);
1 row created.

SQL> commit;

Commit complete.

SQL> select group#,thread#,status from v$log; 

    GROUP#    THREAD# STATUS
---------- ---------- --------------------------------
         1          1 ACTIVE
         2          1 CURRENT
         3          1 INACTIVE


备库查看:

 select * from cube.t1;

        ID
----------
         1


至此实时应用的实验完成,上面测试了ddl 创建一张表以及dml 插入一条语句,其他测试请自行测试


总结:11g的实时adg功能可以使得业务读写分离,减轻了主库的查询压力,新功能可以多行测试后可以推广到日常的业务应用中。话说12C的ADG 将变得更加牛逼备库支持DML操作了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值