1、-i-目 录摘要 iiiAbstract.iv第一章 绪论 .11.1 国内外研究动态 .11.2 容灾备份系统的现状分析 .1第二章 数据库备份方案 32.1 备份文件 .32.1.1 定义 32.1.2 主要的内容 42.1.3 优先级别 42.1.4 文件之间的转化 .42.2 备份恢复方案 42.2.1 备份恢复的分类 52.2.2 备份方案的介绍 52.3 数据库的备份策略 52.3.1 概述 5第三章 备份与恢复功能设计与实现 .63.1 冷备份(脱机备份) 63.1.1 定义 63.1.2 优点与缺点 63.1.3 步骤 63.1.4 备份恢复功能设计与实现 83.2 热备份恢复
2、(联机备份恢复) 103.2.1 定义 .103.2.2 优点与缺点 103.2.3 备份设计与实现 10第四章 总结 .38参考文献 39-ii-谢 辞 .40-iii-Oracle database 备份与恢复摘要:随着信息化的发展,数据对我们日常生活中有着举足轻重的影响。生活不能缺少数据,因此数据的备份和恢复在当前至关重要。它能保证数据的完整性、安全性、一致性。它也使数据在非正常情况下丢失后,还能恢复到事故前的状态,确保损失最少,风险最少。本文主要介绍在 Linux 服务器端,通过 oracle 数据库的 SQL*plus 工具,对oracle 数据库进行冷备份恢复(脱机备份)和热备份恢
3、复(联机备份) ,分别对数据库的参数文件,控制文件,数据文件,日志文件进行备份与恢复。通过模拟不同情况下,数据库文件丢失的情况下,对数据库进行完全恢复和不完全恢复。本文主要详细阐述了不完全恢复时需要注意的要点和不完全恢复的特点。通过本文对备份恢复情况的研究,可以编写相关的数据库备份恢复脚本,简化备份步骤,希望能实现 Linux 操作系统下,数据库自动备份与恢复。关键词:oracle;备份;恢复-iv-Oracle database backup and recoveryAbstract:With the development of information,the data has an im
4、portant influence in our daily life.Our life cant lack of data,so that data backup and recovery in current is very important.It can guarantee the integrity,the consistency and security of the data . It also can ensure that the data can return to normal statue after lose data.This paper describes the
5、 Linux server, oracle database through SQL * plus tools, cold oracle database backup and recovery (offline backup) and hot backup and recovery (online backup), respectively, the parameters of the database files, control files, data files the log files are backed up and restored. By simulating differ
6、ent scenarios, the database files are missing in the case, the database is fully recovered and incomplete recovery. This paper elaborates incomplete recovery points to be noted and incomplete recovery features. Through this case study on backup and recovery, you can write relevant database backup an
7、d recovery scripts, simplify backup step, hoping to achieve the Linux operating system, automatic database backup and recovery.Key words:oracle; backup; recovery毕业设计(论文)第 1 页 共 45 页第一章 绪论1.1 国内外研究动态当今的信息时代,数据在现代企业中占有重要的地位,数据安全性就显得尤为重要。随着企业规模的扩展,用户早已认识到保证信息系统的安全不间断工作成为各个行业信息化建设的重要关注点。而且近年来频繁出现的自然灾害或者
8、突发事件也让人们越来越多的注意到,原有意识中的数据备份已经无法满足关键业务对系统的可用性、实时性、安全性的需要。这时,异地容灾解决方案的出现则可通过在不同地点建立备份系统,从而进一步提数据抵抗各种可能安全因素的容灾能力。美国是一个信息技术非常发达的国家,因此很早就有了很高的灾备意识,像美国政府就发布规定:要求所有政府、金融和医疗等机构都必须建立备份数据中心,以确保在遭受恐怖主义攻击、军事打击或自然灾害之后,能够实现快速重建。我国是一个信息产业发展比较晚的国家,但也一直在学习国外的先进经验,颁布了一系列法律法规来规范灾备市场的发展,例如像信息系统灾难恢复规范中就将灾备划分为6个等级。1.2 容灾
9、备份系统的现状分析伴随着 IT 信息化的推进,组织运营对 IT 系统的依赖度越来越高,IT 系统的可持续化运行,以及 IT 系统中数据的安全性,已经是对组织运营风险控制产生重大影响。而容灾正是这样一门技术和方案,它可提供一个防止 IT 系统遭受各种灾难影响破坏的保护系统,为 IT 系统的可持续化运行和数据安全提供一道保护屏障。而且近年来频繁出现的自然灾害或者突发事件也让人们越来越多的注意到,原有意识中的数据备份已经无法满足关键业务对系统的可用性、实时性、安全性的需要。这时,异地容灾解决方案的出现则可通过在不同地点建立备份系统,从而进一步提数据抵抗各种可能安全因素的容灾能力。针对这一应用需求,市
10、场上纷纷推出基于 SAN 的异地容灾软、硬件产品,希望能够为用户提供整套以 SAN 网络环境和异地实时备份为基础的,高效、可靠的异毕业设计(论文)第 2 页 共 45 页地容灾解决方案,并且能够为用户提供支持各种操作系统平台、数据库应用和网络应用的系统容灾服务。而本文主要介绍的是 Oracle 公司的容灾技术。随着 Oracle数据库的逐步发展,Oracle 数据库被使用于各行各业,使用 Oracle 数据库的大型公司也随之不断的增加,因而对于 Oracle 数据库的安全性,人们也有了新的担忧和考虑,因此 Oracle 数据库备份和恢复技术的研究在国内外如雨后春笋,迅速的不断发展。但是,如果这
11、时发生不可预测的自然灾害以及突发事件,导致整个数据保护体系崩溃时,将给企业带来毁灭性打击。如果企业对数据安全要求很高,就应该搭建容灾系统。毕业设计(论文)第 3 页 共 41 页第二章 数据库备份方案2.1 备份文件2.1.1 定义参数文件:记录数据库的系统配置文件,每当数据库启动,Oracle 自动地从参数文件中读取系统参数设置来配置启动数据库。如内存池的分配,允许打开的进程数和会话数等。控制文件:控制文件是二进制文件,数据库的结构、数据文件和日志文件的一些信息都包含在其中。控制文件并不大,但是它在数据空中最重要的文件,只有数据库进程才可以对控制文件的内容进行更新,控制文件内容主要包括数据库
12、的名称(sid) ,位置,联机、脱机的状态,Redo Log File 的名称和位置,每个表空间名称, 归档日志文件的信息,检查点(CheckPoint)信息,重做信息,rman 备份信息等等。数据文件:用来存放数据的文件,每个数据库一定是至少含有一个数据文件(system01.dbf) ,若存在多个数据文件,应该分别存放于不同的磁盘上,这样做不仅能提高数据的存取速度,有利于提高数据库的性能,而且还能高度容灾。重做日志文件:数据库日志文件包括归档的日志和在线的日志, 当数据库被修改是,就会记录在这些文件当中。Oracle 数据库必须至少包含两组在线日志,在线日志可以循环使用,当正在写的在线日志
13、被写满后,就会切换到另一组在线日志,后者的内容会被覆盖,这个过程叫作日志切换(Log Switch) ,在日志切换时会自动触发检查点(CheckPoint) ,使内存中的数据写到数据文件当中。如果数据库执行了 DML 语句,就会被记录到日志文件中,并且记录动作是在改变数据前进行的,正是因为日志文件记录了数据库所有的修改操作,因此假如有过去某时间点的备份文件,并且有从备份时间点到现在时间点的所有日志文件,就可以通过在备份文件上“重做”这些日志的方式,把数据文件恢复到当前状态或者当中的任何时点的状态。为了达到防止日志组文件失效的目的,应该对每一个日志组中的每一个日志文件做一份或多份镜像,每个日志组
14、文件和它的备份镜像文件称为其日志组的成员。毕业设计(论文)第 4 页 共 41 页两个相同的成员应该分别存在不相同的磁盘上,这样做的目的是,可以避免磁盘因外部原因失效时,相同日志组的镜像日志一起失效。2.1.2 主要的内容Pfile:系统的参数文件,可用 vim,vi 等编辑器进行修改,其文件名一般是init.oraSpfile:二进制参数文件,不能使用编辑器直接进行修改,只可以存放在Oracle 的服务器上,可以使用 EM 网页或指令(alter system|session set parameter_name = values spfile.ora init.ora2.1.4文件之间的转
15、化从 spfile 来生成 pfilecreate pfile from spfile ,执行完毕后,pfile 将$ORACLE_HOME/dbs/init$ORACLE_SID.ora 也可以指定 pfile 的路径:create pfile = from spfile由 pfile 生成 spfilecreate spfile from pfilecreate spfile from pfile = 毕业设计(论文)第 5 页 共 41 页create spfile = from pfile2.2 备份恢复方案2.2.1 备份恢复的分类按照备份恢复的方式,可以分为逻辑备份、冷备份(脱机备
16、份) 、热备份,其中,热备份和冷备份合称为物理备份。按照备份的工具,可以分为 EXP/IMP 备份、操作系统备份 RMAN、第三方工具备份,如 VERITAS 等。2.2.2 备份方案的介绍逻辑备份是指只备份数据库中的数据但不记录数据物理位置的一种备份。导出为数据库作一个二进制的备份,并且这个备份只能由其姐妹程序 imp 来读取操作系统备份包括冷备份和热备份。操作系统备份和上面的逻辑备份有本质的区别,它将拷贝整个的数据文件。冷备份在文件级备份开始前数据库必须彻底关闭。热备份是当数据库打开时的操作系统备份。Recovery Manager(RMAN)是一个使 DBA 能很方便地对数据库执行备份和
17、恢复任务的 oracle 应用工具,能够提供 DBA 对企业数据库备份与恢复操作的集中控制。2.3 数据库的备份策略2.3.1 概述争取的备份策略不仅能保证数据库服务器的7*24小时的高性能的运行,还能保证备份与恢复的快速性与可靠性。采用多级备份就是为了减少每天备份所需要的时间,而保证系统有良好的恢复性。恢复时间与备份时间要有一个权衡。比如只要进行一个数据库的全备份,然后就只备份归档也可以保证能把数据库恢复到最新的状态,但是这样的恢复时间将是不可容忍的。毕业设计(论文)第 6 页 共 41 页第三章 备份与恢复功能设计与实现3.1 冷备份(脱机备份)3.1.1 定义冷备份(脱机备份)是当数据库
18、的一切可以被读取和写入的数据库物理文件(参数文件、控制文件,数据文件等)具有一样的系统改变号(SCN)时才能进行的数据库的一致性备份,数据库保持在同一状态的唯一方法是将数据库正常关闭,因此只在数据库正常关闭情况下的备份才算是一致性备份。冷备份既适用于 archivelog 模式,也适用于 noarchivelog 模式。3.1.2 优点与缺点优点:快速并且相对简单的备份方法(因为仅仅需要拷贝文件) 。容易恢复至某个时间点上(仅需将文件拷贝回去) 。低度维护,高度安全。缺点:单独使用时,只能提供到“某一时间点上”的恢复。在冷备份过程中,数据库必须是关闭状态。3.1.3 步骤(1) 、查看数据库文
19、件物理位置。毕业设计(论文)第 7 页 共 41 页图 2.1 数据文件图2.2 控制文件毕业设计(论文)第 8 页 共 41 页图2.3 日志文件图2.4 参数文件(2)关闭运行的数据库。(3)备份参数文件,控制文件,数据文件,日志文件到指定目录下。3.1.4 备份恢复功能设计与实现(1)建立测试表 test,并且插入数据1 ,恢复后,数据应该还是存在的图 2.5 创建测试表图 2.6(2)关闭数据库,执行备份图 2.7 执行冷备份(3)插入另外一条数据2 ,恢复时应该丢失的数据毕业设计(论文)第 9 页 共 41 页图 2.8 插入验证信息(4)关闭数据库,删除所有的文件:数据文件,控制文
20、件,参数文件,日志文件图 2.9 删除文件(5)启动数据库图 2.10 启动数据库(6)恢复冷备份的文件到各自的文件夹图 2.11 冷备份的恢复(7)验证冷备份的恢复,数据2丢失,只有数据1 ,备份后插入的毕业设计(论文)第 10 页 共 41 页数据不存在。图2.12 验证恢复3.2 热备份恢复(联机备份恢复)3.2.1 定义数据库热备份是指数据库在启动运行的状态下,对数据库的控制文件、参数文件、数据文件等进行备份操作。热备份是用户管理备份恢复的一种方式,也是除了RMAN 备份之外比较经常使用的一种备份方式。热备份仅仅适用于 archivelog 状态。3.2.2 优点与缺点优点:可以在表空
21、间或数据文件级备份,备份的时间短。备份时数据库仍可以使用。可达到秒级恢复(恢复到某一时间点上)缺点:不能出错,否则备份数据不可用。备份方法相对复杂,难于维护。3.2.3 备份设计与实现冻结块头控制 SCN 在备份时不发生变化进行物理拷贝毕业设计(论文)第 11 页 共 41 页解冻块头让 SCN 可以变化(当对 SCN 解冻后,系统会自动更新 SCN 至最新的状态)查看是否在自动归档模式:图 2.13 非归档模式如果不是则启动自动归档模式:图 2.14 启动归档模式毕业设计(论文)第 12 页 共 41 页图 2.15 在线备份数据文件图 2.16 在线备份控制文件图 2.17 备份参数文件和
22、重做日志归档文件完全恢复:(1)用户表空间数据文件受损A、查看数据库是否运行在归档模式,确保能把数据完全恢复,如果不是,则设置为自动归档模式图 2.18 归档模式毕业设计(论文)第 13 页 共 41 页B、在用户表空间创建测试表,并且插入测试数据图 2.19 插入验证数据C、对 users 表空间数据文件进行热备份图 2.20 备份用户空间D、插入热备份后的另外一条数据,验证热备份完全恢复图 2.21 插入测试数据毕业设计(论文)第 14 页 共 41 页E、关闭数据库,删除用户表空间文件,模拟出错图 2.22 模拟故障查表 v$recover_file,用户数据文件需要恢复图 2.23 查
23、看需要回复的数据文件如果实际中,数据库需要对外服务,但是用户数据文件尚未修复,可以选择先把数据文件离线再进行修复。图 2.24 离线数据文件毕业设计(论文)第 15 页 共 41 页图 2.25 恢复离线的数据文件F、查看验证热备份的数据,确认是否完全恢复,重做数据文件到当前的时间点,确保备份后的数据还在,前提是要处于归档模式,切归档重做文件都没被删除图 2.26 查看热备份的效果(2)用户表空间数据文件受损且无备份的恢复第一种情况,先删除数据文件,在触发检查点毕业设计(论文)第 16 页 共 41 页A、创建用户表空间做测试图 2.27 创建测试数据B、删除用户表空间,模拟故障,表格还在的原
24、因是因为数据已经缓存到内存了,查找内容实际是在内存找图 2.28 模拟故障C、当触发检查点,内存数据会写盘,然而查找数据的话,没改变数据内容,写盘的时候不需要修改内容,故数据文件 test.dbf 不存在也不会报错,但是再查找表的内容的时候,要从磁盘读,因此发现了数据文件不存在图 2.29 数据文件故障毕业设计(论文)第 17 页 共 41 页D、关闭系统,然后启动后发现,数据文件处于 recover 状态图 2.30 recover 状态的数据文件E、创建丢失的数据文件,恢复文件的内容图 2.31 创建需要的文件图 2.32 查看数据文件状态毕业设计(论文)第 18 页 共 41 页F、验证
25、数据是否还是存在,数据还在的条件是,归档日志文件存在的时间要比表空间创建的时间要久远,才有重做日志文件支持完全恢复。图 2.33 验证恢复第二种情况:先触发检查点,在删除数据文件图 2.34 情况二毕业设计(论文)第 19 页 共 41 页图 2.34 数据文件需要恢复图 2.35 恢复后的数据(3)System 表空间数据文件或者大量数据文件受损A、对 system 表空间进行热备份图 2.35 热备份毕业设计(论文)第 20 页 共 41 页B、删除 system 数据文件,模拟数据文件损坏图 2.36 删除数据文件C、把热备份的数据文件重新拷回去,恢复系统数据文件图 2.37 恢复数据文
26、件(4)回滚文件损坏的恢复A、查看回滚表空间的相关信息(回滚文件可以在线删除)图 2.38 回滚表空间信息B、删除 undo 数据文件,启动数据库图 2.39 模拟故障毕业设计(论文)第 21 页 共 41 页图 2.40 故障C、把回滚数据文件离线,启动数据库图 2.41 离线数据文件D、创建一个新的回滚表空间,并修改参数 undo_tablespace,使 undotbs1 能成功删除图 2.42 创建回滚表空间图 2.43 创建修改回滚表空间毕业设计(论文)第 22 页 共 41 页E、创建测试表 test图 2.44 创建测试数据F、关闭数据库,发现数据库一直关闭不了,挂起了,查看警告
27、文件图 2.45 关机挂起图 2.46 查看跟踪文件毕业设计(论文)第 23 页 共 41 页G、启动数据库图 2.47 故障H、修改参数文件 pfile,增加一行图 2.48 修改 SPFILE图 2.48 启动数据库(5)临时文件损坏的修复A、当控制文件不需要重建的时候图 2.49 模拟故障毕业设计(论文)第 24 页 共 41 页B、控制文件重建的时候,因为控制文件的创建不包含 temp 的路径,若创建时指定会报错,故在启动数据库后要手工绑定。图 2.50 模拟故障 2图 2.51 查看临时表空间图 2.52 大查询图 2.53 手工创建临时表空间不完全恢复(1)基于 time 时间的恢
28、复基于时间的恢复能将数据库通过不完全恢复,到过去的某一时间点,经常被用在误操作导致的删除数据,在备机上将数据库恢复至被删除时间点之前的状态,然后把该表导出到正式环境,以挽回丢失数据。A、建立测试表 test,插入测试数据毕业设计(论文)第 25 页 共 41 页图 2.54 创建测试数据表B、热备份除 temp 表空间以外所有的数据文件,虽然恢复的数据在 users 表空间,但是不完全恢复基于时间的恢复,所有的表空间数据文件都应该恢复到同一个时间点上,因此,需要备份所有数据文件。图 2.55 热备份所有文件C、继续插入测试数据,热备份后的数据,如果仅仅恢复备份,数据应该不存毕业设计(论文)第 26 页 共 41 页在,查看数据丢失之前的时间点,用于不完全恢复的时间参考。图 2.54 继续创建测试数据D、删除测试数据表,关闭数据库,拷回热备份,启动到 mount 状态,根据时间点恢复。图 2.55 E、重新以 resetlogs 方式打开数据库,查看丢失数据是否存在。图 2.56 验证(2)基于改变 scn 的恢复基于改变 scn 号(system change number)的恢复可以将数据库不完全恢复到