搭建DATA GUARD,利用RMAN备份恢复备库时,由于RMAN不会备份REDO文件,还原后的备库缺少REDO日志文件,对于用归档日志同步数据的备库,影响不是很大,依然可以应用日志同步主库的数据变更,但是如果主/备库切换的话,就不行了,对于这样控制文件里记录了REDO的信息,但是在存储上却没有对应的文件的备库,此时删除控制文件中的REDO信息是不允许的。

SQL> alter database drop logfile group 1;

alter database drop logfile group 1

*

ERROR at line 1:

ORA-01156: recovery or flashback in progress may need access to files

那该如何解决这个问题呢,也很简单,不让删这些没有文件的REDO信息,还是让建的,那么就先在主库和备库都建3组新的REDO日志。

SQL> alter database add logfile group 4 '+DATA/fhacdb/redo04.log' size 1024M;

Database altered.

SQL> alter database add logfile group 5 '+DATA/fhacdb/redo05.log' size 1024M;

Database altered.

SQL> alter database add logfile group 6 '+DATA/fhacdb/redo06.log' size 1024M;

Database altered.

现在主库和备库的控制文件记录的REDO日志信息如下:

主库:

SQL> select GROUP#,SEQUENCE#,STATUS,ARCHIVED from v$log;

GROUP# SEQUENCE# STATUS ARC

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

1 17476 ACTIVE YES

2 17474 INACTIVE YES

3 17475 INACTIVE YES

4 17477 ACTIVE YES

5 17478 ACTIVE YES

6 17479 CURRENT NO

备库:

SQL> select GROUP#,SEQUENCE#,STATUS,ARCHIVED from v$log;

GROUP# SEQUENCE# STATUS ARC

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

1 17476 CLEARING YES

2 17474 CLEARING YES

3 17475 CLEARING YES

4 17477 CLEARING YES

5 17478 CLEARING YES

6 17479 CURRENT YES

备库不让删REDO日志,不代表主库也不让删,切换主库日志,当STATUS状态为INACTIVE时,删掉前3组REDO日志。

SQL> alter database drop logfile group 1;

Database altered.

SQL> alter database drop logfile group 2;

Database altered.

SQL> alter database drop logfile group 3;

Database altered.

此时备库还是那6组日志信息,包括前3组没有文件的日志信息和后建立的3组正确的REDO日志,而主库现在只有3组后建立的REDO信息,这样就好办啦,主库重建备库STANDBY控制文件,发给备库,备库只要应用这个控制文件就没有前3组错误的REDO信息啦。

SQL> select GROUP#,SEQUENCE#,STATUS,ARCHIVED from v$log;

GROUP# SEQUENCE# STATUS ARC

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

4 17477 CLEARING YES

5 17478 CLEARING YES

6 17479 CURRENT YES

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐