oracle 10g dataguard 测试
1、备库只读打开
备库现在是mount状态,不能查询数据。可以把它open read only;如果read only,备库就只能查询,并且不再应用日志。
备库操作: SQL> recover managed standby database cancel; SQL> alter database open read only;此时就可以查询数据,看主库最新的数据是否可以在备库查到。
如果需要继续应用日志,需要关闭数据库,启动到mount状态,重新应用日志。
2、主备切换
切换顺序,把主切换成从;再把从切换成主
主切换成从 从切换成主 也可以按照上边的步骤重新切换回去。
3、逻辑standby
物理standby:通过redo apply来恢复进行同步
逻辑standby:通过sql apply来恢复进行同步
逻辑standby可以在open状态下完成数据同步,它的物理结构可以不一致
逻辑standby的实现:通过物理standby转换成逻辑standby
备库关闭日志应用 SQL> alter database recover managed standby database cancel;生成记录的元数据信息到 redo log
主库运行 SQL> exec dbms_logstdby.build
备库操作 SQL> alter database recover to logical standby std; SQL> shutdown immediate SQL> startup mount
SQL> select member from v$logfile; SQL> alter database open resetlogs; SQL> alter database start logical standby apply immediate; SQL> select database_role from v$database; DATABASE_ROLE —————- LOGICAL STANDBY 查看逻辑standby的当前的归档日志应用情况
主库: SQL> alter system switch logfile;
System altered.
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#) ————–备库: SQL> select sequence#,first_change#,next_change#,timestamp,applied from dba_logstdby_log;
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# TIMESTAMP APPLIED ———- ————- ———— ————– —————-
49 463066 463602 26-3月 -16 CURRENT
50 463602 463613 26-3月 -16 CURRENT4、逻辑standby切换
切换前的检查
切换前一定要检查下日志是否同步正常
相互sqlplus sys/sys@test as sysdba连接下,是否都能够连通。
主库准备转换为备库 SQL> alter database prepare to switchover to logical standby;
Database altered.
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS ——————– PREPARING SWITCHOVER注:取消准备ALTER DATABASE PREPARE TO SWITCHOVER CANCEL;
备库准备转换为主库 SQL> alter database prepare to switchover to primary;
Database altered.
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS ——————– PREPARING SWITCHOVER再次检查主库的状态 SQL> select switchover_status from v$database;
SWITCHOVER_STATUS ——————– TO LOGICAL STANDBY转换主库为逻辑standby SQL> alter database commit to switchover to logical standby;
Database altered.再次检查逻辑standby状态 SQL> select switchover_status from v$database;
SWITCHOVER_STATUS ——————– TO PRIMARY转换逻辑standby为主库 SQL> alter database commit to switchover to primary;
Database altered.启用新逻辑standby的sql应用(别执行错库了) SQL> alter database start logical standby apply;
Database altered.5、其他
停止逻辑standby应用 SQL> alter database stop logical standby apply;
Database altered. standby同步问题排查 SQL> column EVENT_TIME format a10 SQL> column EVENT_TIMESTAMP format a20 SQL> column STATUS format a40 SQL> select EVENT_TIME,EVENT_TIMESTAMP,STATUS from dba_logstdby_events order by event_time desc;
EVENT_TIME EVENT_TIMESTAMP STATUS ———- ——————– —————————————- 28-3月 -16 28-3月 -16 03.02.30. ORA-16111: log mining and apply setting
573734 下午 up
28-3月 -16 28-3月 -16 03.02.30. Apply LWM 540429, HWM 540429, SCN 540434
597606 下午
28-3月 -16 28-3月 -16 11.37.51. ORA-16128: User initiated stop apply suc
578547 上午 cessfully completed
28-3月 -16 28-3月 -16 11.35.58. ORA-16226: DDL skipped due to lack of su
963554 上午 pport
EVENT_TIME EVENT_TIMESTAMP STATUS ———- ——————– —————————————-
28-3月 -16 28-3月 -16 11.33.30. ORA-16111: log mining and apply setting
624892 上午 up
26-3月 -16 26-3月 -16 05.19.42. ORA-16128: User initiated stop apply suc
056570 下午 cessfully completed
26-3月 -16 26-3月 -16 02.34.53. ORA-16111: log mining and apply setting
643625 下午 up
7 rows selected.