25253 导致DG备库无法应用归档

昨天去某客户那里做巡检,顺便看一下上次搭建的RAC-DG环境是否正常,上次的DG是8月20日运行的,而DG备库从8月31日之后实例就没有开启过,后来询问后才得知,原来那天断过一次电,后来重启了机器。直到今天我过去了,才把实例启动起来。也就是说,从8月31日到今天快1个月的时间,备库一直处于未用状态。

 

接着查看备库归档,显然已经缺失了很多了,tnread1 最后一个日志为1661,tnread2 最后一个日志为1324,而此时主库中还保留的最早的日志是9月8日的,thread 1 最早为2055,thread 2 最早为1555。主备之间归档足足差了有好几百个(正常,都快一个月没开实例了)

 

ASMCMD> ls

2014_09_08/

2014_09_09/

2014_09_10/

2014_09_11/

2014_09_12/

2014_09_13/

2014_09_14/

2014_09_15/

2014_09_16/

2014_09_17/

2014_09_18/

2014_09_19/

2014_09_20/

2014_09_21/

2014_09_22/

2014_09_23/

2014_09_24/

2014_09_25/

ASMCMD> cd 2014_09_08

ASMCMD> ls

thread_1_seq_2055.500.857723297

thread_1_seq_2056.494.857725223

thread_1_seq_2057.493.857728031

thread_1_seq_2058.490.857729849

(略)……

thread_2_seq_1555.502.857723297

thread_2_seq_1556.499.857723301

thread_2_seq_1557.497.857723305

thread_2_seq_1558.496.857725225

(略)……

ASMCMD>

 

尽管在脚本中配置了备份完归档后用delete input来删除归档,以减小归档占用的磁盘空间,可以在RMAN脚本的备份日志中看到,从8月31日起,陆续有报RMAN-08137,提示由于备库还未获得归档,导致无法删除:

 

归档日志文件名=+DATA/sis/archivelog/2014_08_31/thread_1_seq_1661.1208.857041081 RECID=3930 STAMP=857041081

RMAN-08137: 警告: 归档日志未删除, 因为备用或上游捕获进程需要它

归档日志文件名=+DATA/sis/archivelog/2014_08_31/thread_1_seq_1662.1212.857042297 线程=1 序列=1662

RMAN-08137: 警告: 归档日志未删除, 因为备用或上游捕获进程需要它

归档日志文件名=+DATA/sis/archivelog/2014_09_01/thread_2_seq_1325.1204.857122335 线程=2 序列=1325

RMAN-08137: 警告: 归档日志未删除, 因为备用或上游捕获进程需要它

 

但是,由于FRA磁盘空间是有限的,使用到一定的百分比(有参数可调整),Oracle会自动清空其中的内容,以释放空间,因此在FRA中的归档日志大约保留了18天,从9月8日到9月25日,而8月31日的归档肯定是没有的了,最近的备份集只有到9月15日的。

 

于是决定重新搭建一下DG,关闭备库实例,删除全部数据库文件(数据文件、控制文件、日志文件),只保留密码文件、参数文件、tnsnames.ora、listener.ora即可,重建很方便,用11g的duplicate重新同步一下就可以了,命令如下:

 

rman target / auxiliary sys/oracle@sisdg

RMAN> run{

allocate channel c1 device type disk;

allocate auxiliary channel c2 device type disk;

set newname for tempfile 1 to 'D:\app\administrator\oradata\sis\temp.269.852648395';

duplicate target database for standby from active database dorecover;

release channel c1;

release channel c2;

}

 

执行完以上操作后,备库与主库的归档就同步了

 

主库:

 

SQL> archive log list

数据库日志模式            存档模式

自动存档             启用

存档终点            USE_DB_RECOVERY_FILE_DEST

最早的联机日志序列     2617

下一个存档日志序列   2619

当前日志序列           2619

SQL> select thread#,max(sequence#) from v$archived_log group by thread#;

 

   THREAD# MAX(SEQUENCE#)

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

         1           2619

         2           2556

 

备库:

 

SQL> archive log list

数据库日志模式            存档模式

自动存档             启用

存档终点            D:\archivelog

最早的联机日志序列     0

下一个存档日志序列   0

当前日志序列           0

SQL> select thread#,max(sequence#) from v$archived_log group by thread#;

 

   THREAD# MAX(SEQUENCE#)

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

         1           2619

         2           2556

 

主备库查看了一下v$archive_dest_status,两边都是的status列都是valid的,因此开启备库的redo apply,看到日志也开始已经应用了

 

SQL> select thread#,sequence#,applied from v$archived_log;

 

   THREAD#  SEQUENCE# APPLIED

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

         1       2617 YES

         1       2618 YES

         2       2556 YES

         1       2619 NO

         1       2620 NO

 

由于采用的是LGWR ASYNC模式传递日志,再重新创建一次standby redo logfile,主库每个thread有3组日志,所以备库创建了7组日志

此外,备库的alertlog里还报了个错误,因为是从主库duplicate过来的,RMAN的配置信息还保留着主库的一些参数:

 

Starting control autobackup

Got error: 19624

********************  WARNING ***************************

The errors during Server autobackup are not fatal, as it

is attempted after sucessful completion of the command.

However, it is recomended to take an RMAN control file

backup as soon as possible because the Autobackup failed

with the following error:

ORA-19624: operation failed, retry possible

ORA-19504: failed to create file "C:\ORABACKUP\BACKUPSETS\SIS1-C-3160648191-20140925-02.CTL"

ORA-27040: file create error, unable to create file

OSD-04002: 无法打开文件

O/S-Error: (OS 3) 系统找不到指定的路径。

********************  END OF WARNING *******************

 

更多详情见请继续阅读下一页的精彩内容

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6f1e0aa7f8e0326c0193b89a83b5984c.html