oracle 单实例DG(闪回技术四)
一,flashback
Oracle Flashback技术是一组数据库特性,它可以让你查看数据库对象的过去状态,或者将数据库对象返回到以前的状态,而无需使用基于时间点的介质恢复。根据数据库的变化,闪回特性可以更快的回退不想要的变化,而且相比介质恢复,对数据库可用性产生的影响更小。
- 执行回到过去的数据查询
- 执行显示对数据库更改的详细历史的元数据的查询
- 将表或行恢复到之前的时间点
- 自动追踪和归档事务数据的更改
- 当数据库保持在线状态时,回退事务和与它相关的事务
flashback--闪回技术有闪回表、闪回删除、闪回查询、闪回事务查询、闪回事务、闪回数据库、闪回数据归档。其中,闪回查询、闪回事务查询用来“观察”过去;闪回数据归档并不是一个独立的功能,其功能是扩展闪回查询的时间窗口;闪回表、闪回删表能够以表为单位“回到”过去;闪回事务能够以事务为单位“回到”过去;闪回数据库能够以数据库为单位“回到”过去。
二,开启功能
备库操作:
01,关闭实时同步
alter database recover managed standby database cancel;
02, 关闭数据库后开启到mount状态
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 2505338880 bytes Fixed Size 2255832 bytes Variable Size 603980840 bytes Database Buffers 1879048192 bytes Redo Buffers 20054016 bytes Database mounted. SQL>
03,开始flashback
SQL> alter database flashback on; Database altered.
SQL> alter database open; Database altered. SQL> alter database recover managed standby database using current logfile disconnect from session; Database altered.
04,查看闪回是否开启
SQL> select open_mode,log_mode,flashback_on from v$database; OPEN_MODE LOG_MODE FLASHBACK_ON -------------------- ------------ ------------------ READ WRITE ARCHIVELOG YES
已经开启了
三,测试闪回技术
测试前两个库开启闪回 为保后续恢复
主库不能访问的话操作就再备库完成:
SQL>
alter database recover managed standby database cancel; 停止实时同步
alter database recover managed standby database finish force;
select database_role from v$database;
alter database commit to switchover to primary;
alter database open;
select switchover_status,database_role,open_mode from v$database;
备库已经变为主库了
四, 主库恢复
上面提到了failover,这种情形是当主库真正出现异常之后,才会执行的操作,那么我们执行过failover 之后,如何在重新构建DG,这里我们利用flashback database来重构
再新的主库查询
select to_char(standby_became_primary_scn) from v$database;
现在再原来临时主库执行命令:
shutdown immediate
startup mount
flashback database to scn 1064562; -----这个为新主库查询的值
alter database convert to physical standby;
shutdown immediate
startup
alter database recover managed standby database using current logfile disconnect from session;
查询状态
select process,status,sequence# from v$managed_standby;
查询归档同步