您的位置:首页 > 大数据 > 人工智能

Flashback还原failover的备库实验

2015-11-06 11:12 369 查看

               Flashback还原failover的备库实验

背景:前面已经试验了flashback还原激活后的备库试验,但再次打开备库遭遇ORA-01665错误,需要主库重新创建控制文件到备库,如遇到备库数据文件路径不一致等还要做修改,今天试验的目的是无需创建控制文件而重新打开备库.


主库操作:

1>先开启flasback on

alter system  set db_recovery_file_dest='/u01/app/oracle/fast_recovery_area/' scope=spfile;

alter system set db_recovery_file_dest_size=10G;

--设置保留时间,单位分钟,默认1440

alter system set db_flashback_retention_target=1440;

shutdown immediate;

startup mount;

alter database flashback on;

alter database open;

ps -ef |grep rvw  <--相应进程

SQL> select flashback_on from v$database;

FLASHBACK_ON

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

YES

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

 

SQL> select oldest_flashback_scn old_flhbck_scn,oldest_flashback_time old_flhbck_tim,retention_target rete_trgt,flashback_size/1024/1024 flhbck_siz,estimated_flashback_size/1024/1024 est_flhbck_size

from v$flashback_database_log;

 

42985780 2015-11-05 16:18:35       1440        800               0

 

备库操作

2>先查看当前的scn

SQL> select current_scn from v$database;

CURRENT_SCN

-----------

   42990333

 

3>关闭mrp进程,failover切换备库为主库

SQL> alter database recover managed standby database finish force;

观察finish的全部过程,便于了解原理



SQL> select process,client_process,status,sequence# from v$managed_standby;

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

ARCH      ARCH     CLOSING             707

ARCH      ARCH     CLOSING             522

ARCH      ARCH     CONNECTED             0

ARCH      ARCH     CLOSING             712

已经无mrp和rfs进程了

SQL> select database_role from v$database;

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

PHYSICAL STANDBY

切换为主库,自动到mount状态

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; 

SQL> select database_role from v$database;

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

PRIMARY

SQL> alter database open;

sql > select open_mode from v$database;

观察转换过程,需要resetlog日志打开

此时需要关闭主库日志传送,否则如下识别不了信息


 

4>在主库新建表dg1,备库新建表dg2,测试最终恢复后备库因为无dg2,而有dg1表

主:create table lsl.dg1 as select * from lsl.test1;

备:create table lsl.dg2 as select * from lsl.test1;

 

5>闪回备库到当初failover时刻的scn

SQL> shutdown immediate;

SQL> startup mount;

SQL> flashback database to scn 42990333;

SQL> select database_role,open_mode from v$database;

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

PRIMARY          MOUNTED

 

6>进行主库到备库的角色转换 

alter database convert to physical standby; 

   <--这一步如不执行,打开会ORA-01665错误的

昨天的备库激活打开后闪回没有执行这个步骤,导致控制文件无法识别其为备库了.


观察闪回过程

7>重新启动到mount状态,打开,应用日志

sql > startup force mount;

sql > select database_role,open_mode from v$database;

  PHYSICAL STANDBY   MOUNTED

sql > alter database open;

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


8>验证备库是否可以继续接受主库日志


参考: http://www.dbaxiaoyu.com/archives/913

 

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/61604/viewspace-1824282/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/61604/viewspace-1824282/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: