1、第7章 数据库备份与恢复,备份与恢复概述,备份与恢复的基本概念 备份的原则与策略 恢复的原则与策略,备份与恢复的必要性,数据库备份与恢复的目的 数据库系统在运行中可能发生故障,轻则导致事务异常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中的数据部分或全部丢失。 数据库备份与恢复的目的就是为了保证在各种故障发生后,数据库中的数据都能从错误状态恢复到某种逻辑一致的状态。 数据库的不一致状态 如果数据库系统在运行中发生故障,有些提交的事务对数据库所做的修改有一部分写入物理数据库,这时数据库就处于一种不正常的状态,或者说是不一致的状态。,备份与恢复的基本概念,备份分为物理备份和逻辑备份 物
2、理备份,是指通过将重要的物理文件备份起来,以避免物理故障造成的损失。 逻辑备份,通常是SQL语句的集合。 在实际应用中,应该以物理备份为主,逻辑备份作为补充。,恢复类型,完全恢复 从一个物理备份中恢复一个已丢失的数据文件的拷贝,然后根据从此刻起的所有归档日志文件与重做日志文件进行恢复,这样能够得到从备份以来发生的所有变化,这种恢复称为完全恢复。 不完全恢复 如果归档日志文件有丢失的情况发生,那么数据库只能恢复到这个归档日志文件以前的状态,没有得到从备份以来的所有变化,这种恢复称为不完全恢复。,物理备份,物理备份分为冷备份与热备份。 冷备份又称为脱机备份。是在数据库保持关闭状态下,把数据库的配置
3、文件、数据文件、控制文件、重做日志文件和归档日志文件复制到其他地方保存起来。 热备份又称为联机备份或者归档备份。是在数据库保持开放状态下对数据库进行备份,热备份的好处是不必关闭数据库,不影响数据库系统的正常运行,但是热备份的操作要比冷备份复杂。,物理备份与恢复,冷备份与恢复 热备份与恢复 不完全恢复,物理备份方法,冷备份与恢复,冷备份 关闭数据库实例,用操作系统的实用工具备份数据文件。 如果没有启用归档模式,数据库不能恢复到备份完成后的任意时刻。,关闭数据库, 开始备份,故障时刻,备份,恢复,重装备份副本,恢复丢失数据,备份完成,冷备份,如果启用归档模式,从冷备份结束后到出现故障这段时间的数据
4、库恢复,可以利用联机日志文件和归档日志文件实现。,冷备份步骤,步骤:1、关闭数据库2、备份所有相关的数据库文件:数据文件控制文件Redo 日志归档的 Redo 日志初始化文件,冷备份的恢复,非归档模式下恢复 关闭数据库 用备份文件覆盖原有文件 重新启动数据库,热备份是备份数据库的最佳方法。 系统工作在归档模式下。 转到归档模式后,应立即进行热备份。,热备份与恢复,热备份,热备份 当数据库正在运行时进行的数据库备份过程。当数据库处在可归档日志模式下,可使用热备份。 有些关键数据库应用系统可能需要数据库每天24小时,每周7天的运行,就应该使用热备份。 热备份的优点:备份时,数据库可以是打开的。可用
5、来全面恢复数据库(可用来在任何一点上恢复)。,设置归档模式,SHUTDOWN STARTUP MOUNT ALTER DATABASE ARCHIVELOG ALTER DATABASE OPEN ALTER SYSTEM ARCHIVE LOG START ALTER SYSTEM SET log_archive_dest=e:archivesALTER SYSTEM SET log_archive_format =“oracle1%S.ARC,热备份:备份数据文件,查询视图v$datafile 和视图v$tablespace决定需要备份的数据文件 将某个表空间设为备份模式 ALTER TA
6、BLESPACE name BEGIN BACKUP; 使用操作系统命令将该表空间所有数据文件备份 结束该表空间的备份模式 ALTER TABLESPACE name BEGIN BACKUP; 对数据库的每个表空间,执行步骤3、4、5操作。,ALTER DATABASE BACKUP CONTROLFILE TO d:backcontrol.bkp reuse; ALTER DATABASE BACKUP CONTROLFILE TO TRACE,热备份:备份控制文件,归档当前的联机日志文件 备份归档日志文件 备份初始化参数文件,热备份:备份的其他文件,热备份下的数据库恢复,利用热备份恢复语
7、法 RECOVER AUTOMATIC DATABASE|TABLESPACE tabname |DATAFILE dfname UNTIL CANCEL|TIME time|CHANGE scn USING BACKUP CONTROLFILE,数据文件级别的恢复,将受损的数据文件脱机 ALTER DATAFILE datafile OFFLINE 用备份的数据文件覆盖受损的数据文件 恢复数据文件 RECOVER DATAFILE datafile ; 将数据文件联机 ALTER DATAFILE datafile ONLINE; 将数据库修改为打开状态 ALTER DATABASE OPE
8、N;,表空间级别的恢复,用备份的表空间对应的所有数据文件复制到原来的目录,覆盖受损的数据文件。 恢复表空间 RECOVER TABLESPACE tablespacename; 将数据库修改为打开状态 ALTER DATABASE OPEN;,数据库完全恢复步骤,确保数据库已经关闭(使用ABORT操作)SHUTDOWN ABORT; 用最后的数据库备份恢复数据文件。 如果当前控制文件丢失,使用镜像版本复制到已修好的磁盘中,或者重新创建控制文件。 还原所有已归档的日志。 如果服务器参数文件损坏,则利用备份的初始化参数文件创建服务器参数文件。 CREATE SPFILE FROM PFILE;,数
9、据库完全恢复步骤(续),将数据库启动到MOUNT状态, STARTUP MOUNT; 使用RECOVER命令进行恢复。命令如下: RECOVER DATABASE; 将数据库修改为打开状态: ALTER DATABASE OPEN; RECOVER DATABASE; 恢复完成后,重新打开数据库ALTER DATABASE OPEN;,不完全恢复,基于CANCEL的恢复 基于时间的恢复 基于SCN的恢复,基于CANCEL的恢复,关闭数据库SHUTDOWN IMMEDIATE; 把原来备份的文件拷贝到对应路径 加载数据库STARTUP MOUNT; 对数据库进行恢复RECOVER DATABAS
10、E UNTIL CANCEL ; 打开数据库ALTER DATABASE OPEN RESETLOG; 或 ALTER DATABASE OPEN NORESETLOG;,基于时间的恢复,关闭数据库SHUTDOWN IMMEDIATE; 把原来备份的文件拷贝到对应路径 加载数据库STARTUP MOUNT; 对数据库进行恢复RECOVER DATABASE UNTIL TIME 12月-10-2003,19:23:39 打开数据库ALTER DATABASE OPEN RESETLOG; 或 ALTER DATABASE OPEN NORESETLOG;,基于SCN的恢复,关闭数据库SHUTD
11、OWN IMMEDIATE; 把原来备份的文件拷贝到对应路径 加载数据库STARTUP MOUNT; 对数据库进行恢复RECOVER DATABASE UNTIL CHANGE 87654; 打开数据库ALTER DATABASE OPEN RESETLOG;或 ALTER DATABASE OPEN NORESETLOG;,逻辑备份与恢复,优点:能容易快速地进行一个或更多单个表或行恢复。升级数据库时,更加方便。跨平台移动数据库时,更加方面。数据库可一直运行。 目的: 挽救由用户或应用错误造成的损失 (用户或应用偶尔删除一行和数据库表造成的数据丢失),注意事项: 1、逻辑备份不能代替冷备份或热
12、备份。冷备份或热备份是对物理数据库文件的冷备份或热备份。逻辑备份是对特定的逻辑对象的备份。 2、冷备份或热备份用于数据库发生介质故障时的恢复。逻辑备份用于用户或应用偶而删除一行和数据库表造成的数据丢失的恢复。 3、不可能在导入中应用归档日志文件从而使它恢复到导出执行后的某一时间点。,使用方法,命令行EXP/IMP,指定需要的参数 Enterprise Manager,使用EXP/IMP命令导出和导入数据,EXP/IMP命令 交互式数据导出和导入 命令行模式的数据导出与导入 参数模式的数据导出与导入,导出模式,表 导出表定义、数据、授权、索引、约束 用户 导出指定用户模式下的所有表定义、数据、授
13、权、索引、约束 全数据库 导出数据库中所有表定义、数据、授权、索引、约束,EXPORT命令,语法: exp keyword=(value1,value2, valuen) 举例: exp scott/tiger TABLES=(emp,dept) rows=y file=exptable.dmp exp system/manager OWNER=scott file=d:exptable.dmp exp system/manager FULL=y inctype=cumulative file=d:exptable.dmp,IMPORT命令,语法: imp keyword=(value1,value2, valuen) 举例: imp scott/tiger TABLES=(emp,dept) rows=y file=exptable.dmp imp system/manager FROMUSER=scott file=d:exptable.dmp imp system/manager file=d:exptable.dmp,导入过程,创建新的表和索引 数据导入,索引更新 触发器导入,在新表上建立完整性约束,