DG 读写分离

读写分离(实时查询standby

 

备用数据库一边进行日志恢复,一边对外提供服务,如果在加上最大保护模式,用户在备用数据库上就能查看到准确的实时数据了。

 

先确认备库的状态

SQL> select NAME ,OPEN_MODE, PROTECTION_MODE ,PROTECTION_LEVEL, REMOTE_ARCHIVE, DATABASE_ROLE, SWITCHOVER_STATUS from v$database;

 

NAME         OPEN_MODE              PROTECTION_MODE             PROTECTION_LEVEL

--------- -------------------- -------------------- --------------------

REMOTE_A DATABASE_ROLE   SWITCHOVER_STATUS

-------- ---------------- --------------------

ORCL          MOUNTED          MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

ENABLED  PHYSICAL STANDBY NOT ALLOWED

 

进入只读状态

SQL> alter database recover managed standby database cancel;

 

Database altered.

 

SQL> alter database open;

 

Database altered.

 

SQL> select NAME ,OPEN_MODE, PROTECTION_MODE ,PROTECTION_LEVEL, REMOTE_ARCHIVE, DATABASE_ROLE, SWITCHOVER_STATUS from v$database;

 

NAME         OPEN_MODE              PROTECTION_MODE             PROTECTION_LEVEL

--------- -------------------- -------------------- --------------------

REMOTE_A DATABASE_ROLE   SWITCHOVER_STATUS

-------- ---------------- --------------------

ORCL         READ ONLY         MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

ENABLED  PHYSICAL STANDBY NOT ALLOWED

 

再次启动数据库的恢复

SQL> alter database recover managed standby database disconnect from session;

 

Database altered.

 

SQL> select NAME ,OPEN_MODE, PROTECTION_MODE ,PROTECTION_LEVEL, REMOTE_ARCHIVE, DATABASE_ROLE, SWITCHOVER_STATUS from v$database;

 

NAME         OPEN_MODE              PROTECTION_MODE             PROTECTION_LEVEL

--------- -------------------- -------------------- --------------------

REMOTE_A DATABASE_ROLE   SWITCHOVER_STATUS

-------- ---------------- --------------------

ORCL         READ ONLY WITH APPLY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

ENABLED  PHYSICAL STANDBY NOT ALLOWED

 

现在备库的状态现在是read only with apply.

 

现在在主库上做一下操作

SQL> create table test (id number);

 

Table created.

 

SQL> alter system switch logfile;

 

System altered.

现在去查备库是看不到test这个表的,做几次日志切换就能在备库看到test表了。

 

SQL> select * from test;

select * from test

              *

ERROR at line 1:

ORA-00942: table or view does not exist

 

 

SQL> /

 

no rows selected

 

可见主库上的变化已经映射到备库了,因为目前还不是实时恢复的,使用实时恢复,这个时候,必须有standby log

 

SQL> select * from v$logfile;

 

    GROUP# STATUS  TYPE    MEMBER                                                                      IS_

---------- ------- ------- ---------------------------------------------------------------------- ---

          3        ONLINE  /u01/app/oracle/oradata/std/redo03.log                                       NO

          2        ONLINE  /u01/app/oracle/oradata/std/redo02.log                                       NO

          1        ONLINE  /u01/app/oracle/oradata/std/redo01.log                                       NO

          4        STANDBY /u01/app/oracle/fast_recovery_area/STD/onlinelog/o1_mf_4_9kof4jt9_.log YES

          5        STANDBY /u01/app/oracle/fast_recovery_area/STD/onlinelog/o1_mf_5_9kof4m2w_.log YES

          6        STANDBY /u01/app/oracle/fast_recovery_area/STD/onlinelog/o1_mf_6_9kof4n53_.log YES

          7        STANDBY /u01/app/oracle/fast_recovery_area/STD/onlinelog/o1_mf_7_9kof4nyc_.log YES

 

再次取消recover,重新使用实时恢复。

SQL> alter database recover managed standby database using current logfile disconnect from session;

 

Database altered.

 

SQL> select NAME ,OPEN_MODE, PROTECTION_MODE ,PROTECTION_LEVEL, REMOTE_ARCHIVE, DATABASE_ROLE, SWITCHOVER_STATUS from v$database;

 

NAME         OPEN_MODE              PROTECTION_MODE             PROTECTION_LEVEL

--------- -------------------- -------------------- --------------------

REMOTE_A DATABASE_ROLE   SWITCHOVER_STATUS

-------- ---------------- --------------------

ORCL          READ ONLY WITH APPLY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

ENABLED  PHYSICAL STANDBY NOT ALLOWED

 

主库上插入

SQL> insert into test values (1);

 

1 row created.

 

SQL> insert into test values (2);

 

1 row created.

 

SQL> commit

  2  ;

 

Commit complete.

 

在备库立马就可以看到

SQL> select * from test;

 

         ID

----------

          1

          2

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值