一、 数据库故障类型
1)user process failure 用户进程故障:pmon 自动处理 2)instance failure 实例故障: smon 自动处理 3)user errors 用户 错误: 需要 dba 通过备份恢复解决 4)media failure 介质故障: 必须通过备份和日志恢复 总结:备份恢复主要是用于保护数据(介质、用户、应用程序导致)、保留数据、传输数据
二、 备份恢复分类
还原即Restore(重储),恢复即是Recover(恢复)
2.1 逻辑备份与恢复
①传统的导入导出:exp/imp: ②数据泵导入导出:expdp/impdp 面向 object,逻辑备份就是热备数据库对象某一时刻状态, 不能运用在 media failure 上,逻辑备份的恢复就是还原备份,没有 recover 的概念。
2.2 物理备份与恢复
面向 media failure ①手工备份与恢复,也叫用户管理的备份与恢复(UMAN), 通过 OS 的命令,完成备份与还原,然后再运用日志进行恢复。 ②自动备份与恢复,利用 oracle 的备份恢复工具 RMAN,使还原与恢复过程自动完成。 物理备份从方式上可以有 一致性备份(冷备) 和 非一致性备份(热备) 完整的备份策略应该以物理备份为主,逻辑备份为辅(用于备份一些重要的表)
2.3 闪回技术
一种利用 undo 数据或闪回日志的快速恢复技术。 可以针对不同层面问题进行逻辑恢复, 11g 支持七种 flashback 方式, 其中快速恢复区只和闪回数据库有关。
三、完全恢复与不完全恢复
1)完全恢复: 利用完整备份或部分备份,可以将 datafile 恢复到 failure 前得最后一次 commit,不会出 现数据丢失。 2)不完全恢复 需要运用完整备份和日志将 database 恢复到过去的某个时间点(或 SCN),有数据丢失。
四、备份策略
备份策略:每周日执行0级全备份,周一至周六每天执行1级增量备份 配置保留策略 reduncancy 2, 开启控制文件自动备份 RMAN> show all; CONFIGURE RETENTION POLICY TO REDUNDANCY 2; CONFIGURE CONTROLFILE AUTOBACKUP ON;
4.1 备份脚本
--创建存放脚本的目录 mkdir /home/oracle/scripts --创建全备份脚本 vi /home/oracle/scripts/rman_level0.sh #!/bin/bash export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 export ORACLE_SID=PROD PATH=/usr/sbin:$PATH; export PATH PATH=$ORACLE_HOME/bin:$PATH; export PATH rman target / << EOF run{ crosscheck backup; allocate channel c1 device type disk; allocate channel c2 device type disk; backup incremental level 0 database format '/u01/backup/rman/db_%U.bak' plus archivelog format '/u01/backup/rman/ar_%U.bak'; backup current controlfile format '/u01/backup/rman/ctl_%U.bak'; report obsolete device type disk; delete noprompt obsolete device type disk; delete noprompt expired backup device type disk; release channel c1; release channel c2; } EOF exit CROSSCHECK命令:用于核对磁盘和磁带上的备份文件 状态为:AVALIABLE、UNAVALIABLE、EXPIRED 赋予权限 chmod a+x /home/oracle/scripts/rman_level0.sh chmod a+x /home/oracle/scripts/rman_level1.sh
4.2 编写 crontab 计划任务
测试环境 整点进行全备份,每 15 分钟增量备份一次 0 * * * * /home/oracle/scripts/rman_level0.sh >> /u01/backup/rman/PROD_rman_L0_`date +\%Y\%m\%d_\%H\%M\%S`.log 2>&1 15,30,45 * * * * /home/oracle/scripts/rman_level1.sh >> /u01/backup/rman/PROD_rman_L1_`date +\%Y\%m\%d_\%H\%M\%S`.log 2>&1 查看备份情况是否正常,查看相关备份日志。 查看 obsolete 备份、归档是否删除正常。 select a.TIME_TAKEN_DISPLAY as "用时", a.INPUT_BYTES_DISPLAY "大小", a.INPUT_BYTES_PER_SEC_DISPLAY as "速度", a.INPUT_TYPE "备份类型", to_char(start_time, 'day') day1, to_char(start_time, 'yyyy-mm-dd hh24:mi:ss') as "开始时间", to_char(end_time, 'yyyy-mm-dd hh24:mi:ss') "结束时间", output_device_type, status, input_type from V$RMAN_BACKUP_JOB_DETAILS a