Oracle 10g backup policy
2012-07-14 11:01
302 查看
DBA对生产库的维护主要重点在于:数据库备份,数据库监控.DBA的其他任何工作都必须基于这两点之上才具有意义.
其实这与SA(System Administrator)的工作本质上完全一致,至于数据库应用优化那是另外一种境界.
Oracle数据库的备份有如下要点
1, 备份内容是什么?
数据文件,控制文件,归档文件,参数文件.
2, 备份策略是什么?
每周一至两次全备,剩下其他的每天备份归档日志.
3, 备份注意事项?
a. 开启自动备份控制文件;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
b. 设置适当的备份保留策略,我一般将备份保留2份冗余;
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
c. 开启备份优化,主要是为了能够不重复备份归档日志;
CONFIGURE BACKUP OPTIMIZATION ON;
3, 备份如何监控?
当备份日志中出现error或其他异常,需要发送邮件到DBA,进行及时检查.
1, Oracle单实例备份并监控
备份
对hdb数据库进行备份
1, 每天凌晨2点进行备份
[oracle@oracle backup]$ crontab -e
0 2 * * 0-6 /home/oracle/backup/backup.sh
2, 每周日,周三进行全备份,其他时间进行归档日志备份.
[oracle@oracle backup]$ cat backup.sh
[oracle@oracle backup]$ less fullbackup.sql
run{
backup full tag 'FULL' database
include current controlfile format '/home/oracle/backup/hdbFULL_%d_%T_%s'
plus archivelog format '/home/oracle/backup/hdbARCH_%d_%T_%s' delete all input;或delete all input 删除归档日志.
RESTORE DATABASE VALIDATE;
CROSSCHECK BACKUP OF DATABASE;
REPORT OBSOLETE;
DELETE NOPROMPT OBSOLETE;
}
如果不使用delete all input或者加入下面删除语句亦可.
LIST BACKUP SUMMARY;该语句写在run{}脚本无法执行.
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-8';删除8天前的归档日志.
4, 归档备份archbackup.sql
[oracle@oracle backup]$ less archbackup.sql
run{
backup TAG 'ARCH' archivelog all format '/home/oracle/backup/hdbARCH_%d_%T_%s' delete all input;
}
监控
通过对备份日志的筛选,当含有ERROR,Warning,RMAN-,ORA- 等报错字眼时,发送邮件告知DBA去检查备份状况,并进行处理.
1, 定制计划任务
[oracle@oracle backup]$ crontab -e
0 2 * * 0-6 /home/oracle/backup/backup.sh
0 6 * * 0-6 /home/oracle/backup/checkbackup.sh
2, 检查筛选备份日志,并发送邮件(或者将该脚本与backup.sh合并).
[oracle@oracle backup]$ less checkbackup.sh
删除归档可以放在备份脚本,也可以单独使用脚本进行删除.
delete archivelog until time '12-APR-12';
delete archivelog until time 'sysdate-40';
delete archivelog all completed before '12-APR-12';
delete archivelog all completed before 'sysdate-40';
因为备份是按照冗余保利的,所以归档日志会全部保留在数据库,需要定时对老旧的归档日志进行删除,以保证磁盘空间充足.
比较以上两个删除的不同之处
RMAN> delete archivelog all completed before 'sysdate-20';
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=158 devtype=DISK
List of Archived Log Copies
Key Thrd Seq S Low Time Name
------- ---- ------- - --------- ----
263 1 167 A 25-APR-12 /u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_167_7t9cks0z_.arc
264 1 168 A 05-MAY-12 /u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_168_7t9dlcx1_.arc
265 1 169 A 05-MAY-12 /u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_169_7t9fbyl6_.arc
266 1 170 A 05-MAY-12 /u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_170_7t9fcyxr_.arc
Do you really want to delete the above objects (enter YES or NO)? no
RMAN> delete archivelog until time 'sysdate-20';
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=158 devtype=DISK
List of Archived Log Copies
Key Thrd Seq S Low Time Name
------- ---- ------- - --------- ----
263 1 167 A 25-APR-12 /u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_167_7t9cks0z_.arc
264 1 168 A05-MAY-12/u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_168_7t9dlcx1_.arc
265 1 169 A05-MAY-12/u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_169_7t9fbyl6_.arc
266 1 170 A05-MAY-12/u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_170_7t9fcyxr_.arc
267 1 171 A05-MAY-12/u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_08/o1_mf_1_171_7tk2hlbl_.arc
Do you really want to delete the above objects (enter YES or NO)? no
2, Oracle RAC备份并监控
RAC的备份原理是:在一个节点上执行数据库备份,同时只要满足该节点可以访问到其他任意节点的归档日志即可.
这样,RAC与单实例备份有所不同,主要体现在归档日志的备份上面,分2种情况;
(1) 归档日志采用的是node-crossed归档,归档存放在各个节点自身的文件系统下.
此时需要设置单独通道让备份节点可以访问到各个节点.
a.建立2个通道,每个通道指定的目录或自定义的目录分别为各节点可以访问并存放数据(这里是/home/oracle/backup),每个节点会将备份集放到该目录.
b.建议备份这2个通道指定的路径为共享,这样这2节点均可以访问该共享(下面的例子是按a情况测试的,所以备份集保留在每个节点的/home/oracle/backup).
备份
[oracle@rac1 backup]$ vi fullbackup.sql
run{
allocate channel c1 device type disk connect sys/oracle@wxxrdb1; 也可以在这里定义路径和文件格式
allocate channel c2 device type disk connect sys/oracle@wxxrdb2;
backup full tag 'FULL' database
include current controlfile format '/home/oracle/backup/FULL_%d_%T_%s'
plus archivelog format '/home/oracle/backup/ARCH_%d_%T_%s' delete all input;delete all input 删除归档日志,可以不删除归档.
RESTORE DATABASE VALIDATE;
CROSSCHECK BACKUP OF DATABASE;
REPORT OBSOLETE;
DELETE NOPROMPT OBSOLETE;
}
如果不使用delete all input或者加入下面删除语句亦可.
LIST BACKUP SUMMARY;该语句写在run{}脚本无法执行.
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-8';删除8天前的归档日志.
[oracle@rac1 backup]$ vi fullbackup.sql
run{
allocate channel c1 device type disk format '/home/oracle/backup/%T' connect sys/oracle@wxxrdb1; 也可以在这里定义路径和文件格式
allocate channel c2 device type disk format'/home/oracle/backup/%T'connect sys/oracle@wxxrdb2; 节点二会备份到它自己的统一目录.
backup full tag 'FULL' database
include current controlfile
plus archivelog delete all input;delete all input 删除归档日志,亦可以不删除归档.
RESTORE DATABASE VALIDATE;
CROSSCHECK BACKUP OF DATABASE;
REPORT OBSOLETE;
DELETE NOPROMPT OBSOLETE;
}
#如果不使用delete all input或者加入下面删除语句亦可.
LIST BACKUP SUMMARY;该语句写在run{}脚本无法执行.
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-8';删除8天前的归档日志.
所以如果是交叉归档,那么备份最好需要准备一个共享的磁盘,建立共享的目录,让各节点都像里面备份.
监控基本和单实例没有区别.
备份维护主要是删除归档日志,可以在备份脚本中删除,也可以单独脚本删除,交叉归档模式的归档删除可以参见<<10G RAC Cross-Instance Archivelog删除>>一文.
(2) 归档使用Cluster方式,通过共享的ASM磁盘存放归档日志.此时的备份与单实例完全一样,可以参见单实例进行备份,也考虑这3个方面的内容,备份,监控,备份维护.
备份最后的结果是:每周产生2次新的全备份FULL,并且保留着从备份开始到当前的所有归档日志文件ARCH.
其实这与SA(System Administrator)的工作本质上完全一致,至于数据库应用优化那是另外一种境界.
Oracle数据库的备份有如下要点
1, 备份内容是什么?
数据文件,控制文件,归档文件,参数文件.
2, 备份策略是什么?
每周一至两次全备,剩下其他的每天备份归档日志.
3, 备份注意事项?
a. 开启自动备份控制文件;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
b. 设置适当的备份保留策略,我一般将备份保留2份冗余;
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
c. 开启备份优化,主要是为了能够不重复备份归档日志;
CONFIGURE BACKUP OPTIMIZATION ON;
3, 备份如何监控?
当备份日志中出现error或其他异常,需要发送邮件到DBA,进行及时检查.
1, Oracle单实例备份并监控
备份
对hdb数据库进行备份
1, 每天凌晨2点进行备份
[oracle@oracle backup]$ crontab -e
0 2 * * 0-6 /home/oracle/backup/backup.sh
2, 每周日,周三进行全备份,其他时间进行归档日志备份.
[oracle@oracle backup]$ cat backup.sh
#!/bin/bash # Oracle database hdb backup BENGIN # Jeron Peng 2012/05/18 # 1,Set the environment variable . /home/oracle/.bash_profile export SH_HOME=/home/oracle/backup DATE=`date +"%Y%m%d"` WEEK=`date +"%w"` # 2,Check the oracle database hdb is running or not ps -ef|grep dbw0_$ORACLE_SID|grep -v grep >> /dev/null # 3,Start backup if [ $? -eq 0 ]; then if [ $WEEK = "0" ]||[ $WEEK = "3" ]; then rman target / @$SH_HOME/fullbackup.sql log=$SH_HOME/full_$DATE.log else rman target / @$SH_HOME/archbackup.sql log=$SH_HOME/arch_$DATE.log fi fi3, 全备份fullbackup.sql
[oracle@oracle backup]$ less fullbackup.sql
run{
backup full tag 'FULL' database
include current controlfile format '/home/oracle/backup/hdbFULL_%d_%T_%s'
plus archivelog format '/home/oracle/backup/hdbARCH_%d_%T_%s' delete all input;或delete all input 删除归档日志.
RESTORE DATABASE VALIDATE;
CROSSCHECK BACKUP OF DATABASE;
REPORT OBSOLETE;
DELETE NOPROMPT OBSOLETE;
}
如果不使用delete all input或者加入下面删除语句亦可.
LIST BACKUP SUMMARY;该语句写在run{}脚本无法执行.
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-8';删除8天前的归档日志.
4, 归档备份archbackup.sql
[oracle@oracle backup]$ less archbackup.sql
run{
backup TAG 'ARCH' archivelog all format '/home/oracle/backup/hdbARCH_%d_%T_%s' delete all input;
}
监控
通过对备份日志的筛选,当含有ERROR,Warning,RMAN-,ORA- 等报错字眼时,发送邮件告知DBA去检查备份状况,并进行处理.
1, 定制计划任务
[oracle@oracle backup]$ crontab -e
0 2 * * 0-6 /home/oracle/backup/backup.sh
0 6 * * 0-6 /home/oracle/backup/checkbackup.sh
2, 检查筛选备份日志,并发送邮件(或者将该脚本与backup.sh合并).
[oracle@oracle backup]$ less checkbackup.sh
# !/bin/bash # Check the database backup status, if exists errors or warnings, inform to DBA # Jeron Peng 2012/05/18 # Check backup log and sendmail export SH_HOME=/home/oracle/backup DATE=`date +"%Y%m%d"` if [ -f "$SH_HOME/full_$DATE.log" ]; then grep -E -i "warning|error|rman-|ora-" $SH_HOME/full_$DATE.log >> /dev/null if [ $? -eq 0 ]; then mail -s "Error RMAN Full Backup hdb on oracle.sannet.net `date +"%m/%d/%Y"`" monitor@oraclegc.com < $SH_HOME/full_$DATE.log fi fi if [ -f "$SH_HOME/arch_$DATE.log" ]; then grep -E -i "warning|error|rman-|ora-" $SH_HOME/arch_$DATE.log >> /dev/null if [ $? -eq 0 ]; then mail -s "Error RMAN Archivelog Backup hdb on oracle.sannet.net `date +"%m/%d/%Y"`" monitor@oraclegc.com < $SH_HOME/arch_$DATE.log fi fi if [ ! -f "$SH_HOME/full_$DATE.log" ]&&[ ! -f "$SH_HOME/arch_$DATE.log" ]; then mail -s "No RMAN Backup hdb on $HOSTNAME `date +"%m/%d/%Y"`" monitor@oraclegc.com << EOF No RMAN backup hdb on $HOSTNAME `date +"%m/%d/%Y"`, please check it!!! EOF fi备份维护
删除归档可以放在备份脚本,也可以单独使用脚本进行删除.
delete archivelog until time '12-APR-12';
delete archivelog until time 'sysdate-40';
delete archivelog all completed before '12-APR-12';
delete archivelog all completed before 'sysdate-40';
因为备份是按照冗余保利的,所以归档日志会全部保留在数据库,需要定时对老旧的归档日志进行删除,以保证磁盘空间充足.
比较以上两个删除的不同之处
RMAN> delete archivelog all completed before 'sysdate-20';
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=158 devtype=DISK
List of Archived Log Copies
Key Thrd Seq S Low Time Name
------- ---- ------- - --------- ----
263 1 167 A 25-APR-12 /u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_167_7t9cks0z_.arc
264 1 168 A 05-MAY-12 /u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_168_7t9dlcx1_.arc
265 1 169 A 05-MAY-12 /u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_169_7t9fbyl6_.arc
266 1 170 A 05-MAY-12 /u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_170_7t9fcyxr_.arc
Do you really want to delete the above objects (enter YES or NO)? no
RMAN> delete archivelog until time 'sysdate-20';
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=158 devtype=DISK
List of Archived Log Copies
Key Thrd Seq S Low Time Name
------- ---- ------- - --------- ----
263 1 167 A 25-APR-12 /u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_167_7t9cks0z_.arc
264 1 168 A05-MAY-12/u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_168_7t9dlcx1_.arc
265 1 169 A05-MAY-12/u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_169_7t9fbyl6_.arc
266 1 170 A05-MAY-12/u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_05/o1_mf_1_170_7t9fcyxr_.arc
267 1 171 A05-MAY-12/u01/app/oracle/flash_recovery_area/HDB/archivelog/2012_05_08/o1_mf_1_171_7tk2hlbl_.arc
Do you really want to delete the above objects (enter YES or NO)? no
2, Oracle RAC备份并监控
RAC的备份原理是:在一个节点上执行数据库备份,同时只要满足该节点可以访问到其他任意节点的归档日志即可.
这样,RAC与单实例备份有所不同,主要体现在归档日志的备份上面,分2种情况;
(1) 归档日志采用的是node-crossed归档,归档存放在各个节点自身的文件系统下.
此时需要设置单独通道让备份节点可以访问到各个节点.
a.建立2个通道,每个通道指定的目录或自定义的目录分别为各节点可以访问并存放数据(这里是/home/oracle/backup),每个节点会将备份集放到该目录.
b.建议备份这2个通道指定的路径为共享,这样这2节点均可以访问该共享(下面的例子是按a情况测试的,所以备份集保留在每个节点的/home/oracle/backup).
备份
[oracle@rac1 backup]$ vi fullbackup.sql
run{
allocate channel c1 device type disk connect sys/oracle@wxxrdb1; 也可以在这里定义路径和文件格式
allocate channel c2 device type disk connect sys/oracle@wxxrdb2;
backup full tag 'FULL' database
include current controlfile format '/home/oracle/backup/FULL_%d_%T_%s'
plus archivelog format '/home/oracle/backup/ARCH_%d_%T_%s' delete all input;delete all input 删除归档日志,可以不删除归档.
RESTORE DATABASE VALIDATE;
CROSSCHECK BACKUP OF DATABASE;
REPORT OBSOLETE;
DELETE NOPROMPT OBSOLETE;
}
如果不使用delete all input或者加入下面删除语句亦可.
LIST BACKUP SUMMARY;该语句写在run{}脚本无法执行.
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-8';删除8天前的归档日志.
[oracle@rac1 backup]$ vi fullbackup.sql
run{
allocate channel c1 device type disk format '/home/oracle/backup/%T' connect sys/oracle@wxxrdb1; 也可以在这里定义路径和文件格式
allocate channel c2 device type disk format'/home/oracle/backup/%T'connect sys/oracle@wxxrdb2; 节点二会备份到它自己的统一目录.
backup full tag 'FULL' database
include current controlfile
plus archivelog delete all input;delete all input 删除归档日志,亦可以不删除归档.
RESTORE DATABASE VALIDATE;
CROSSCHECK BACKUP OF DATABASE;
REPORT OBSOLETE;
DELETE NOPROMPT OBSOLETE;
}
#如果不使用delete all input或者加入下面删除语句亦可.
LIST BACKUP SUMMARY;该语句写在run{}脚本无法执行.
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-8';删除8天前的归档日志.
所以如果是交叉归档,那么备份最好需要准备一个共享的磁盘,建立共享的目录,让各节点都像里面备份.
监控基本和单实例没有区别.
备份维护主要是删除归档日志,可以在备份脚本中删除,也可以单独脚本删除,交叉归档模式的归档删除可以参见<<10G RAC Cross-Instance Archivelog删除>>一文.
(2) 归档使用Cluster方式,通过共享的ASM磁盘存放归档日志.此时的备份与单实例完全一样,可以参见单实例进行备份,也考虑这3个方面的内容,备份,监控,备份维护.
备份最后的结果是:每周产生2次新的全备份FULL,并且保留着从备份开始到当前的所有归档日志文件ARCH.
相关文章推荐
- Recover Corrupt/Missing OCR with No Backup - (Oracle 10g)
- Oracle 10g RMAN的备份 恢复
- ArcSde 9.2与Oracle 10g是最佳搭档
- Oracle增量备份(incremental backup) 与 差量备份(differential backup)
- 64位windows7 上安装32位oracle 10g 的方法
- Mac OS X 10.6 Snow Leopard x64 (雪豹) 安装 oracle 10g (10.2) 最终完整教程
- Oracle 10G中关于约束在表和列中使用详解.
- 图文并茂――Oracle 10g Client与PLSQL Developer工具安装配置
- 分享一下Oracle 10g和Toad for Oracle的安装步骤
- oracle 10g dataguard修改保护模式遭遇ORA-03113
- RHEL6下Oracle 10G安装笔记
- [原]在Oracle SOASUITE 10g Register ESB 报“error code: 1071 : 5 ”解决办法
- win7旗舰版32位安装oracle 10g db
- windows oracle 10g 卸载注意事项
- oracle 10g错误(ORA-00000~ORA-00830 )
- oracle 10g下载
- win7 装ORACLE 10g,其他包括em正常,但是PQ/SQL ORA-12154: TNS: 无法解析指定的连接标识
- ORACLE 10g Clusterware卸载
- Oracle backup one table to another table.
- 在Linux(UBUNTU版)上安装Oracle 10g Express Edition