关于 RMAN 控制文件自动备份路径中指定的 %F 说明
2019-06-06 17:17 askscuti 阅读(3351) 评论(0) 编辑 收藏 举报默认情况下,RMAN备份的属性配置一共 14 行( show all; )来自博客园AskScuti
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
其中第 5 行,很多初学者容易引起误解,把 %F 与其它特定参数搞混,最后导致备份时总是报错。
ORA-19715: invalid format c for generated name
ORA-27302: failure occurred at: slgpn
目录
1. 错误的示范例子
1.1 错误示范-备份数据文件
1.2 错误示范-路径参数设置
2. %F 的含义说明
2.1 %F 含义
2.2 备份数据文件报错原因说明
2.3 路径参数设置报错原因说明
3. %F 的使用规则
1. 错误的示范例子
我们打开控制文件自动备份,其它配置保持默认
CONFIGURE CONTROLFILE AUTOBACKUP ON;
查看当前 RMAN 配置信息
RMAN> show all; RMAN configuration parameters for database with db_unique_name SCERP are: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default CONFIGURE BACKUP OPTIMIZATION OFF; # default CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP ON; 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/oracle/product/11.2.0/dbs/snapcf_SCERP.f'; # default
这里有一个细节请注意:哪怕控制文件自动备份设置为 OFF,一旦备份全库(因为含了 SYSTEM)或者单独备份 SYSTEM 表空间数据文件时,也会自动备份控制文件。这个证明实验不再赘述。
查看当前表空间及数据文件,找一个小一些的数据文件,节省时间。
RMAN> report schema; Report of database schema for database with db_unique_name SCERP List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- ----------- ------- ------------------------------ 1 750 SYSTEM *** +ASMSYSTEM/scerp/system01.dbf 2 520 SYSAUX *** +ASMSYSTEM/scerp/sysaux01.dbf 3 90 UNDOTBS1 *** +ASMSYSTEM/scerp/undotbs01.dbf 4 5 USERS *** +ASMSYSTEM/scerp/users01.dbf 5 313 EXAMPLE *** +ASMSYSTEM/scerp/example01.dbf List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- ----------- ----------- --------------------------- 1 29 TEMP 32767 +ASMSYSTEM/scerp/temp01.dbf
1.1 错误示范-备份数据文件
RMAN> backup datafile 4 format '/u01/app/oracle/backup/data04_%F'; Starting backup at 2019-06-06 10:24:18 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00004 name=+ASMSYSTEM/scerp/users01.dbf channel ORA_DISK_1: starting piece 1 at 2019-06-06 10:24:18 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03009: failure of backup command on ORA_DISK_1 channel at 06/06/2019 10:24:18 ORA-19715: invalid format F for generated name ORA-27302: failure occurred at: slgpn
这时,报出 ORA-19715 和 ORA-27302 的错误,为什么?
1.2 错误示范-路径参数设置
设置控制文件自动备份路径(错误示范)
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/app/oracle/backup/%d_%s_%F.CTL'; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/app/oracle/backup/%d_%s_%F.CTL'; new RMAN configuration parameters are successfully stored
这个设置,感觉好像没有问题啊,妥妥滴,是不是?我们来备份下。
RMAN> backup datafile 4 format '/u01/app/oracle/backup/data04'; Starting backup at 2019-06-06 10:43:50 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00004 name=+ASMSYSTEM/scerp/users01.dbf channel ORA_DISK_1: starting piece 1 at 2019-06-06 10:43:50 channel ORA_DISK_1: finished piece 1 at 2019-06-06 10:43:51 piece handle=/u01/app/oracle/backup/data04 tag=TAG20190606T104350 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 2019-06-06 10:43:51 Starting Control File and SPFILE Autobackup at 2019-06-06 10:43:51 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03009: failure of Control File and SPFILE Autobackup command on ORA_DISK_1 channel at 06/06/2019 10:43:52 ORA-19715: invalid format s for generated name ORA-27302: failure occurred at: slgpn
这里是一看就会,一做就废栏目,给你一个可爱的笑脸😊,自己体会。报出 ORA-19715 和 ORA-27302 的错误,为什么?
2. %F 的含义说明
2.1 %F 含义
先解释 %F 的含义,为了保证我说的具有权威可靠性,把官方 MOS(文档 ID 760083.1) 里面的一句话贴出来:%F 不是备份数据文件或控制文件的有效格式。%F 仅仅用于控制文件自动备份格式。
%F is not a valid format specifier for a backup of datafiles or controlfiles. %F is used for the controlfile autobackup format only.
说的通俗些就是:%F 这个东西只能用在控制文件自动备份格式设置上的,它具有特殊性,不像其它参数可以用作备份文件的名称。这也是为什么在 1.1 小节备份数据文件的时候报错。
2.2 备份数据文件报错原因说明
因为 1.1 小节备份语句为
backup datafile 4 format '/u01/app/oracle/backup/data04_%F'
也就是将 %F 作为了数据文件备份的名称来使用了,所以报错了。因为 %F 不能作为备份名称来使用。而在 1.2 小节中 %F 并没有作为备份名称使用,但还是报错了,因为设置控制文件自动备份路径的参数,格式是有规定的(第3小节)。
2.3 路径参数设置报错原因说明
既然 %F 不能作为备份文件的名称来使用,那备份的时候就不设置了。那为什么还是报出错误?
因为 1.2 小节路径设置语句为
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/app/oracle/backup/%d_%s_%F.CTL'
看似没有问题,其实里面有个参数错了,就是这个 %s ,因为它不是控制文件备份的有效格式,因此报错。
3. %F 的使用规则
关于控制文件备份设置的有效格式,只能是:%D, %I, %M, %Y, %F, %T, %d, %n 这 8 种,且 %F 必须强制指定,否则出错 RMAN-06492。其它格式参数不能出现在控制文件备份的格式中。
下面各版本中有对指定参数格式的说明
官方文档 11g Release 2 (11.2) Database Backup and Recovery Reference :formatSpec
官方文档 Release 12.2 Database Backup and Recovery Reference :4.12 formatSpec
官方文档 Release 19 Backup and Recovery Reference :4.12 formatSpec
参数比较多,具体参考以上官方文档,下面只列举控制文件备份的有效格式参数:
%D:date 日
%I:DBID
select dbid from v$database;
%M:month 月
%Y:year 年
%T:YYYYMMDD 年月日
%d:数据库名称
%n:用x填充数据库名称到8个字符,例如
piece handle=/u01/app/oracle/backup/SCERPxxx_c-4156218123-20190606-0a.ctl comment=NONE
%F 生成格式为:c-IIIIIIIIII-YYYYMMDD-QQ
IIIIIIIIII:为数据库的DBID
YYYYMMDD:为备份生成的日期
QQ:是一个十六进制序列,从00开始,到FF
例如:控制文件自动备份生成的格式为
piece handle=/u01/app/oracle/product/11.2.0/dbs/c-4156218123-20190606-08 comment=NONE