MAXPIECESIZE与FORMAT参数设置不合理导致RMAN备份失败(2)

正常情况下,生成的最大备份集有170M,但是刚才通过修改MAXPIECESIZE参数为100M后,在生成备份集时,一旦备份集大小超过100M时,就会自动生成第2个备份片,而由于我在format中仅仅是配置了“$ORACLE_SID-%I_%T_%t_%s.db”,这几个通配符的含义是:
%I -- DBID
%T -- 日期时间(年月日)
%t -- 自动生成的时间戳
%s -- 备份集序列号(Sequence)

当第一个备份片达到MAXPIECESIZE限定的100M后,想去生成第2个文件,但是由于这几个通配符不足以区分备份集中的备份片(生成了同一个文件名),当第2个备份片创建时提示文件已存在,最终导致备份失败。

解决这个问题的方法有2种:

1. 在format参数中增加%p通配符

当超过MAXPIECESIZE后,只有%p才能够生成不同的备份片,因为%t这个时间戳不足以区分不同的别分片的名称

[oracle@ora10g backupsets]$ . ../scripts/backup_full.sh

RMAN> RMAN> RMAN> RMAN> RMAN> RMAN> RMAN> RMAN> RMAN> RMAN> 2> 3> RMAN> RMAN> RMAN> RMAN> [oracle@ora10g backupsets]$ ls -lrth ../backupsets/
total 375M
-rw-r----- 1 oracle oinstall 9.8M Dec 24 14:24 ora10g-4175411955_20141224_867162246_380.arc
-rw-r----- 1 oracle oinstall 1.7M Dec 24 14:24 ora10g-4175411955_20141224_867162255_381.arc
-rw-r----- 1 oracle oinstall 439K Dec 24 14:24 ora10g-4175411955_20141224_867162257_382.arc
-rw-r----- 1 oracle oinstall 747K Dec 24 14:33 ora10g-4175411955_20141224_867162820_384.arc
-rw-r----- 1 oracle oinstall 170M Dec 24 14:36 ora10g-4175411955_20141224_867162823_385.db
-rw-r----- 1 oracle oinstall 491K Dec 24 14:36 ora10g-4175411955_20141224_867162990_386.arc
-rw-r----- 1 oracle oinstall 7.3M Dec 24 14:36 ora10g-c-4175411955-20141224-00.ctl
-rw-r----- 1 oracle oinstall  30K Dec 24 14:39 ora10g-4175411955_20141224_867163193_388.arc
-rw-r----- 1 oracle oinstall 7.4M Dec 24 15:03 ora10g-4175411955_20141224_867164604_390_1.arc
-rw-r----- 1 oracle oinstall  99M Dec 24 15:05 ora10g-4175411955_20141224_867164614_391_1.db
-rw-r----- 1 oracle oinstall  73M Dec 24 15:06 ora10g-4175411955_20141224_867164614_391_2.db
-rw-r----- 1 oracle oinstall  22K Dec 24 15:06 ora10g-4175411955_20141224_867164776_392_1.arc
-rw-r----- 1 oracle oinstall 7.3M Dec 24 15:06 ora10g-c-4175411955-20141224-01.ctl
[oracle@ora10g backupsets]$


在format中增加%p通配符后,问题得到解决,通过脚本备份集又可以正常创建备份集了,注意由于配置了%p,这里db的备份集变成了2个备份片,分别为“_1”,“_2”,以100M为分割点(MAXPIECESIZE指定的大小)


[oracle@ora10g backupsets]$ cat ../logs/rman.log |grep ORA-
ORA-19504: failed to create file "/u01/orabackup/backupsets/ora10g-4175411955_20141224_867163196_389.db"

ORA-27038: created file already exists
[oracle@ora10g backupsets]$

由于RMAN备份日志用的是append方式,抓取出来的这个错误时之前记录进去的,没有新增的ORA-27038出现了

2. 将MAXPIECESIZE的值清空

MAXPIECESIZE设置为无限大,自然可以解决备份集超过上限的问题,也可以不用配置%p,但是不推荐使用这种方法,如果因为数据库的数据量非常大,将导致生成的备份集过大,不利于存储和恢复

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK clear;

old RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 100 M;
old RMAN configuration parameters are successfully deleted    --原来配置的MAXPIECESIZE的值清空完成


RMAN> show all;


RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/orabackup/backupsets/ora10g-%F.ctl';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;
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 ARCHIVELOG DELETION POLICY TO NONE;
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/10.2.0/db_1/dbs/snapcf_ora10g.f'; # default

可以看到,刚才MAXPIECESIZE的值在show all中已经不存在了,也就是对备份片没有限制了

再次进行备份,可以通过脚本运行,也可以单独执行下面的备份语句:
RMAN> backup as compressed backupset database format '$RMAN_BACKUPSETS/$ORACLE_SID-%I_%T_%t_%s.db' tag 'db_bak' plus archivelog format '$RMAN_BACKUPSETS/$ORACLE_SID-%I_%T_%t_%s.arc' not backed up 1 times delete all input tag 'arc_bak';

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

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