1、内容内容1 备份与恢复概述备份与恢复概述2 物理备份与恢复物理备份与恢复 3 逻辑备份与恢复逻辑备份与恢复4 恢复管理器(恢复管理器(RMAN)Q&A1 备份与恢复概述备份与恢复概述1.1 数据库的备份数据库的备份1.2 数据库的恢复数据库的恢复1.3 常用术语常用术语1.1 数据库的备份数据库的备份 Oracle数据库的备份分为数据库的备份分为物理备份物理备份和和逻逻辑备份辑备份两种。两种。物理备份物理备份是将实际组成数据库的操作系统是将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程,由文件从一处拷贝到另一处的备份过程,由于它涉及到组成数据库的文件,但不考虑于它涉及到组成数据库的文
2、件,但不考虑其逻辑内容。其逻辑内容。物理备份包括冷备份和热备份两种方式物理备份包括冷备份和热备份两种方式(1)冷备份冷备份(Cold Backup)主主要要指指在在关关闭闭数数据据库库的的状状态态下下进进行行的的数数据据库库完完全全备备份份,备备份份内内容容包包括括所所有有数数据据文文件件、控控制制文文件件、联联机机日日志志文文件件、ini文件。文件。(2)热备份热备份(Hot Backup)指指在在数数据据库库处处于于运运行行状状态态下下,对对数数据据文文件件和和控控制制文文件件进进行行备备份份,要要使使用用热热备备份份必必须须将将数数据据库库运运行行在在(Archive Log)归档方式下
3、。)归档方式下。可可以以使使用用 Oracle 的的恢恢复复管管理理器器(Recovery Manager,RMAN)或操作系统命令进行数据库的物理备份。)或操作系统命令进行数据库的物理备份。逻辑备份逻辑备份是利用是利用SQL语言从数据库中抽取数据并存于语言从数据库中抽取数据并存于二进制文件的过程。逻辑备份可按数据库中某个表、某个二进制文件的过程。逻辑备份可按数据库中某个表、某个用户或整个数据库来导出,并且支持全部、累计、增量三用户或整个数据库来导出,并且支持全部、累计、增量三种方式。使用这种方法,数据库必须处于打开状态,而且种方式。使用这种方法,数据库必须处于打开状态,而且如果数据库是在如果
4、数据库是在restrict状态将不能保证导出数据的一致性。状态将不能保证导出数据的一致性。Oracle提供的逻辑备份工具是提供的逻辑备份工具是 EXP。数据库逻辑备份是物理备份的补充。数据库逻辑备份是物理备份的补充。所谓所谓恢复恢复,就是当发生故障后,利用已备份的数据文件,就是当发生故障后,利用已备份的数据文件或控制文件,重新建立一个完整的数据库。根据出现故障的或控制文件,重新建立一个完整的数据库。根据出现故障的原因,恢复分为两种类型:原因,恢复分为两种类型:实例恢复实例恢复:这种恢复是:这种恢复是Oracle实例出现失败后,实例出现失败后,Oracle自动进行的恢复。自动进行的恢复。介质恢复
5、介质恢复:这种恢复是当存放数据库的介质出现故障时:这种恢复是当存放数据库的介质出现故障时所做的恢复。这里提到的恢复都是指介质恢复。所做的恢复。这里提到的恢复都是指介质恢复。1.2 数据库的恢复数据库的恢复根据数据库的恢复程度,将恢复方法分为两种类型:根据数据库的恢复程度,将恢复方法分为两种类型:完全恢复完全恢复:将数据库恢复到数据库失败时数据库的状:将数据库恢复到数据库失败时数据库的状态。这种恢复是通过装载数据库备份并应用全部的重做日态。这种恢复是通过装载数据库备份并应用全部的重做日志做到的。志做到的。不完全恢复不完全恢复:将数据库恢复到数据库失败前的某一时:将数据库恢复到数据库失败前的某一时
6、刻数据库的状态。这种恢复是通过装载数据库备份并应用刻数据库的状态。这种恢复是通过装载数据库备份并应用部分的重做日志做到的,进行不完全恢复后须在启动数据部分的重做日志做到的,进行不完全恢复后须在启动数据库时用库时用 resetlogs 选项重设联机重做日志。选项重设联机重做日志。1.3 常用术语常用术语 1 1增量、累积和完全备份增量、累积和完全备份增量备份(Incremental):指只备份上次增量,累积或完全备份以后已改变的那些表。增量导出表的定义和其所有数据,不只是改变的行。累积备份(Cumulative):指只备份上次完全备份以后已经更改的那些表。完全备份:用于建立增量备份和累积备份的一
7、个基点。注意:只有在全数据库方式且具有EXP FULL DATABASE角色的用户,才能做增量、累积和完全备份。2 2在线日志与归档日志在线日志与归档日志在线日志:一个Oracle数据库的每一实例有一个相关联的在线日志。一个在线日志由多个在线日志文件组成。在线日志文件填入日志项,日志项记录的数据用于重构对数据库所作的全部修改。后台进程LGWR以循环方式写入在线日志文件。在线日志可在重用前被保存下来,成为归档日志。归档日志:Oracle要将填满的在线日志文件组归档时,则要建立归档日志,或称离线日志。归档机制决定于归档设置,归档已填满的在线日志组的机制可由Oracle后台进程ARCH自动归档或由用
8、户进程发出语句手工地归档。3 3NOARCHIVELOGNOARCHIVELOG方式与方式与ARCHIVELOGARCHIVELOG方式方式数据库可运行在两种不同方式下:NOARCHIVELOG方式或ARCHIVELOG方式。数据库在NOARCHIVELOG方式下使用时,不能进行在线日志的归档。该数据库控制文件指明填满的组不需要归档,所以当填满的组成为活动,在日志开关的检查点完成,该组即可被LGWR重用。在该方式下仅能保护数据库实例故障,而不能免于介质故障。只有最近的存储于联机重做日志组中的数据库的修改才可以用于实例或崩溃恢复。如果数据库在ARCHIVELOG方式下,可实施在线日志的归档。在控
9、制文件中指明填满的日志文件组在归档之前不能重用。一旦组成为不活动,执行归档的进程立即可使用该组。2 物理备份与恢复物理备份与恢复2.1 冷备份与恢复冷备份与恢复2.2 热备份与恢复热备份与恢复2.3 几种非完全恢复方法几种非完全恢复方法冷备份又称脱机备份,必须在数据库已经正常关闭的情况下进行,此时,冷备份又称脱机备份,必须在数据库已经正常关闭的情况下进行,此时,系统会提供给用户一个完整的数据库。系统会提供给用户一个完整的数据库。冷备份时可以将数据库使用的每个文件都备份下来,这些文件包括:冷备份时可以将数据库使用的每个文件都备份下来,这些文件包括:所有控制文件(文件后缀名为所有控制文件(文件后缀
10、名为.CTL,默认路径,默认路径Oracleoradataoradb)所有数据文件(文件后缀名为所有数据文件(文件后缀名为.DBF,默认路径,默认路径Oracleoradataoradb)所有联机所有联机REDO LOG文件(文件形式为文件(文件形式为REDO*.*,默认路径,默认路径Oracleoradataoradb)初始化文件初始化文件INIT.ORA(可选)(默认路径(可选)(默认路径Oracleadminoradbspfile)2.1 冷备份与恢复冷备份与恢复冷备份是最快和最安全的方法。冷备份是最快和最安全的方法。冷备份的优点是:冷备份的优点是:(1)是非常快速的备份方法(只需拷贝文
11、件)。)是非常快速的备份方法(只需拷贝文件)。(2)容易归档(简单拷贝即可)。)容易归档(简单拷贝即可)。(3)容易恢复到某个时间点上(只需将文件再拷贝回去)。)容易恢复到某个时间点上(只需将文件再拷贝回去)。(4)能与归档方法相结合,作数据库)能与归档方法相结合,作数据库“最新状态最新状态”的恢的恢复。复。(5)低度维护,高度安全。)低度维护,高度安全。在在SQL*Plus中进行冷备份,相应语句为:中进行冷备份,相应语句为:备份(关闭数据库后)备份(关闭数据库后)SQLDBA!cp或或SQLDBA!tar cvf/dev/rmd/0/wwwdg/oracle;恢复(启动数据库后)恢复(启动数
12、据库后)SQLDBA!recover datafile“E:dloradatatest.dbf”;test.dbf为需要恢复的数据库。为需要恢复的数据库。热备份要求数据库必须在归档方式下操作,由于热备份需热备份要求数据库必须在归档方式下操作,由于热备份需要消耗较多的系统资源,因此要消耗较多的系统资源,因此DBA应安排在数据库不使用或使应安排在数据库不使用或使用率较低的情况下进行。用率较低的情况下进行。热备份的优点是:热备份的优点是:(1)可在表空间或数据文件级备份,备份时间短。)可在表空间或数据文件级备份,备份时间短。(2)备份时数据库仍可使用。)备份时数据库仍可使用。(3)可达到秒级恢复(恢
13、复到某一时间点上)。)可达到秒级恢复(恢复到某一时间点上)。(4)可对几乎所有数据库实体作恢复。)可对几乎所有数据库实体作恢复。(5)恢复是快速的,在大多数情况下在数据库仍工作时恢复。)恢复是快速的,在大多数情况下在数据库仍工作时恢复。2.2 2.2 热备份与恢复热备份与恢复热备份的不足是:热备份的不足是:(1)不能出错,否则后果严重。)不能出错,否则后果严重。(2)若热备份不成功,所得结果不可用于时间点的恢复。)若热备份不成功,所得结果不可用于时间点的恢复。(3)较难维护,必须仔细小心,不允许失败。)较难维护,必须仔细小心,不允许失败。可可以以使使用用SQL*Plus程程序序和和OEM中中的
14、的备备份份向向导导两两种种方方法法进进行热备份。行热备份。备份过程:(1)查看数据库是否己经启动归档日志:)查看数据库是否己经启动归档日志:archive log list;如果归档日志模式没有启动,则打开数据库的归档日志模式,如果归档日志模式没有启动,则打开数据库的归档日志模式,先使用先使用shutdown immediate命令关闭数据库,然后使用如下命令关闭数据库,然后使用如下命令启动数据库:命令启动数据库:startup mount;(2)修改数据库的归档日志模式:)修改数据库的归档日志模式:alter database archivelog;(3)查看数据库中的表空间文件:)查看数据
15、库中的表空间文件:select filename from dba_data_files;(4)使数据库表空间处于热备份状态;)使数据库表空间处于热备份状态;alter tablespace example begin backup;(5)此时可以直接将表空间数据文件复制到另一个目录中)此时可以直接将表空间数据文件复制到另一个目录中进行备份,复制完成后使用如下命令完成数据的备份:进行备份,复制完成后使用如下命令完成数据的备份:alter tablespace example end backup;恢复:恢复:(1)首先使出现问题的表空间处于脱机状态:)首先使出现问题的表空间处于脱机状态:SQL
16、alter database datafile d:oracleoradataoradbexample0l.dbf offline;(2)将原先备份的表空间文件复制到其原来所在的目)将原先备份的表空间文件复制到其原来所在的目录,并覆盖原有文件。录,并覆盖原有文件。(3)使用)使用 recover命令进行介质恢复,恢复命令进行介质恢复,恢复example表空间:表空间:SQLrecover datafile d:oracleoradataoradbexample0l.dbf;(4)将表空间恢复为联机状态:)将表空间恢复为联机状态:SQLalter database datafiled:oracl
17、eoradataoradbexample0l.dbf online;至此表空间数据恢复完成。至此表空间数据恢复完成。1 1基于基于CancelCancel的恢复的恢复 使用基于Cancel的恢复,可以把数据库恢复到错误发生前的某一状态。具体步骤如下:(1)当遇到数据库错误时,首先使用shutdown immediate命令关闭数据库,然后将备份的数据复制到相应的目录中。(2)使用startup mount命令启动数据库。(3)使用recover命令对数据库进行基于Cancel的恢复:SQLrecover database until cancel;(4)恢复完成后,使用RESETLOGS模式启
18、动数据库即可:SQLalter database open resetlogs;2.3 几种非完全恢复方法几种非完全恢复方法2 2基于时间的恢复基于时间的恢复 使用基于时间的恢复,可以把数据库恢复到错误发生前的某一时间的状态。具体步骤如下:(1)当遇到数据库错误时,首先使用shutdown immediate命令关闭数据库,然后将备份的数据复制到相应的目录中。(2)使用startup mount命令启动数据库。(3)使用recover命令对数据库进行基于时间的恢复:SQLrecover database until time 12-20-2003,08:17:48;(4)恢复完成后,使用RES
19、ETLOGS模式启动数据库即可:SQLalter database open resetlogs;3 3基于基于SCNSCN的恢复的恢复使用基于SCN的恢复,可以把数据库恢复到错误发生前的某一个事务前的状态。具体步骤如下:(1)当遇到数据库错误时,首先使用shutdown immediate命令关闭数据库,然后将备份的数据复制到相应的目录中。(2)使用startup mount命令启动数据库。(3)使用recover命令对数据库进行基于SCN的恢复:SQLrecover database until change 470786058;(4)恢复完成后,使用RESETLOGS模式启动数据库即可:
20、SQLalter database open resetlogs;3 3 逻辑备份与恢复逻辑备份与恢复3.1 导出导出/导入简介导入简介3.2 导出操作导出操作3.3 导入操作导入操作导出是数据库的逻辑备份,导入是数据库的逻辑恢导出是数据库的逻辑备份,导入是数据库的逻辑恢复。可以将复。可以将Oracle9i中的数据移出中的数据移出/移入数据库。这些数据移入数据库。这些数据的读取与其物理位置无关。的读取与其物理位置无关。“导出导出”文件为二进制系统文文件为二进制系统文件,导入时先读取导出的转储二进制文件,并运行以恢复件,导入时先读取导出的转储二进制文件,并运行以恢复数据库。数据库。Oracle的
21、逻辑备份可以通过两种方法来实现,一种是的逻辑备份可以通过两种方法来实现,一种是通过通过DOS环境下的环境下的EXP/IMP命令,完成备份的工作;一命令,完成备份的工作;一种就是通过种就是通过OMS管理器中的导出工具来完成管理器中的导出工具来完成。3.1 导出导出/导入简介导入简介1 1使用使用ExportExport程序进行导出操作程序进行导出操作(1)语句参数从命令行调用Export程序并且传递各类参数和参数值,可以完成导出操作。参数和参数值决定了导出的具体任务。注意:一系列的参数相互冲突会造成Export的指令不一致。例如,设置FULL=Y且OAR=HR就会失败,这是因为FULL参数调用F
22、ull导出,而OAR参数指定User导出。3.2 导出操作导出操作(2)导出模式由三种导出模式:交互模式、命令行模式和参数文件模式。交互模式:在输入EXP命令后,根据系统的提示输入导出的参数,如:用户名、导出创建的文件名及分配内存块大小等参数。命令行模式:命令行模式与交互模式类似,不同的是使用命令行模式时,只能在模式被激活后,才能把参数和参数值传递给导出程序。参数文件模式:参数文件模式的关键参数是“parfile=”。“Parfile=”的对象是一个包含激活控制导出对话的参数和参数值的文件名。(3)导出类型导出类型有三种:全局、用户和表。全局:导出所有的数据、数据定义和用来重建数据库的存储对象
23、。用户:导出规定用户的数据、数据定义和存储对象。规定的用户名在“owner=”参数之后给出。表:只导出运行该导出用户的数据和数据定义。2 2通过导出向导实现导出操作通过导出向导实现导出操作导出向导能够从数据库中提取各种对象定义和数据,然后将它们存储在二进制格式的导出转储文件中。导出向导可以指导用户逐步完成导出操作。导出向导对3种导出类型都提供了操作。所有用户都可以按用户类型和表类型导出自己的对象,只有具有EXP_FULL_DATABASE角色的用户可以按全局类型导出对象。1 1通过通过ImportImport程序进行导入操作程序进行导入操作(l)导入可以完成的工作1)对重要的数据,进行备份。当
24、出现误删除操作时,利用导入操作通过导出文件将其恢复。在编程前先将要对其进行操作的表导入到另一个概要中。这样,如果由于编程中的错误删除了表中的某些行时,就可以从已经导入到概要的备份表中恢复被删除的行。2)把数据从一个操作系统中运行的Oracle9i数据库移动到另一个操作系统中的Oracle9i数据库中。3.3 导入操作导入操作(2)使用的参数导入和导出使用的参数基本相同。(3)导入的模式导入的模式与导出完全相同,有用户模式、表模式和全局模式(也称为数据库模式)。在使用这些模式时,需注意以下的问题:对于全局模式导入,一定要保证“Import terminated successfully with
25、out warnings”信息在日志文件的最底行。这表示所有的导入都已完成。对于用户模式导入,如果是多个源用户和目标用户,必须保证源用户的数目与目标用户的数目相同。否则,其结果不可预测。2 2通过导入向导进行导入操作通过导入向导进行导入操作导入向导可以指导用户完成导入操作。导入向导的各步窗口与导出向导完全相似,操作方法也相同。需要注意的是:(1)导入操作的目标用户必须事先在目标数据库中创建;(2)所有用户都可以使用用户模式和表模式导入;(3)只有具有IMP-FULL-DATABASE角色的用户可以按全局模式导入。4 4 恢复管理器(恢复管理器(RMANRMAN)4.1 RMAN的特点的特点4.
26、2 RMAN命令命令 4.3 RMAN的使用的使用4.1 RMAN的特点的特点RMAN的主要特点有:的主要特点有:(1)功能类似物理备份,但比物理备份强大;)功能类似物理备份,但比物理备份强大;(2)可以压缩空块;)可以压缩空块;(3)可以在块水平上实现增量,实现真正的增量备份;)可以在块水平上实现增量,实现真正的增量备份;(4)可以把备份的输出打包成备份集,也可以按固定大小分)可以把备份的输出打包成备份集,也可以按固定大小分割备份集;割备份集;(5)备份与恢复的过程可以自动管理;)备份与恢复的过程可以自动管理;(6)可以使用脚本(存在)可以使用脚本(存在Recovery catalog 中)
27、;中);(7)在备份和恢复期间,)在备份和恢复期间,RMAN检查损坏的数据块,并在报检查损坏的数据块,并在报警日志、跟踪文件和其他数据字典视图中报告损坏的情况。警日志、跟踪文件和其他数据字典视图中报告损坏的情况。1 1基本命令基本命令 RMAN利用RUN这个命令来提交作业。在RMAN的环境中,RUN命令用来编译和执行由大括号括起来的一个或多个命令集合。例如下面的RMAN作业命令分配一个磁盘通道并备份数据库。RUNALLOCATE CHANNEL diskl TYPE DISK;BACKUP DATABASE;4.2 RMAN命令命令 2 2其他命令其他命令set duple可同时创建同一个备份
28、集的多个拷贝。可同时创建同一个备份集的多个拷贝。crosscheck backupset验证在修复目录中列出备份块是真正可用的。验证在修复目录中列出备份块是真正可用的。allocate channel在在RMAN和和目目标标数数据据库库之之间间建建立立连连接接。RMAN尽尽可可能能使使用用多多个个通通道道以以便便能能并并发发操操作作。在在任任意意时时刻刻,一一个个通通道道仅仅工工作作于于一一个个文件拷贝和一个备份集。文件拷贝和一个备份集。deacllocate channel释放用释放用allocate分配的通道。分配的通道。setlimit channel控制一个通道对资源的使用。控制一个通
29、道对资源的使用。resync catalog使使得得修修复复目目录录与与目目标标数数据据库库的的控控制制文文件件进进行行比比较较,可可用新的或被修改的信息来更新修复目录。用新的或被修改的信息来更新修复目录。change使用备份块如归档日志的可用信息来更新修复目录。使用备份块如归档日志的可用信息来更新修复目录。list 查询修复目录以产生内容列表。查询修复目录以产生内容列表。report查查询询修修复复目目录录以以获获得得比比列列表表命命令令更更多多的的信信息息。可可使使用用这这些些信信息息决定文件需要备份或过时的备份。决定文件需要备份或过时的备份。1 1创建恢复目录创建恢复目录(1)在目录数据
30、库中创建恢复目录所用表空间)在目录数据库中创建恢复目录所用表空间create tablespace rmants datafile“c:oracleoradataccrmants.ora”size 20M;(2)在目录数据库中创建)在目录数据库中创建RMAN 用户并授权用户并授权create user rman identified by rman default tablespace rmants temporary tablespace temp quota unlimited on rmants;grant recovery_catalog_owner to rman;(3)在目录数据库
31、中创建恢复目录)在目录数据库中创建恢复目录C:rman catalog rman/rman(4)注册目标数据库到恢复目录)注册目标数据库到恢复目录这里目标数据库使用的服务名称是这里目标数据库使用的服务名称是rman,意思为要使用,意思为要使用RMAN 进行备份的数进行备份的数据库,而目录数据库使用的服务名称是据库,而目录数据库使用的服务名称是CC。C:rman target sys/sysrman4.3 RMAN的使用的使用 2 2启动启动RMANRMANRMAN连接到目标数据库:CONNECT TARGET system/managerora9;3 3数据库备份数据库备份(1)备份整个数据库
32、RMANrun allocate channel c1 type disk;backup database format e:dbbackup2db.dmp;(2)复制数据文件RMANrun allocate channel c1 type disk;copy datafile c:oracleoradatarmanusers01.dbf to e:dbbackupu.dbf tag=u1215;(3)查看备份及复制的信息RMANlist backup;(4)在备份时设置相关参数format文件输出格式,%ddatabase name,%sbackup sets sequence number
33、,%pbackup pieces sequence numberfilesperset 每个备份集中所包括的文件数RMANrun allocate channel c1 type disk;set limit channel c1 kbytes 8000;backupformat e:dbbackupdb_%d_%s_%p.bck(database filesperset=2);4 4数据库恢复数据库恢复run allocate channel c1 type disk;restore controlfile toE:/oracle/oradata/ora/control01.ctl;replicate controlfile fromE:/oracle/oradata/ora/control01.ctl;restore database;sql alter database mount;recover database until cancel;sql alter database open resetlogs;release channel c1;Question&AnswerThank you