1.发现问题

    最近使用备份软件对客户11G RAC数据库进行备份,发现备份失败查看日志发现数据库报ORA-00245: control file backup failed; target is likely on a local file system错误。

2.问题分析

    本报错出现于oracle 11.2.0.1.0及以后的版本中,应用于所有平台仅仅RAC环境会发生,因为oracle 11Gr2控制文件备份机制的改变,集群中的任何实例都要可以写入快照文件。当然这个文件也就要对所有实例可见,所以这个快照文件要设置在共享设备上。

我们现在看一下本机设置:

[oracle@rac1 ~]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Mon Jun 21 10:56:57 2021
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
connected to target database: ORCL (DBID=1601183368)

RMAN> show all;
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/product/11.2.0/db_1/dbs/snapcf_orcl1.f'; # default

由上可见本机是默认的未进行修改过。

 

3.解决方法

    修改rman备份配置,将控制文件快照定向到共享磁盘组,只需在一个节点修改即可。

RMAN> CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+DATA/ORCL/snapcf_orcl1.f';

new RMAN configuration parameters:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+DATA/ORCL/snapcf_orcl1.f';
new RMAN configuration parameters are successfully stored

查看修改后的rman选项:

RMAN> show all    
2> ;
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+DATA/ORCL/snapcf_orcl1.f';

问题解决,再次运行备份软件可以正常顺利备份。

4.知识点

快照控制文件的作用

    控制文件在数据库的运行过程中时刻都在发生变化,rman备份需要依赖于控制文件和恢复目录。也就是说在整个rman备份的过程中,控制文件中的检查点信息,SCN信息和记录的文件结构信息这些不能改变,一旦改变那么数据的一致性就无法被保证,那么这个备份也就失去了意义。如果将控制文件锁定确实保证了数据库从备份开始到结束数据的一致性但是在锁定期间数据库便无法正常进行操作,这样的代价一样很大。所以为了解决这个问题快照控制文件应运而生,给备份开始时的控制文件做一个快照,整个备份过程都使用快照控制文件进行备份和同步操作。

    快照控制文件是RMAN在系统指定位置生成的当前控制文件的一个副本。RMAN在备份或同步操作期间对实际的控制文件进行一个短暂的锁定,并根据控制文件内容生成或者刷新快照控制文件,当这个动作完成后rman就切换到使用快照控制文件进行备份和同步。保证了rman备份和同步的过程中使用的控制文件是不变的。