/* 2008/06/06
*环境:linux5 + Oracle10g
*循序渐进oracle——数据库管理、优化与备份恢复
*循序渐进oracle第7章:备份与恢复之Nocatalog方式的备份方案制定
*每周两次全备份,其他每日执行归档日志的备份(即周日和周三进行全备份,其他每天执行归档日志的备份)
*/
测试环境:
1 操作系统:Redhat Linux 5
[oracle@mzl proc]$ cat /proc/version
Linux version 2.6.18-8.el5 (brewbuilder@ls20-bc2-14.build.redhat.com) (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #1 SMP Fri Jan 26 14:15:21 EST 2007
2 数据库版本:Oracle10g
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
3 数据库的名字:orcl
SQL> show parameter db_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string orcl
4 归档状态
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 22
Next log sequence to archive 24
Current log sequence 24
5 在/u01/backup/fullbackup.sql编写全备份脚本
文件内容:
run{
backup full tag 'orclfull' database
include current controlfile
format '/home/backup/orclful_%d_%T_%s'
plus archivelog
format '/home/backup/orclful_archive_%d_%T_%s' delete all input;
delete noprompt obsolete;
}
6 给脚本授予权限
[oracle@mzl backup]$ chmod +x fullbackup.sql
7 在/u01/backup/archivelogbackup.sql编写归档备份脚本
文件内容:
run{
backup archivelog all
format '/home/backup/onlyarchivelog_%d_%T_%s' delete all input;
}
8 给脚本授予权限
[oracle@mzl backup]$ chmod +x archivelogbackup.sql
9 编写一个判断星期几,然后调用相应的脚本/u01/backup/startrman.sh
脚本内容:
. /home/oracle/.bash_profile
SH_HOME=/u01/backup
export SH_HOME
DATE=`date +%Y%m%d`
week=`date +%w`
#------------------------------
#Confirm whether the oracle is runing
#-----------------------------
ps -ef|grep dbw0_$ORACLE_SID | grep -v grep
#-----------------------------
#Begin to backup
#-----------------------------
if [$? -eq 0]:then
if[ $week="0" ] || [ $week="3" ];then
rman target/ @/u01/backup/fullbackup.sql log=/home/backup/fullbackup`date +%Y%m%d`.log
else
rman target/ @/u01/backup/archivelogbackup.sql log=/home/backup/archivelogbackup`date +%Y%m%d`.log
fi
fi
8 给脚本授予权限
[oracle@mzl backup]$ chmod +x startrman.sh
9 编写定时器crontab,定制每天1:30调用/u01/backup/startrman.sh脚本
[oracle@mzl ~]$ crontab -e
内容:
30 1 * * 0-6 /u01/backup/startrman.sh
查看crontab:
[oracle@mzl ~]$ crontab -l
30 1 * * 0-6 /u01/backup/startrman.sh
最后:测试日期可以用
[oracle@mzl ~]$ echo date=`date +%Y%m%d`
date=20080610
测试星期:
[oracle@mzl ~]$ echo week=`date +%w`
week=2
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12778571/viewspace-332698/,如需转载,请注明出处,否则将追究法律责任。