1,rman备份文件失踪之谜
备份文件消失了,每天自动备份后,会删除前一天的备份文件,如下所示,这是怎么回事呢?
[root@earth_dbm1 data]# du -sh *
......
12K 2016-06-26
12K 2016-06-27
12K 2016-06-28
12K 2016-06-29
12K 2016-06-30
4.4G 2016-07-01
4.4G 2016-07-02
[root@earth_dbm1 data]#
2,查看备份任务
[root@earth_dbm1data]# more/tmp/oracle_fullback.log
蛮简单的自动备份脚本,每天晚上10点22分开始执行的:
[root@earth_dbm1 data]# crontab -l
10 22 * * */data/backup/scripts/rman_full_backup.sh >> /tmp/oracle_fullback.log 2>&1
[root@earth_dbm1 data]#
查看备份的日志,没有异常信息:
RMAN> 2> 3> 4> 5> 6>7> RMAN> RMAN> RMAN> RMAN> RMAN> RMAN> begin to copy thebackup to pd servers.
end to copy the backup to pd server.
RMAN> 2> 3> 4> 5> 6>7> RMAN> RMAN> RMAN> RMAN> RMAN> RMAN> begin to copy thebackup to pd servers.
end to copy the backup to pd server.
RMAN> 2> 3> 4> 5> 6>7> RMAN> RMAN> RMAN> RMAN> RMAN> RMAN> begin to copy thebackup to pd servers.
end to copy the backup to pd server.
RMAN> 2> 3> 4> 5> 6>7> RMAN> RMAN> RMAN> RMAN> RMAN> RMAN> begin to copy thebackup to pd servers.
end to copy the backup to pd server.
RMAN> 2> 3> 4> 5> 6>7> RMAN> RMAN> RMAN> RMAN> RMAN> RMAN> begin to copy thebackup to pd servers.
end to copy the backup to pd server.
[root@earth_dbm1data]#
3,查看备份脚本日志
去查看备份脚本/data/backup/scripts/rman_full_backup.sh里面的日志rman_backup.log,然后看到如下记录:
[root@earth_dbm1 2016-07-01]# more rman_backup.log
Recovery Manager: Release 11.2.0.4.0 - Production on Fri Jul 1 22:10:01 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: POWERDES (DBID=3481287162)
RMAN> 2> 3> 4> 5> 6> 7>
Starting backup at 2016-07-01 22:10:02
current log archived
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=3798 device type=DISK
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=1081 RECID=2135 STAMP=915920688
input archived log thread=1 sequence=1082 RECID=2137 STAMP=916034343
input archived log thread=1 sequence=1083 RECID=2139 STAMP=916043040
input archived log thread=1 sequence=1084 RECID=2141 STAMP=916043414
input archived log thread=1 sequence=1085 RECID=2143 STAMP=916070444
input archived log thread=1 sequence=1086 RECID=2144 STAMP=916088108
input archived log thread=1 sequence=1087 RECID=2146 STAMP=916088716
input archived log thread=1 sequence=1088 RECID=2149 STAMP=916088720
input archived log thread=1 sequence=1089 RECID=2151 STAMP=916092604
channel ORA_DISK_1: starting piece 1 at 2016-07-01 22:10:04
channel ORA_DISK_1: finished piece 1 at 2016-07-01 22:10:19
piece handle=/data/backup/data/2016-07-01/arch_POWERDES_20160701_167.bak tag=TAG20160701T221004 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
channel ORA_DISK_1: deleting archived log(s)
archived log file name=/oracle/app/oracle/flash_recovery/EARTH_M1/archivelog/2016_06_30/o1_mf_1_1081_cqbbxjt5_.arc RECID=2135 STAMP=915920688
archived log file name=/oracle/app/oracle/flash_recovery/EARTH_M1/archivelog/2016_07_01/o1_mf_1_1082_cqc5k6wh_.arc RECID=2137 STAMP=916034343
archived log file name=/oracle/app/oracle/flash_recovery/EARTH_M1/archivelog/2016_07_01/o1_mf_1_1083_cqcg0zqf_.arc RECID=2139 STAMP=916043040
archived log file name=/oracle/app/oracle/flash_recovery/EARTH_M1/archivelog/2016_07_01/o1_mf_1_1084_cqcgdpc1_.arc RECID=2141 STAMP=916043414
archived log file name=/oracle/app/oracle/flash_recovery/EARTH_M1/archivelog/2016_07_01/o1_mf_1_1085_cqd8scw3_.arc RECID=2143 STAMP=916070444
archived log file name=/oracle/app/oracle/flash_recovery/EARTH_M1/archivelog/2016_07_01/o1_mf_1_1086_cqdt1d6h_.arc RECID=2144 STAMP=916088108
archived log file name=/oracle/app/oracle/flash_recovery/EARTH_M1/archivelog/2016_07_01/o1_mf_1_1087_cqdtnd0n_.arc RECID=2146 STAMP=916088716
archived log file name=/oracle/app/oracle/flash_recovery/EARTH_M1/archivelog/2016_07_01/o1_mf_1_1088_cqdtnjtk_.arc RECID=2149 STAMP=916088720
archived log file name=/oracle/app/oracle/flash_recovery/EARTH_M1/archivelog/2016_07_01/o1_mf_1_1089_cqdyfvj6_.arc RECID=2151 STAMP=916092604
Finished backup at 2016-07-01 22:10:19
Starting backup at 2016-07-01 22:10:19
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00007 name=/oracle/app/oracle/oradata/powerdes/powerdesk01.dbf
input datafile file number=00006 name=/oracle/app/oracle/oradata/powerdes/plas01.dbf
input datafile file number=00002 name=/oracle/app/oracle/oradata/powerdes/sysaux01.dbf
input datafile file number=00001 name=/oracle/app/oracle/oradata/powerdes/system01.dbf
input datafile file number=00003 name=/oracle/app/oracle/oradata/powerdes/undotbs01.dbf
input datafile file number=00005 name=/oracle/app/oracle/oradata/powerdes/example01.dbf
input datafile file number=00004 name=/oracle/app/oracle/oradata/powerdes/users01.dbf
channel ORA_DISK_1: starting piece 1 at 2016-07-01 22:10:20
channel ORA_DISK_1: finished piece 1 at 2016-07-01 22:24:55
piece handle=/data/backup/data/2016-07-01/full_POWERDES_20160701_168.bak tag=TAG20160701T221019 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:14:36
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 2016-07-01 22:24:56
channel ORA_DISK_1: finished piece 1 at 2016-07-01 22:24:57
piece handle=/data/backup/data/2016-07-01/full_POWERDES_20160701_169.bak tag=TAG20160701T221019 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2016-07-01 22:24:57
Starting backup at 2016-07-01 22:24:57
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=1090 RECID=2153 STAMP=916093498
channel ORA_DISK_1: starting piece 1 at 2016-07-01 22:24:58
channel ORA_DISK_1: finished piece 1 at 2016-07-01 22:24:59
piece handle=/data/backup/data/2016-07-01/arch_POWERDES_20160701_170.bak tag=TAG20160701T222458 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: deleting archived log(s)
archived log file name=/oracle/app/oracle/flash_recovery/EARTH_M1/archivelog/2016_07_01/o1_mf_1_1090_cqdz9tdm_.arc RECID=2153 STAMP=916093498
Finished backup at 2016-07-01 22:24:59
sql statement: alter system archive log current
RMAN>
using channel ORA_DISK_1
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/data/2016-06-30/full_POWERDES_20160630_164.bak RECID=164 STAMP=915919808
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/data/2016-06-30/full_POWERDES_20160630_165.bak RECID=165 STAMP=915920684
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/data/2016-06-30/arch_POWERDES_20160630_166.bak RECID=166 STAMP=915920686
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/data/2016-07-01/arch_POWERDES_20160701_167.bak RECID=167 STAMP=916092604
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/data/2016-07-01/full_POWERDES_20160701_168.bak RECID=168 STAMP=916092620
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/data/2016-07-01/full_POWERDES_20160701_169.bak RECID=169 STAMP=916093496
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/data/2016-07-01/arch_POWERDES_20160701_170.bak RECID=170 STAMP=916093498
Crosschecked 7 objects
RMAN>
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=3798 device type=DISK
validation succeeded for archived log
archived log file name=/oracle/app/oracle/flash_recovery/EARTH_M1/archivelog/2016_07_01/o1_mf_1_1091_cqdz9wq3_.arc RECID=2155 STAMP=916093500
Crosschecked 1 objects
RMAN>
using channel ORA_DISK_1
specification does not match any backup in the repository
RMAN>
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=3798 device type=DISK
specification does not match any archived log in the repository
RMAN>
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
using channel ORA_DISK_1
Deleting the following obsolete backups and copies:
Type Key Completion Time Filename/Handle
-------------------- ------ ------------------ --------------------
Backup Set 164 2016-06-30 22:24:38
Backup Piece 164 2016-06-30 22:24:38 /data/backup/data/2016-06-30/full_POWERDES_20160630_164.bak
Backup Set 165 2016-06-30 22:24:44
Backup Piece 165 2016-06-30 22:24:44 /data/backup/data/2016-06-30/full_POWERDES_20160630_165.bak
Backup Set 166 2016-06-30 22:24:46
Backup Piece 166 2016-06-30 22:24:46 /data/backup/data/2016-06-30/arch_POWERDES_20160630_166.bak
Backup Set 167 2016-07-01 22:10:13
Backup Piece 167 2016-07-01 22:10:13 /data/backup/data/2016-07-01/arch_POWERDES_20160701_167.bak
deleted backup piece
backup piece handle=/data/backup/data/2016-06-30/full_POWERDES_20160630_164.bak RECID=164 STAMP=915919808
deleted backup piece
backup piece handle=/data/backup/data/2016-06-30/full_POWERDES_20160630_165.bak RECID=165 STAMP=915920684
deleted backup piece
backup piece handle=/data/backup/data/2016-06-30/arch_POWERDES_20160630_166.bak RECID=166 STAMP=915920686
deleted backup piece
backup piece handle=/data/backup/data/2016-07-01/arch_POWERDES_20160701_167.bak RECID=167 STAMP=916092604
Deleted 4 objects
RMAN>
Recovery Manager complete.
[root@earth_dbm1 2016-07-01]#
从日志文件看到如下信息:
……
Deleting the following obsoletebackups and copies:
……
backup piecehandle=/data/backup/data/2016-06-30/full_POWERDES_20160630_164.bak RECID=164STAMP=915919808
deleted backup piece
……
表明说在备份的过程中,会删除掉以前的备份记录,那么这个是rman的机制造成的,其策略是啥?
4,问题分析
查询到rman有一个备份管理器,RMAN提供了CONFIGURERETENTION POLICY命令设置备份保存策略,即设置备份文件保留多长时间。RMAN会将超出时间的备份文件标识为废弃(obsolete)。命令REPORT OBSOLETE和DELETE OBSOLETE分别用来查看废弃的文件和删除废弃的文件。RMAN跟踪备份的数据文件、控制文件、归档日志文件,并确定哪些需要保存,哪些需要标记为废弃。但RMAN不自动删除废弃的备份文件。
然后再去看备份脚本,有delete noprompt obsolete;如下所示:
[root@earth_dbm1data]# crontab -l 10 22 * * * /data/backup/scripts/rman_full_backup.sh >> /tmp/oracle_fullback.log 2>&1 [root@earth_dbm1data]# more /data/backup/scripts/rman_full_backup.sh #!/bin/sh export DATE=`date +%F` export BACK_DIR='/data/backup/data' su - oracle -c " mkdir -p $BACK_DIR/$DATE rman log=$BACK_DIR/$DATE/rman_backup.log target / <<EOF run{ backup as compressed backupset database format '$BACK_DIR/$DATE/full_%d_%T_%s.bak' plus archivelog format '$BACK_DIR/$DATE/arch_%d_%T_%s.bak' delete input; sql 'alter system archive log current'; } crosscheck backup; crosscheck archivelog all; delete noprompt expired backup; delete noprompt expired archivelog all; delete noprompt obsolete; #删除过期的所有备份记录 exit EOF " su - oracle -c " chmod 775 $BACK_DIR/$DATE/* "
#cd /home/pdbcakup/ echo "begin to copy the backup to pd servers." >> /tmp/oracle_fullback.log #cp -r $BACK_DIR/$DATE /home/pdbcakup echo "end to copy the backup to pd server." >> /tmp/oracle_fullback.log [root@earth_dbm1data]# |
果然是delete noprompt obsolete;引起的,到此问题已经知道是怎么回事了,设置delete noprompt obsolete;了导致rman备份完后会删除超出失效日期的备份文件,而oracle默认的有效rman备份文件就是一天,所以才会出现每天自动备份完后,以前的备份记录都失踪了。
5,解决问题
解决办法有以下途径:
(1) 去掉delete noprompt obsolete;
(2) 延长rman备份文件的有效期
这里采用第二种解决方案,设置rman备份保存时间为60天。
# 新的 RMAN 配置参数 RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 60 DAYS;
using target database control file instead of recovery catalog new RMAN configuration parameters: CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 60 DAYS; new RMAN configuration parameters are successfully stored
RMAN> #已成功存储新的 RMAN 配置参数 |
6,问题解决
第二天然后再等去看备份结果,就可以看到不会再删除昨天的备份了。
[root@earth_dbm1 data]# du -sh *
......
12K 2016-06-26
12K 2016-06-27
12K 2016-06-28
12K 2016-06-29
12K 2016-06-30
4.4G 2016-07-01
4.4G 2016-07-02
[root@earth_dbm1 data]#