《Oracle11g第11讲备份与恢复》由会员分享,可在线阅读,更多相关《Oracle11g第11讲备份与恢复(29页珍藏版)》请在金锄头文库上搜索。
1、ORACLEORACLE数据库数据库 备份与恢备份与恢复复篇篇本课程学习内容本课程学习内容逻辑备份逻辑备份物理备份物理备份脱机物理备份脱机物理备份联机物理备份联机物理备份备份实例备份实例ORACLEORACLE备份方式备份方式 数据库的备份和恢复是数据库管理人员的重要职责之一。数据库的备份和恢复是数据库管理人员的重要职责之一。当数据库中的数据被破坏时,数据库管理人员应尽快地恢复,当数据库中的数据被破坏时,数据库管理人员应尽快地恢复,以确保数据库系统正常使用。以确保数据库系统正常使用。ORACLEORACLE备份有三种方式:备份有三种方式:脱机物理备份脱机物理备份联机物理备份联机物理备份逻辑备份
2、逻辑备份逻逻辑辑备备份份是是读读取取一一系系列列的的数数据据库库记记录录集集,并并写写入入二二进进制制文文件件中中,这这些些记录集的读取与其所处位置无关。记录集的读取与其所处位置无关。物理备份它涉及到组成数据库的文件,但不考虑逻辑内容。物理备份它涉及到组成数据库的文件,但不考虑逻辑内容。脱机物理备份脱机物理备份 脱机物理备份是指数据库在关闭情况下,对数据库文件进脱机物理备份是指数据库在关闭情况下,对数据库文件进行备份。行备份。数据库使用的每个文件都被备份下来,这些文件包括:数据库使用的每个文件都被备份下来,这些文件包括:所有数据文件(所有数据文件(v$datafile)所有控制文件所有控制文件
3、 (v$controlfile)所有联机所有联机REDO LOG REDO LOG 文件文件(v$logfile)INIT.ORAINIT.ORA文件文件( (可选可选) )注意:注意:值得注意的是脱机备份必须是数据库关闭的情况下完成,当数据库值得注意的是脱机备份必须是数据库关闭的情况下完成,当数据库开着的时候,执行数据库文件系统备份无效。开着的时候,执行数据库文件系统备份无效。脱机备份步骤脱机备份步骤备份步骤:备份步骤:(1 1)列出备份文件清单)列出备份文件清单 备份的物理文件应包括所有数据文件、在线日志文件、控制备份的物理文件应包括所有数据文件、在线日志文件、控制 文件和参数文件。文件和
4、参数文件。 缺省所有文件在缺省所有文件在% %ORALE_HOME% DATABASEORALE_HOME% DATABASE(2 2)以正常方式关闭数据库以正常方式关闭数据库 SVRMGRSTUTDOWN;SVRMGRSTUTDOWN;(3 3)备份(备份(1 1)清单中列出的文件)清单中列出的文件 例:例:COPY D:ORANTDATABASE*.* E:BACKUPCOPY D:ORANTDATABASE*.* E:BACKUP(4 4)重新启动数据库重新启动数据库 SVRMGRSTARTUP;SVRMGRSTARTUP;脱机物理备份恢复脱机物理备份恢复恢复步骤:恢复步骤:(1 1)如
5、果必要需重新安装)如果必要需重新安装ORACLEORACLE(2 2)关闭数据库关闭数据库 SVRMGRSTUTDOWN ;SVRMGRSTUTDOWN ;(3 3)导入最近脱机完全备份文件备份的物理文件应包括所有数导入最近脱机完全备份文件备份的物理文件应包括所有数 据文件、在线日志文件、控制文件和参数文件。据文件、在线日志文件、控制文件和参数文件。 例:例:COPY E:BACKUPDATABASE*.* D:ORANTDATABASECOPY E:BACKUPDATABASE*.* D:ORANTDATABASE(4 4)启动数据库启动数据库 SVRMGRSTARTUP;SVRMGRSTA
6、RTUP;优点:备份和恢复都易于操作优点:备份和恢复都易于操作缺点:必须关闭数据库,且只能恢复到备份点缺点:必须关闭数据库,且只能恢复到备份点联机备份(热备份)联机备份(热备份) 数据库需要二十四小时运行数据库需要二十四小时运行, ,而且随时有新的数据加入而且随时有新的数据加入. .数据数据丢失将影响个公司。丢失将影响个公司。联机备份前提条件:联机备份前提条件:数据库必须设置为数据库必须设置为archivelog mode archivelog mode 设置步骤:设置步骤:1.1.修改初始化参数文件,例如修改初始化参数文件,例如INITORCL.ORA INITORCL.ORA 加入加入:
7、:log_archive_start = true # if you want automatic archivinglog_archive_dest = d:orantdatabasearchivelog_archive_format = log%s.arc2.2.修改数据库模式修改数据库模式 svrmgrstartup mount ; svrmgralter database archivelog; svrmgralter database open;联机备份(热备份)联机备份(热备份)在线备份在线备份在线备份用户表空间在线备份用户表空间( (user_data)user_data)的步骤
8、如下:的步骤如下:1.1.sqlconnect system/managersqlconnect system/manager/设置开始在线备份标志设置开始在线备份标志2.sqlalter tablespace user_data begin backup;2.sqlalter tablespace user_data begin backup;/备份表空间所对应的数据文件备份表空间所对应的数据文件3.sqlhost copy d:orantdatabaseusr1orcl.ora 3.sqlhost copy d:orantdatabaseusr1orcl.ora d:orabakd:ora
9、bak/设置停止在线备份标志设置停止在线备份标志4.sqlalter tablespace user_data end backup;4.sqlalter tablespace user_data end backup;假设有一天用户表空间的数据文件(假设有一天用户表空间的数据文件(usr1orcl.orausr1orcl.ora)的磁盘出现故障(或被误删除),的磁盘出现故障(或被误删除),数据库打不开(指定数据文件找不到),数据库打不开(指定数据文件找不到),ORACLEORACLE提示要进行介质恢复。提示要进行介质恢复。 逻辑备份是通过读取数据库记录集,且将记录集写入二进逻辑备份是通过读取
10、数据库记录集,且将记录集写入二进制文件来实现。这种记录集的读出与物理位置无关。制文件来实现。这种记录集的读出与物理位置无关。ORACLEORACLE的的逻辑备份实现方法:逻辑备份实现方法:1.1.EXPORTEXPORT实用程序来实现实用程序来实现(exp.exe)exp.exe)2.2.Oracle Enterprise ManagerOracle Enterprise ManagerDate ManagerDate Manager逻辑备份逻辑备份导出备份有三种模式:导出备份有三种模式:1.1.用户模式:导出用户所有对象以及对象中的数据;用户模式:导出用户所有对象以及对象中的数据;2.2.表
11、模式:导出用户所有表或者指定的表;表模式:导出用户所有表或者指定的表;3.3.整个数据库:导出数据库中所有对象。整个数据库:导出数据库中所有对象。它的备份有三种类型:它的备份有三种类型:1.1.完全型完全型( (COMPLETE EXPORT)COMPLETE EXPORT):备份整个数据库;备份整个数据库;2.2.积累型积累型( (COMULATIVE ERPORT)COMULATIVE ERPORT):备份上一次积累型备份所改变的数据备份上一次积累型备份所改变的数据3.3.增量型增量型( (INCREAMENTAL EXPORT)INCREAMENTAL EXPORT):备份上一次备份后改
12、变的数据。备份上一次备份后改变的数据。 EXPORT EXPORT 的命令可以交互式、命令行(建议使用)、参数文的命令可以交互式、命令行(建议使用)、参数文件的方式进行。具体每一种的方式的操作可参考有关资料,件的方式进行。具体每一种的方式的操作可参考有关资料,也可通过也可通过imp helpimp helpy y的查看帮助。的查看帮助。导出备份导出备份导出备份示例导出备份示例在此用命令行方式列举一些常用的例子:在此用命令行方式列举一些常用的例子:重要的关键字说明:重要的关键字说明:FILEFILE:由由EXPORTEXPORT建立的输出文件名。缺省:建立的输出文件名。缺省:expdat.dmp
13、expdat.dmpTABLES: TABLES: 指定要导出的表。指定要导出的表。OWNER: OWNER: 指定要导出的用户。指定要导出的用户。FULLFULL: 导出整个数据库的标志。导出整个数据库的标志。例:导出例:导出SCOTTSCOTT用户的用户的EMPEMP、DEPTDEPT表到表到scott.dmpscott.dmp文件文件EXP scott/tiger file=scott.dmp tables=(emp,dept)EXP scott/tiger file=scott.dmp tables=(emp,dept)例:导出例:导出SCOTTSCOTT用户的所有对象到用户的所有对象
14、到scott.dmpscott.dmp文件文件EXP system/manageroracle file=scott owner=scottEXP system/manageroracle file=scott owner=scott例:全数据库导出到例:全数据库导出到fulldb.dmpfulldb.dmp文件文件EXP system/manageroracle file=fulldb.dmp full=YEXP system/manageroracle file=fulldb.dmp full=YIMPORTIMPORT导入导入IMPORTIMPORT导入:导入: 导入的过程是导出的逆过程
15、,这个命令先读取导出来的导出导入的过程是导出的逆过程,这个命令先读取导出来的导出转储二进制文件,并运行文件,恢复对象用户和数据。转储二进制文件,并运行文件,恢复对象用户和数据。IMPORTIMPORT命令执行的方法和命令执行的方法和EXPORTEXPORT方案有关。方案有关。1.1.如果如果EXPORTEXPORT所实施的是完全型方案所实施的是完全型方案( (FULL)FULL)则在则在IMPORTIMPORT时所有的数据对时所有的数据对象,包括表空间,数据文件,用户都会在导入时创建,但考虑到数据象,包括表空间,数据文件,用户都会在导入时创建,但考虑到数据库中的物理布局,预先创建表空间和用户是
16、有用的。库中的物理布局,预先创建表空间和用户是有用的。2.2.如果如果EXPORTEXPORT使用的是使用的是INCREMENTAL/CUMULATIVEINCREMENTAL/CUMULATIVE方式,则需要预先设置方式,则需要预先设置好表空间、用户、数据文件。好表空间、用户、数据文件。逻辑恢复示例逻辑恢复示例例:用导出文件例:用导出文件scott1.dmpscott1.dmp,恢复恢复empemp、deptdept表表C:IMP scott/tigeroracle file=scott tables=(emp,dept)C:IMP scott/tigeroracle file=scott
17、tables=(emp,dept)例:用导出文件例:用导出文件scott.dmpscott.dmp,恢复恢复scottscott用户的全部对象用户的全部对象C:IMP system/manageroracle file=scott fromuser=scottC:IMP system/manageroracle file=scott fromuser=scott touser=scott touser=scott例:用导出文件例:用导出文件fulldb.dmpfulldb.dmp,恢复的整个数据库恢复的整个数据库C:IMP system/manageroracle file=fulldb.dm
18、p full=YC:IMP system/manageroracle file=fulldb.dmp full=YORACLEORACLE数据库恢复管理器数据库恢复管理器( (RMAN)RMAN) RMAN RMAN(即即Recover ManagerRecover Manager)是是ORACLEORACLE数据库备份和恢复的主数据库备份和恢复的主要管理工具之一,它可以很方便快捷地对数据库实现备份和要管理工具之一,它可以很方便快捷地对数据库实现备份和恢复,而且它还可以保存已经备份的信息以供查询。用户还恢复,而且它还可以保存已经备份的信息以供查询。用户还可以不经过实际的还原即可检查已经备份的数
19、据文件的可用可以不经过实际的还原即可检查已经备份的数据文件的可用性。你还可以通过图形见面和命令行进行所有的备份工作。性。你还可以通过图形见面和命令行进行所有的备份工作。RMANRMAN恢复管理器的主要特点归纳如下:恢复管理器的主要特点归纳如下:可实现增量备份可实现增量备份可以实现对数据库表,控制文件,数据文件和归档日志备份可以实现对数据库表,控制文件,数据文件和归档日志备份可实现多线程备份可实现多线程备份可以存储备份信息可以存储备份信息可以检测备份是否可以成功还原可以检测备份是否可以成功还原恢复管理器恢复管理器( (RMAN)RMAN)使用使用RMANRMAN的两种方式的两种方式: :Noca
20、talogNocatalog 不使用恢复目录,而是与目标数据库(即所要执行备份和恢不使用恢复目录,而是与目标数据库(即所要执行备份和恢复的数据库)直接相连。选择这种方式,数据库的复的数据库)直接相连。选择这种方式,数据库的RMANRMAN备份备份信息都将存储于控制文件中。信息都将存储于控制文件中。CatalogCatalog 使用恢复目录为可选项,目标数据库的使用恢复目录为可选项,目标数据库的RMANRMAN备份信息都将存备份信息都将存储于另一个数据库中。储于另一个数据库中。NocatalogNocatalog下连接下连接RMANRMAN NocatalogNocatalog为不使用恢复目录,
21、而是与目标数据库(即所要执为不使用恢复目录,而是与目标数据库(即所要执行备份和恢复的数据库)直接相连。选择这种方式,数据库行备份和恢复的数据库)直接相连。选择这种方式,数据库的的RMANRMAN备份信息都将存储于控制文件中。备份信息都将存储于控制文件中。连接命令格式连接命令格式: rman nocatalog target rman nocatalog target / :用户必须为具有用户必须为具有SYSDBASYSDBA权限的用户权限的用户CatalogCatalog恢复目录下连接恢复目录下连接RMANRMAN 如果选择恢复目录,则必须另外选择一个数据库来存放目标如果选择恢复目录,则必须另
22、外选择一个数据库来存放目标数据库的恢复信息。一般用于管理多个数据库的备份信息。数据库的恢复信息。一般用于管理多个数据库的备份信息。需另外指定一个数据库作为恢复目录的存储。需另外指定一个数据库作为恢复目录的存储。可利用到可利用到RMANRMAN的所有功能,例如检查一个备份集是否有用、的所有功能,例如检查一个备份集是否有用、创建存储脚本等功能。创建存储脚本等功能。创建恢复目录创建恢复目录创建恢复目录步骤:创建恢复目录步骤:1.1.在指定创建恢复目录的数据库上,创建一用户在指定创建恢复目录的数据库上,创建一用户rman,rman,并授予并授予connect,resource,recover_cata
23、log_ownerconnect,resource,recover_catalog_owner权限。权限。(1 1).sqlconnect / as sysdba;.sqlconnect / as sysdba;(2 2).sqlcreate user rman identified by rman.sqlcreate user rman identified by rman default tablespace users default tablespace users temporary tablespace temp; temporary tablespace temp;(3 3).s
24、qlgrant connect,resource,recover_catalog_owner to rman;.sqlgrant connect,resource,recover_catalog_owner to rman;(4 4). .使用使用rmanrman帐号登录帐号登录 rmanconnect catalog rman/rmanrmanconnect catalog rman/rman(5 5). .创建恢复目录创建恢复目录 rmancreate catalog tablespace users;rmancreate catalog tablespace users;使用恢复目录连接
25、使用恢复目录连接命令格式命令格式Rman catalog rman/rmandb1 target sys/sysdb2Rman catalog rman/rmandb1 target sys/sysdb2 Db1:Db1:恢复目录数据库的连接串恢复目录数据库的连接串Db2:Db2:要备份的目标数据库连接串要备份的目标数据库连接串RMANRMAN备份命令备份命令备份命令格式备份命令格式Rmanrun Rmanrun Allocate channel Allocate channel type type Format Format ;Backup Backup 相应名称相应名称 通道名称通道名称:
26、 :通道名称自定义如,通道名称自定义如,c1,c2c1,c2等等设备类型:只有两种即:设备类型:只有两种即:DISKDISK(磁盘)或磁盘)或SBT_TYPESBT_TYPE(磁带)磁带)备份实例备份实例例例1.1.使用使用RMANRMAN备份整个数据库备份整个数据库, ,备份集以备份集以d:backupdbfull.bak d:backupdbfull.bak 保存。保存。1.C:rman nocatalog target sys/sys1.C:rman nocatalog target sys/sys2.rmanrun 2.rmanrun Allocate channel c1 type
27、diskAllocate channel c1 type diskFormat Format d:backupdbfull.bakd:backupdbfull.bak; ;Backup database;Backup database; 注意:如果为注意:如果为nocatalognocatalog模式,因为所有模式,因为所有rmanrman备份信息都保存在备份信息都保存在控制文件,故为灾难恢复需要附加做控制文件的拷贝备份,控制文件,故为灾难恢复需要附加做控制文件的拷贝备份,在以上脚本加上一句:在以上脚本加上一句:copy current controlfile to copy current
28、controlfile to d:tempcontrol.bakd:tempcontrol.bak; ;备份实例备份实例例例2.2.使用使用RMANRMAN备份表空间备份表空间USERUSER”, ,备份集以备份集以d:backupd:backupTs_user.bak Ts_user.bak 保存。保存。Run Run allocate channel c1 type diskallocate channel c1 type diskformat d:tempts_user.bak;format d:tempts_user.bak;backup tablespace USERS;backup
29、 tablespace USERS; 备份实例备份实例例例3.3.使用使用RMANRMAN备份数据文件备份数据文件d:orantdatabaseusr1orcl.orad:orantdatabaseusr1orcl.ora, ,备份集以备份集以d:backupdf_usr.bakd:backupdf_usr.bak保存。保存。run run allocate channel c1 type diskallocate channel c1 type diskformat d:tempdf_usr.ora;format d:tempdf_usr.ora;backup datafile d:oran
30、tdatabaseusr1orcl.ora;backup datafile d:orantdatabaseusr1orcl.ora; 备份实例备份实例例例4.4.使用使用RMANRMAN备份所有归档重做日志文件备份所有归档重做日志文件, ,备份集以备份集以d:backuparchivelog.bakd:backuparchivelog.bak保存。保存。run run allocate channel c1 type diskallocate channel c1 type diskformat d:temparchivelog.bak;format d:temparchivelog.bak;
31、backup archivelog ;backup archivelog ; 选项:选项:delete inputdelete input备份实例备份实例例例4.4.使用使用RMANRMAN备份控制文件备份控制文件, ,备份集以备份集以d:backupcontrol.bakd:backupcontrol.bak保存。保存。有两种方式备份控制文件:有两种方式备份控制文件:1 1。需恢复目录或控制文件的备份信息恢复。需恢复目录或控制文件的备份信息恢复run run allocate channel c1 type diskallocate channel c1 type diskformat d:
32、tempcontrol.bak;format d:tempcontrol.bak;backup current controlfile ;backup current controlfile ; 2.2.拷贝方法,无需恢复目录或控制文件的备份信息恢复拷贝方法,无需恢复目录或控制文件的备份信息恢复, ,建议采用建议采用run run allocate channel c1 type disk;allocate channel c1 type disk;copy current controlfile to copy current controlfile to d:tempcontrol.bak
33、d:tempcontrol.bak ; ; 恢复实例恢复实例例:恢复整个数据库例:恢复整个数据库Run Run Allocate channel c1 type disk;Allocate channel c1 type disk;Restore database;Restore database;Recover database;Recover database;Sql Sql alter database openalter database open; ; 注意:被恢复的数据库需要为注意:被恢复的数据库需要为“mountmount”状态状态执行上面的脚本系统做了如下工作:执行上面的脚本系
34、统做了如下工作:1 1)RMANRMAN分配通道分配通道c1c1用于恢复操作用于恢复操作2 2)RMANRMAN从备份集中还原所有最近有效的数据文件从备份集中还原所有最近有效的数据文件3 3)通过为介质恢复提供所需的归档重做日志文件,恢复数据库)通过为介质恢复提供所需的归档重做日志文件,恢复数据库4 4)最后,打开数据库,使数据库可以正常访问。)最后,打开数据库,使数据库可以正常访问。恢复实例恢复实例例:恢复表空间例:恢复表空间USERSUSERSrmanrun rmanrun allocate channel c1 type disk;allocate channel c1 type dis
35、k;sql alter tablespace user_data offline;sql alter tablespace user_data offline;restore tablespace user_data;restore tablespace user_data;recover tablespace user_data;recover tablespace user_data;sql alter tablespace user_data online;sql alter tablespace user_data online; 执行上面的脚本系统做了如下工作:执行上面的脚本系统做了
36、如下工作:1 1)RMANRMAN分配通道分配通道c1c1用于恢复操作用于恢复操作2 2)将要恢复的表空间)将要恢复的表空间“user_datauser_data”脱机脱机3 3)RMANRMAN从备份集中还原属于表空间从备份集中还原属于表空间“user_datauser_data”的数据文件的数据文件4 4)通过为介质恢复提供所需的归档重做日志文件,恢复属于表空间)通过为介质恢复提供所需的归档重做日志文件,恢复属于表空间“user_datauser_data”的数据文件的数据文件. .5 5)最后,打开)最后,打开RMANRMAN将表空间将表空间“user_datauser_data”联机,
37、使表空间可以正常访问联机,使表空间可以正常访问. .恢复实例恢复实例例:恢复控制文件例:恢复控制文件rmanrun rmanrun allocate channel c1 type disk;allocate channel c1 type disk;restore controlfile;restore controlfile; 例:恢复归档重做日志文件例:恢复归档重做日志文件rmanrun rmanrun allocate channel c1 type disk;allocate channel c1 type disk;Restore archivelog all;Restore archivelog all;