1、,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Oracle,数据库备份与恢复,1,本章内容,1,数据库常见故障类型,2,数据库保护机制,3,数据库逻辑备份与恢复,4,脱机备份(冷备份),5,联机备份(热备份),6,使用,OMS,工具的备份与恢复向导,7,数据库恢复,2,DBA,的主要职责之一是备份数据库和在数据库发生故障时高效、安全地恢复数据库。,备份方法,冷备份,热备份,逻辑备份(,Export/Import,),恢复方法,完全恢复,不完全恢复,RMAN,备份恢复等方式,3,1,数据库常见故障类型,系统崩溃或服务器崩溃,用户错误、冲突或者磁盘失效导
2、致的文件丢失,SQL,语句失败,网络故障,场地灾难,4,2,数据库保护机制,Oracle,数据库保护机制:数据库备份和事务日志。,Oracle,数据库,事务日志,数据库备份,5,数据库备份,一般来说,数据库备份可以分为物理备份和逻辑备份。,物理备份可分为脱机备份和联机备份。脱机备份又称为冷备份,只能在数据库关闭后进行备份;联机备份又称为热备份,数据库没有关闭,用户还可以使用。,逻辑备份是使用,Export,实用程序备份,当数据库出现故障,可以使用,Oracle,的,Import,实用程序恢复数据库。,6,事务日志,数据库的事务日志(,Transaction Log,)是一组操作系统文件,它记录
3、了提交事务所做的数据库修改。,日志主要是保护数据库,在数据库出现故障时执行恢复。,为了防止日志本身的故障,,Oracle,允许在不同的物理磁盘上维护两个或多个日志的副本。,7,举例,磁盘失效后如何保护和恢复数据库,。,(,1,)正常工作时,每天晚上备份数据库,包含所有数据文件。,(,2,)某一天,包含数据库的某个数据文件的磁盘坏了,因此一部分数据不可用(做了磁盘容错的情况例外),因此需要执行数据库恢复。,(,3,)把有问题的磁盘更换为新的磁盘。,(,4,)将最近的数据库备份存入新的磁盘中以恢复丢失的数据文件,但是,恢复的数据文件丢失了备份发生后所提交的事务工作。,(,5,)最后,执行数据库恢复
4、工作。在恢复过程中,,Oracle,读取事务日志,把过去提交的事务工作重做,使数据库文件成为当前文件。,(,6,)数据库恢复后,打开数据,供应用程序使用。,8,ORACLE,数据库两种运行方式,归档方式(,ARCHIVELOG,),归档方式的目的是当数据库发生故障时最大限度恢复数据库,可以保证不丢失任何已提交的数据。,不归档方式,(NOARCHIVELOG),,只能恢复数据库到最近的回收点(冷备份或是逻辑备份)。,9,3,数据库逻辑备份与恢复,数据库逻辑备份:读一个数据库记录集,并以,Oracle,提供的内部格式写入一个二进制文件中。这些记录的读出与其物理位置无关。,在,Oracle,中,,E
5、xport,实用程序执行逻辑备份。使用,Oracle,的,Import,实用程序执行数据库恢复。,当用户导入导出时,有相应的权限要求。,在,OEM,中,当用户连接到,Oracle Management Server,时,可以使用图形界面执行数据库的导入和导出。,10,3.1,导出,Oracle,的实用程序,Export,用来读取一个数据库,并把输入写入一个称为导出转储文件(,export dump file,)的二进制文件。,EXP USERID=username/password PARAMETER=(value1,value2,.),可以通过如下命令来显示参数,EXP HELP=Y,11,
6、导出方式:,Full,方式、,User,方式和,Table,方式。,完全数据库导出,exp system/manager full=Y constraints=Y file=f:backuptest.dmp,导出用户表,exp user1/password tables=employees file=f:backuptest.dmp,exp user1/password tables=,(,employees,,,jobs,),file=f:backuptest.dmp,导出用户模式,exp user1/password owner=user1 file=test.dmp,12,一旦数据已经导
7、出,就可以通过,Oracle,的,Import,实用程序执行导入,来恢复数据库。,Import,实用程序读取由,Export,创建的二进制导出转储文件并执行其中的命令,。,IMP USERID=username/password PARAMETER=(value1,value2,.),可以通过如下命令来显示参数,IMP HELP=Y,导出的数据可以导入到不同的数据库中,甚至可以导入到与生成导出转储文件不同的模式中;可以导入全部或部分已导出的数据,。,3.2,导入,13,导入用户自身所拥有的表,IMP system/ora456 tables=student file=f:backuptest.
8、dmp,IMP system/ora456 tables=(student,course)file=f:backuptest.dmp,导入用户模式,imp system/manager FROMUSER=scott TOUSER=system tables=dept file=f:backuptest.dmp,14,案例,1,,导出数据库表,用户误操作删除表,执行导入表,恢复数据库,(,1,),TEST2,数据库(,System,用户,口令为,ora456,),导出表,student,3.3,逻辑备份案例,15,16,(,2,)删除表,student,中的数据,或者将整个表删除,数据已经不存在
9、,或者表被删除,17,(,3,)导入表,student,,恢复数据库,18,(,4,)查询表和数据,验证导入是否成功,19,案例,2,,导入其他方案的表。将,Scott,的表,dept,导入,System,(,1,),System,下没有,Scott,的表,dept,,注意,这不同与查询时使用,scott.dept,20,21,(,2,)在,system,下,导出,Scott,的表,dept,,导出文件,test2.dmp,22,(,3,)将,Scott,的表,dept,导入到,System,中,(,4,)再次执行步骤(,1,)中的查询,验证导入成功,23,4,脱机备份(冷备份),脱机备份是最
10、简单的一种数据库备份方式,在数据库关闭后进行备份,用户不能访问数据库,是一种完全备份。,脱机备份一般需要备份如下文件:,(,1,)所有数据文件,(,2,)所有控制文件,(,3,)所有联机重做日志,(,4,),init.ora,文件,24,脱机备份步骤,(,1,)以,DBA,或特权用户登录,对于需要的备份文件,用户也可通过下列,SQL,语句来了解数据文件、重演日志文件及控制文件的相应位置及名称。,SELECT *FROM V$LOGFILE;,SELECT *FROM V$DBFILE;,SELECT *FROM V$CONTROLFILE;,25,(,2,)关闭数据库,SHUTDOWN NOR
11、MAL;,或者执行,SHUTDOWN IMMEDIATE;,26,(,3,)复制数据文件,用拷贝命令备份全部的数据文件、重做日志文件、控制文件、初始化参数文件等。,简单的处理方法是将数据库所在路径下的文件全部复制备份。在下面实验案例中所用数据库,TEST2,的目录是:,f:oracleoradatatest2,27,(,4,)重新启动数据库,STARTUP;,28,脱机备份的优点:,只需要拷贝文件,速度比较快。,将文件拷贝回去,数据库就可以恢复到某个时间点。,若结合数据库归档模式可以很好地恢复数据库。,维护量相对较少,但安全性相对较高。,29,脱机备份的缺点:,脱机备份时,数据库必须关闭。,单
12、独使用脱机备份,数据库只能基于某一时间点恢复。,若磁盘空间有限,使用磁带等外设时速度较慢。,脱机备份不能按表或用户恢复。,30,案例,脱机备份与不完全数据库恢复,脱机备份数据库相应文件,由于误操作,删除了,users,表空间对象,STUDENT,表,将备份的数据文件复制到原来的位置,恢复数据库到执行误操作前的状态。以,SYSDBA,登录。数据字典,DBA_TABLES,可以查询表所在的表空间。,31,(,1,)对象,STUDENT,,有两条记录,32,(,2,)脱机备份,shutdown immediate;,备份数据文件,user01.dbf,,控制文件,重做日志文件,,或者,直接将,f:o
13、racleoradatatest2,目录下的文件全部备份。,备份结束重启数据库,startup;,33,(,3,)对象,student,增加一条记录,insert into system.student values(,1003,liming,20,CS,);,34,(,4,)模拟误操作,删除了表,STUDENT,drop table system.student;,commit;,35,(,5,)查询对象,STUDENT,,返回错误信息,36,(,6,)关闭数据库,shutdown immediate;,(,7,)复制原先备份的数据文件,控制文件,重做日志等到原来目录下,,f:oracleo
14、radatatest2,(,8,),startup mount;,37,(,9,)执行基于取消的恢复,,recover database until cancel,38,(,10,)以,RESETLOGS,方式打开数据库,39,(,11,)查询对象,STUDENT,,只有脱机备份的两条记录,备份后增加的记录没有恢复,40,5,联机备份(热备份),联机备份是在数据库运行时进行的备份,用户仍然可以访问数据库,一些关键行业的数据必须运行在,7*24,模式下,并不适合执行脱机备份,必须使用联机备份,。,联机备份要求数据库运行在归档(,archivelog,)模式下,该方式下,联机重做日志被归档,数据库
15、中所有事务的完整记录由,Oracle,以循环方式写入联机重做日志文件,。,联机备份一般备份数据文件、控制文件和日志文件。,41,(,1,)备份所有数据文件,(,2,)备份所有归档的重做日志文件,(,3,)备份一个控制文件,(,4,)检查发生故障的数据文件,恢复数据文件,42,联机备份的优点:,可在表空间或数据文件级备份,备份时间短。,备份时数据库仍可使用。,可达到秒级恢复(恢复到某一时间点上)。,可对几乎所有数据库实体作恢复。,恢复快速,大多数情况下恢复不需要关闭数据库。,43,联机备份的缺点:,不能出错,否则后果严重。,若联机备份不成功,所得结果不可用于时间点的恢复。,因难于维护,所以要特别
16、小心,不允许,“,以失败而告终,”,。,44,案例,联机备份与完全数据库恢复,在表空间,APPL_DATA,上建立对象,COURSE,,首先执行联机备份,在,COURSE,表上加入记录,然后删除数据文件,APPL_DATA,,最后执行恢复,数据文件重新联机,验证恢复成功。,45,(,1,)在归档模式下,在表空间,APPL_DATA,上建立表,COURSE,,并插入两条记录,46,(,2,)切换日志,查看,v$log,确认当前日志已经更改,alter system switch logfile;,(,3,)备份控制文件(在本案例中可以不做),alter database backup contr
17、olfile to f:backupbackup.ctl;,(,4,)备份数据文件,先将表空间,APPL_DATA,设置为备份模式,alter tablespace appl_data begin backup;,拷贝表空间的数据文件,APPL_DATA.ORA,,其他数据文件不变。,copy f:oracleoradatatest2appl_data.ora f:backupappl_data.ora,将表空间,APPL_DATA,设置为正常模式,alter tablespace appl_data end backup;,47,(,5,)在,COURSE,表上添加记录,insert int
18、o course values(30,database,20,4);,48,(,6,)使表空间脱机,删除数据文件,APPL_DATA.ORA,alter tablespace appl_data offline;,del f:oracleoradatatest2appl_data.ora,49,(,7,)将表空间联机,出现错误,提示恢复数据文件,50,(,8,)将备份的数据文件复制到原来所在位置,执行数据文件恢复。,copy f:backupappl_data.ora f:oracleoradatatest2appl_data.ora,然后,执行数据文件恢复命令,本例中文件号为,11,reco
19、ver datafile 11,;,51,52,(,9,)联机表空间,53,(,10,)查询对象,COURSE,表,确认联机备份恢复成功,联机备份前的数据和备份后新增加的数据都存在,54,6,使用,OMS,工具的备份与恢复向导,55,6.1 Oracle,管理服务器的配置,使用备份向导实现联机备份与恢复,需要登录到,Oracle,管理服务器,OMS,。,需要先配置,Oracle,管理服务器,选择,【,开始,】-【,程序,】-【OraHome90】-【Configuration and Migration Tools】-【Enterprise Manager Configuration Assi
20、stant】,进入,OMS,的配置步骤。,进入,OMS,后,为了保证备份向导的正确执行,应做如下工作:,56,(,1,)检查,SYS,和,SYSTEM,用户权限,,SYSTEM,用户在独立模式下具有,SYSDBA,权限和,SYSOPER,权限,在管理服务器模式下不具备,SYSDBA,权限,不能启动和关闭数据库,需要人工授予,SYSOPER,和,SYSDBA,权限,同时应给,SYSTEM,用户添加角色,EXP_FULL_DATABASE,和角色,IMP_FULL_DATABASE,,确保数据库备份与恢复操作正常。,SYS,用户无论是独立模式还是管理服务器模式都有,SYSOPER,和,SYSDBA
21、,权限。,57,(,2,)检查操作系统用户是否作为批处理作业登录。选择,【,开始,】-【,程序,】-【,管理工具,】-【,本地安全策略,】,,选择用户权限分配,选择作为批处理作业登录,双击打开后添加,Administrator,用户。,(,3,)检查节点和数据库的首选证明,设置节点的首先身份证明中的用户名为,Administrator,,并输入口令。设置数据库的首先身份证明的用户为,SYS,,输入口令,选择以,SYSDBA,角色。,58,第一次登录管理服务器,OMS,,管理员为,SYSMAN,,缺省口令为,OEM_TEMP,初次登录,系统将提示更改,SYSMAN,口令。如果系统提示连接验证错误
22、,VTK-1000,,查看,【,管理工具,】-【,服务,】-【OracleOraHome90ManagementServer】,是否启动,若没有启动,应手动启动该服务。,6.2,使用,OMS,备份向导,59,60,61,1,预定义备份策略,62,63,首先选择预定义备份策略,单击下一步按钮,出现,“,备份频率,”,对话框,64,65,66,67,68,2,自定义备份策略,打开备份向导,策略选择自定义备份策略,出现,“,备份选择,”,对话框,。,69,为了较快地看到备份结果,我们选择备份表空间,这是数据库子集的备份。,70,71,72,73,74,75,76,77,查看,“,作业,”,节点,在活
23、动项中可以看到备份,0053,已经启动,等待一会儿切换到历史记录,可以看到备份,0053,已经执行完成。,78,选择备份,0053,,右键选择,“,查看作业,”,,可以显示备份的详细信息。,79,选择状态已完成,单击,“,显示输出,”,按钮,得到执行备份的脚本代码。,80,向导恢复可以选择,数据库恢复,表空间恢复,数据文件恢复三种,恢复向导判别目标数据库的状态(归档日志,无归档日志,已装载没有打开,装载并打开)来禁止选项。,6.3,使用,OMS,恢复向导,81,恢复整个数据库时,将恢复属于该数据库的所有数据文件,要求数据库只处于装载状态,即,NOMOUNT,方式启动。,表空间恢复将恢复数据库的
24、一个子集合。对选定的表空间进行恢复,一般要求数据库运行在归档模式下。,数据文件恢复将恢复单个数据文件,数据文件恢复不如表空间恢复那样常用,一般要求数据库运行在归档模式下,82,登录到管理服务器,选择数据库,选择,【,工具,】-【,数据库向导,】-【,备份管理,】-【,恢复,】,,起用恢复向导。如果不能启动,OMS,,应查看,【,管理工具,】-【,服务,】-【OracleOraHome90ManagementServer】,是否启动,如果没有启动,先启动该服务。,83,84,85,86,87,88,89,90,若要查看执行情况,可以在,OMS,的节点,“,作业,”,中,选择历史记录确认备份和恢复
25、情况,。,91,5.7,数据库恢复,恢复可以分为完全恢复和不完全恢复,完全数据库恢复是恢复到故障发生前的状态,所有已经提交的操作都进行恢复,确保数据库不丢失任何数据,完全恢复只用于归档模式。,不完全数据库恢复是将数据库恢复到备份点与介质失败点之间某个时刻的状态,并不是恢复所有提交的操作,不完全恢复可能丢失部分数据。,任何类型的恢复包括两个阶段:前滚阶段和回滚(回退)阶段。,92,前滚阶段,在前滚恢复阶段(,roll-forward recovery,),恢复管理器应用必要的事务日志组,“,重做,”,(,REDO,)所有提交的不在数据库数据文件中的事务。,93,回滚阶段,在前滚恢复后,,Orac
26、le,必须执行回滚恢复(,roll-back recovery,)。,由于一些未完成的事务对数据库的修改信息已经提交到数据库,为保证数据库的一致性,需要清除这些事务对数据库的修改,数据库应执行回滚操作,(,UNDO,),,强制撤销这些未完成事务。,94,前滚和回滚的执行除了管理员或应用程序调用外,执行前滚操纵还是回滚操作与检查点的出现相关,1,2,3,4,5,检查点,系统故障,上一检查点,无,前滚,回滚,前滚,回滚,故障时需要的动作,95,数据库备份,日志,回退段,控制文件,7.1,恢复数据库所使用的结构,96,当数据库实例意外地(如掉电、后台进程故障等)或预料地(发出,shutdown ab
27、ort,语句)终止时出现实例故障,此时需要实例恢复。,实例恢复将数据库恢复到故障前的事务一致状态。,如果联机备份时出现实例故障,则需要介质恢复。,在其它情况下,,Oracle,在下次数据库起动时(对新实例装配和打开),自动地执行实例恢复。,7.2,实例故障的一致性恢复,97,恢复步骤处理,(,1,)为恢复数据文件中没有记录的数据,进行前滚。数据记录在联机日志中,包括对回滚段的内容恢复。,(,2,)回滚未提交的事务。,(,3,)释放在故障时正在处理事务所持有的资源。,(,4,)解决在故障时执行的任何悬而未决的分布事务。,98,电源失效和软件问题是引起一台,Oracle,数据库服务器出现意外崩溃的
28、常见原因。,当系统崩溃时,数据库服务器没有完全关闭。,在系统崩溃期间,,Oracle,没有时间执行数据库检查点以确保缓存中被修改的数据块安全地写回到数据文件中。,系统崩溃不会永久损坏任何一个数据库的数据文件。,7.3,崩溃恢复,99,介质故障是当一个文件、一个文件的部分、磁盘不能读或不能写时出现的故障,介质故障后,必须执行一个介质恢复操作。在一个典型的介质恢复期间,必须完成以下几步操作:,(,1,)修理所有的硬件问题,(,2,)重建丢失的数据文件,(,3,)使用必要的事务日志组,完成恢复操作,(,4,)执行一个适当的介质恢复,7.4,介质恢复,100,完全恢复是一种恢复所有提交事务的操作,恢复
29、全部丢失的修改。,完全恢复包括数据库恢复、表空间恢复和数据文件恢复。,7.5,完全恢复,101,数据库恢复,数据库恢复是恢复数据库中所有丢失工作的最简单的方法,用于恢复数据库的全部数据文件,恢复管理器识别受损的数据文件并且使用恢复目录、可用的数据文件备份集和事务日志来执行自动恢复。执行数据库恢复,应当关闭数据库,使其不可使用。,102,表空间恢复,当一个数据库的部分被损坏,并且需要高可用性时,可以考虑使用表空间恢复。对特定表空间的全部数据文件中丢失的工作进行恢复。但是,如果系统表空间损坏了,不能执行系统表空间的恢复工作。,103,数据文件恢复,当一个单独的数据文件损坏,可以考虑数据文件恢复,可
30、用于一个特定数据文件中丢失的工作。在数据库打开,并且受损的数据文件所在的表空间脱机后,利用恢复管理器来执行数据文件的恢复。,104,在一些情况下,可以执行不完全恢复,使用事务日志的重做项恢复提交事务的一部分工作,重构受损的数据库,使其恢复介质故障前或用户出错之前的一个事务一致性状态。,Oracle,和恢复管理器支持三种不同类型的不完全恢复,基于时间(,TIME,)的恢复,基于修改(,SCN,)的恢复,基于取消的恢复,。,7.6,不完全恢复,105,8,小结,数据库的常见故障主要有:系统崩溃或服务器崩溃,用户错误、冲突或者磁盘失效导致的文件丢失,,SQL,语句失败,网络故障,场地灾难。,106,
31、备份(,Backup,)就是把数据库复制到磁带、磁盘等存储设备的过程,以供故障发生时执行数据库恢复(,Recover,)。备份的目的是防止不可预料的错误和故障导致数据丢失和应用错误。,Oracle,数据库的备份方法有:冷备份、热备份和逻辑备份(,Export/Import,)。,恢复方法有:完全恢复、不完全恢复、,RMAN,备份恢复等方式。,107,Oracle,数据库保护机制主要有数据库备份、事务日志。,在,Oracle,中,,Export,实用程序就是用来完成逻辑备份。若要使用逻辑备份来恢复数据库,那么可以使用,Oracle,的,Import,实用程序。当用户导入导出时,有相应的权限要求。
32、,108,脱机备份是最简单的一种数据库备份方式,必须在数据库关闭后进行备份,用户不能访问数据库,是一种完全备份。,脱机备份可以用于恢复整个数据库,恢复时将备份的文件复制回来,系统就可以正常运行,但备份后数据库所做的操作就丢失了,系统只是恢复到备份时的状态。,脱机备份一般需要备份数据文件、控制文件、联机重做日志、参数文件等。,109,联机备份是在数据库运行时进行的备份,用户仍然可以访问数据库。,联机备份要求数据库运行在归档模式下。联机备份一般备份数据文件、控制文件和日志文件。一般写入磁盘或磁带。,110,创建,Oracle Management Server,(,OMS,),可以使用,OMS,的备份向导实现联机备份与恢复。,备份向导可以采用预定义备份策略和自定义备份策略。,恢复分为整个数据库、表空间和数据文件恢复。,111,数据库恢复是,DBMS,的一个重要组成部分。恢复处理随所发生的故障类型而不同。恢复可以分为完全恢复和不完全恢复。,完全数据库恢复是恢复到故障发生前的状态,所有已经提交的操作都进行恢复,确保数据库不丢失任何数据,完全恢复只用于归档模式。,不完全数据库恢复是将数据库恢复到备份点与介质失败点之间某个时刻的状态,并不是恢复所有提交的操作,不完全恢复可能丢失部分数据。任何类型的恢复包括前滚阶段和回滚阶段。,112,