ITPub博客

首页 > 数据库 > 数据库开发技术 > 增量备份转回了全备份

增量备份转回了全备份

原创 数据库开发技术 作者:wilson2006 时间:2019-06-21 16:54:07 0 删除 编辑

周日下午来公司加班发现前两天刚上了增量备份(参见http://wilson2006.itpub.net/post/37155/460397)的监控系统磁盘空间满了,查看日志发现大量的如下异常信息,

[@more@]

ARC0: Encountered disk I/O error 19502
Sun Apr 27 10:30:00 2008
ARC0: Closing local archive destination LOG_ARCHIVE_DEST_10: '/u01/app/oracle/flash_recovery_area/EMAR/archivelog/2008_04_27/o1_mf_1_8733_417s91q9_.arc' (error 19502)
(emar)
Deleted Oracle managed file /u01/app/oracle/flash_recovery_area/EMAR/archivelog/2008_04_27/o1_mf_1_8733_417s91q9_.arc
Sun Apr 27 10:30:03 2008
Errors in file /u01/app/oracle/admin/emar/bdump/emar_arc0_20501.trc:
ORA-19502: write error on file "/u01/app/oracle/flash_recovery_area/EMAR/archivelog/2008_04_27/o1_mf_1_8733_417s91q9_.arc", blockno 956417 (blocksize=512)
ORA-27072: File I/O error
Linux Error: 2: No such file or directory
Additional information: 4
Additional information: 956417
Additional information: 667136
ORA-19502: write error on file "/u01/app/oracle/flash_recovery_area/EMAR/archivelog/2008_04_27/o1_mf_1_8733_417s91q9_.arc", blockno 956417 (blocksize=512)
同时发现系统中出现大量的系统I/O等待事件“log file switch (archiving needed)”,显然是磁盘空间占满导致归档无法进行,日志写满后数据库进程挂起,马上删除了部分旧的备份文件把空间让出来,然后手工执行日志切换,继续观察,发现系统状态开始恢复正常,新的数据开始进入了。
多亏发现的早,没有重要数据的丢失,只丢失了部分不涉及计费的日志信息,但是还是惊了一下,如果一天都忙别的事,没有登陆和检查数据库状态的话,损失就会很大,后果不堪设想。
磁盘空间的问题其实本来是注意到的,但是还是低估了每天的归档日志量和RMAN备份的量,比想象的还是要大不少,昨晚观察时的空间占用显示还是80%多一点,早上有事,本来想晚点时候再看的,没想到到中午就会满。
认真分析一下本机的应用特点,其实也不是很奇怪,监控系统的特点就是大量的数据吞吐量,系统中只保存最近7天的流水数据,过期的数据作完汇总统计后每天自动清除,原先就是因为空间不足的问题,把归档和RMAN备份都停掉了,现在看来还是空间占用过大,但是根据系统的特点,其实数据量每天是保持在一个合理的水平的,没有太多的空间占用波动,因为系统中始终保持的是7天的数据量规模,于是将以上的脚本改为如下的全备份脚本,每次备份前将前日的备份全部删除,应该可以解决空间问题,同时保持系统时刻拥有一份热备份可用。
按照上面的备份策略的脚本如下,
$ crontab -l
10 1 * * * /u02/rman_bak/scripts/rmanback.sh &
$ more rmanback.sh
#!/bin/sh
#set env
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/db10g
export ORACLE_SID=emar
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=$ORACLE_HOME/bin:$PATH
DATE=`date +%Y%m%d`
BACKUP_PATH=/u02/rman_bak
TARGET_SID=emar
RMAN_SID=emar
BIN=$ORACLE_HOME/bin
# Delete the data backuped last time
rm -f $BACKUP_PATH/data/*
echo "-----------------------------start-----------------------------";date
#backup start
$BIN/rman log $BACKUP_PATH/log/rman_full_$DATE.log <connect catalog rman/rman@$RMAN_SID ;
connect target sys/sys229@$TARGET_SID ;
resync catalog ;
run{
allocate channel c1 device type disk parms="blksize=262144" ;
crosscheck backupset of database ;
crosscheck backupset of archivelog all ;
delete noprompt obsolete ;
delete noprompt expired backupset of database ;
delete noprompt expired backupset of archivelog all ;
backup database include current controlfile format '$BACKUP_PATH/data/data_full_$D
ATE_%d_%T_%s.bak' filesperset = 3 ;
sql 'ALTER SYSTEM ARCHIVE LOG CURRENT' ;
backup archivelog all delete input format '$BACKUP_PATH/data/arch_full_%DATE_%d_%T
_%s.bak' filesperset = 3 ;
release channel c1 ;
}
exit;
EOF
$BIN/exp rman/rman@$RMAN_SID file=$BACKUP_PATH/data/exp_rman_$DATE.dmp log=$BACKUP_P
ATH/log/exp_rman_$DATE.log
echo "------------------------------end------------------------------";date

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/768134/viewspace-1003000/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-11-04

  • 博文量
    35
  • 访问量
    32339