《第6章RMAN备份与恢复.ppt》由会员分享,可在线阅读,更多相关《第6章RMAN备份与恢复.ppt(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第6章章 RMAN备份与恢复备份与恢复6.1 RMAN备份备份lRMAN(Recovery Manager)是Oracle恢复管理器的简称,是集数据库备份(Backup)、还原(Restore)和恢复(Recover)于一体的Oracle数据库备份与恢复工具。RMAN只能用于ORACLE8或更高的版本中。它能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文件,rman备份是一种物理的备份,它直接去读取数据块,因此rman是块级别的备份。从备份的那个时间点开始rman将锁定此刻的数据文件信息,也就是说只是备份数据文件到此刻的信息为之。6.1.1 连接数
2、据库连接数据库l1通过RMAN TARGET连接l在操作系统命令提示符下直接连接目标数据库:lRMAN TARGET user/passwordnet_service_name l通过RMAN连接本地数据库非常简单,以Windows平台为例,进入到命令提示符界面:lC:SETORACLE_SID=orcllC:rman target /l恢复管理器:Release 11.2.0.1.0 - Production on 星期一 5月 4 22:54:48 2015l连接到目标数据库:ORCL (DBID=1405127339)l2通过CONNECT TARGET连接l也可以先启动RMAN,然后再
3、通过CONNECT命令来连接目标数据库,如下所示:lCONNECT TARGETuser/passwordnet_service_namelC:rmanl恢复管理器: Release 11.2.0.1.0 - Production on 星期一 5月 4 23:01:29 2015lCopyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.lRMAN connect target /l连接到目标数据库: ORCL (DBID=1405127339)6.1.2 通道分配通道分配l所谓通道:是指由服务器进
4、程发起并控制目标数据库的文件与物理设备之间的字节流。一个通道即为一个会话,一个会话对应于一个服务器进程。所有的备份和恢复操作都是由RMAN连接的服务器进程完成的,更确切的说:是由通道完成的。通道的分配主要有两种形式:自动分配通道和手动分配通道。可以根据预定义的配置参数自动分配通道,也可以在需要时手动分配通道。1自动分配通道自动分配通道l自动分配通道是指在执行RMAN命令时,不需要显式制定通道的细节就可以使用通道。(实际上也是使用预先设置或是使用默认的设置),如果没有手动分配通道,那么RMAN在执行BACKUP等操作I/O的命令时将会使用预定义配置中的设置来自动分配通道。l(1)查看默认的通道设
5、备类型设置类型lRMAN show default device type;lusing target database control file instead of recovery cataloglRMAN configuration parameters for database with db_unique_name PRAC are:lCONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultl(2)查看可用的设备类型(含通道的数目)lRMAN show device type;lRMAN configuration parameters fo
6、r database with db_unique_name PRAC are:lCONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # defaultl修改设备备份并行度:lRMAN configure device type disk parallelism 2; -设置设备备份并行度为2,这样备份开始时会使用两个通道进行备份。lnew RMAN configuration parameters:lCONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO
7、BACKUPSET;lnew RMAN configuration parameters are successfully storedl还原默认设置值:lRMAN configure device type disk clear;lold RMAN configuration parameters:lCONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;lRMAN configuration parameters are successfully reset to default valuel(3)查看通道配置lR
8、MAN show channel;lRMAN configuration parameters for database with db_unique_name PRAC are:lRMAN configuration has no stored or default parametersl(4)修改通道配置:lRMAN configure channel device type disk maxpiecesize 2G; l -设置最大备份片的大小为2Glnew RMAN configuration parameters:lCONFIGURE CHANNEL DEVICE TYPE DISK
9、 MAXPIECESIZE 2 G;lnew RMAN configuration parameters are successfully storedlRMAN configure channel 1 device type disk to destination d:backup; -设置通道1的备份路径为d:backuplnew RMAN configuration parameters:lCONFIGURE CHANNEL 1 DEVICE TYPE DISK TO DESTINATION d:backup;lnew RMAN configuration parameters are
10、successfully storedl(5)还原通道配置:lRMAN configure channel device type disk clear;lold RMAN configuration parameters:lCONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 2 G;lold RMAN configuration parameters are successfully deletedlRMAN configure channel 1 device type disk clear;lold RMAN configuration par
11、ameters:lCONFIGURE CHANNEL 1 DEVICE TYPE DISK TO DESTINATION d:backup;lold RMAN configuration parameters are successfully deleted2手动分配通道手动手动分配通道手动l分配通道有一个专用命令:ALLOCATE CHANNEL,该命令可以(并且只能)在RUN块中出现。在执行BACKUP、RESTORE等需要进行磁盘I/O操作的命令时,可以将它们与ALLOCATE CHANNEL命令放在一个手动分配通道l使用RUN命令手动分配通道。语法为:lRUNlALLOCATE CHA
12、NNEL 通道名称 DEVICE TYPE 设备类型;lBACKUPlRUN块中,利用ALLOCATE CHANNEL为它们分配通道。例如:6.1.2 RMAN备份类型备份类型l1备份集(Backup set)l2镜像副本(Image copy)6.1.3 BACKUP命令命令lRMAN中所有的备份操作,都是通过BACKUP命令(指创建备份集方式的备份)进行的,对于比较简单的备份需求,甚至只需要执行一条命令,下面分别演示通过BACKUP命令进行不同级别的备份。BACKUP命令的基本语法为:lBACKUP backup_option backup_object lPLUS ARCHIVELOGl
13、backup_object_option;1整库的备份整库的备份只需要一条命令,如下所示:lRMANBACKUP DATABASE FORMAT D:BACKUP%U.BKP;2备份表空间备份表空间l只要实例启动并处于加载状态,无论数据库是否打开,都可以在RMAN中对表空间进行备份。使用BACKUP TABLESPACE命令备份一个或多个表空间。lRMANBACKUP TABLESPACE system,users FORMAT D:BACKUP%U.BKP;l如果想看创建的表空间备份,可以通过LIST命令来查看:lRMANLISTBACKUPOFTABLESPACEUSERS;3备份数据文件
14、备份数据文件l有两种方式实现数据文件的备份:一种是通过数据文件名称来备份;另一种是通过数据文件编号指定来备份的数据文件。l可能通过查询数据字典DBA_DATA_FILES来得到数据文件名和数据文件编号。lSQL select file_id,file_name from DBA_DATA_FILES;l通过BACKUP DATAFILE命令备份USERS表空间的数据文件:lRMANBACKUP DATAFILE E:APPADMINISTRATORORADATAORCLUSERS01.DBF FORMAT D:BACKUP%U;l该命令与BACKUP DATAFILE 4 FORMAT D:B
15、ACKUP%U;完全等价。4备份控制文件备份控制文件l手动执行备份命令,例如:lRMAN backup current controlfile format d:backup%U.bkp;5备份归档重做日志文件备份归档重做日志文件l可以通过如下命令来查看归档日志信息:lsqlselect * from v$archived_log;l使用BACKUP ARCHIVELOG命令备份归档重做日志文件lRMAN backup archivelog all format d:backup%U.BKP;l注:执行BACKUP命令时指定可以PLUS ARCHIVELOG子句来实现备份归档重做日志文件。lR
16、MAN backup datafile 4 plus archivelog;l以上语句是在备份数据文件之前首先对所有归档文件进行备份。l完成备份之后,可以通过下列命令查看已备份的归档日志片段:6备份服务器初始化参数文件备份服务器初始化参数文件l在进行备份控制文件时,RMAN会自动备份服务器的参数文件,并置于控制文件相同的备份片段中,因此很少需要单独对SPFILE进行备份,如果想单独备份,直接使用BACKUP SPFILE命令即可:lRMAN backup spfile format d:backup%U.BKP;6.2 RMAN恢复恢复lRMAN中的恢复对应两个操作:数据库修复(Restore
17、)和数据库恢复(Recover)。使用RMAN 进行数据库恢复时只能使用之前使用RMAN进行的备份,可以实现数据库的完全恢复,也可以实现数据库的不完全恢复。与用户管理的恢复类似,RMAN恢复也分两个步骤,首先使用RESTORE命令进行数据库的修复,然后使用RECOVER命令进行数据库的恢复。l数据库修复:是指利用备份集的数据文件来替换已经损坏的数据库文件或者将其恢复到一个新的位置。数据库恢复:是指应用所有重做日志,将数据库恢复到崩溃前的状态,或者应用部分REDO,将数据库恢复到指定的时间点。6.2.1 数据库进行完全介质恢复数据库进行完全介质恢复l如果数据库只剩下控制文件和参数文件,数据文件因
18、为丢失或损坏,如果创建过整库的备份,并且执行备份操作之后,所有的归档日志文件和重做日志文件都还在,这种情况下就可以将数据库恢复到崩溃前那一刻的状态,这种恢复方式,叫做完全介质恢复。l步骤1:启动数据库到加载状态:lSQL conn system/Oracle123 as sysdba;lSQL shutdown immediate;lSQL startup mount;l步骤2:执行恢复操作lc:rman target /lRMAN restore database;lRMAN recover database delete archivelog;ll启动 recover 于 07-5月 -1
19、5l使用通道 ORA_DISK_1l使用通道 ORA_DISK_2l正在开始介质的恢复l介质恢复完成, 用时: 00:00:01l执行RECOVER命令时,附加的delete archivelogs和skip tablespace两个参数是可选参数,其作用如下:lDELETE ARCHIVELOGS:表示RMAN将在完成恢复后自动删除那些在恢复过程中产生的归档日志文件。l步骤3:恢复完成后,打开数据库:lRMAN alter database open;6.2.2 表空间的恢复表空间的恢复l执行表空间的恢复时,数据库可以是MOUNT状态,也可以是OPEN状态。在执行恢复之前,如果被操作的表空间
20、未处于OFFLINE状态,必须首先通过ALTER TABLESPACE . OFFLINE语句将其置为脱机,操作步骤如下:lRMAN sql alter tablespace users offline immediate;lsql 语句: alter tablespace users offline immediatelRMAN restore tablespace users;lRMAN recover tablespace users;l启动 recover 于 07-5月 -15l使用通道 ORA_DISK_1l使用通道 ORA_DISK_2l正在开始介质的恢复l介质恢复完成, 用时:
21、 00:00:00l完成 recover 于 07-5月 -15lRMAN sql alter tablespace users online;lsql 语句: alter tablespace users online6.2.2 恢复数据文件恢复数据文件l行数据文件的恢复时,数据库可以是MOUNT状态,也可以是OPEN状态。在执行恢复之前,如果被操作的表空间未处于OFFLINE状态,必须首先通过ALTER DATABASE DATAFILE . OFFLINE语句将其置为脱机,操作步骤如下:lRMAN sql alter database datafile 4 offline;lRMAN r
22、estore datafile 4;lRMAN recover datafile 4;lRMAN sql alter database datafile 4 online;l如果由于磁盘损坏导致数据文件无法访问,那么恢复时数据文件可能无法再恢复到原路径,必须在执行restore命令之前,给数据文件指定新的路径,方式如下:lRMAN RUN l SET NEWNAME FOR DATAFILE 3 to f:oracleoradatanewdbsysaux01.dbf; l RESTORE DATAFILE 3; l SWITCH DATAFILE 3; l RECOVER DATAFILE 3
23、; l l执行上述操作前,先要将数据文件置为OFFLINE状态。6.2.3 恢复控制文件恢复控制文件l从自动备份中恢复l步骤一:建立测试环境(注:在正式的工作中不能进行该操作):l由于控制文件在Oracle数据库运行期间会被Oracle进程锁定,无法直接删除,因此这里还是按照前面模拟丢失数据文件的方式,首先SHUTDOWN数据库,然后再删除控制文件:lSQL conn system/Oracle123 as sysdba;lSQL SHUTDOWN IMMEDIATE;lSQL $compy E:appAdministratororadataorclCONTROL0*.* c:*.* lSQL
24、 $DEL E:appAdministratororadataorclCONTROL0*.* lSQL STARTUP NOMOUNT; l步骤二:恢复控制文件l新开一个窗口,连接到RMAN命令行:lC:UsersAdministratorset oracle_sid=orcllC:UsersAdministratorrman target /l恢复管理器: Release 11.2.0.1.0 - Production on 星期日 5月 10 20:54:55 2015lCopyright (c) 1982, 2009, Oracle and/or its affiliates. All
25、rights reserved.l步骤三:启动数据库l有了控制文件,就可以将数据库置为MOUNT状态了:lRMAN ALTER DATABASE MOUNT;l数据库已装载l释放的通道: ORA_DISK_1l由于只是控制文件丢失,数据文件仍在,因此并不需要对整个数据库进行修复操作,只需要执行RECOVER命令,重新应用备份的控制文件后生成的那些重做日志即可:lRMAN RECOVER DATABASE;l如果上述命令均正常执行,就可以打开数据库了:lRMAN alter database open resetlogs;l数据库已打开6.2.4利用利用RMAN进行不完全恢复进行不完全恢复l(1
26、)启动RMAN并连接目标数据库,如果使用恢复目录,还需要连接到恢复目录数据库。l(2)将数据库设置为加载状态。lRMANSHUTDOWN IMMEDIATE;lRMANSTARTUP MOUNT;l(3)利用SET UNTIL命令设置恢复终止标记,然后进行数据库的修复与恢复操作。l(4)完成恢复操作后,以RESETLOGS方式打开数据库。lRMANALTER DATABASE OPEN RESETLOGS;l基于时间的不完全恢复l基于时间恢复是指当出现用户错误(例如误删除表、误截断表)时,恢复到指定时间点的恢复。执行rman,启动数据库到mount状态。使用set until time命令指定
27、要恢复到的时间点。lRMANRUNlset until time=2015-05-10 21:01:00; lrestore database; lrecover database; lsql alter database open resetlogs; ll基于SCN的不完全恢复l执行rman,启动数据库到mount状态。使用set until scn命令指定要恢复到的scn点。可以通过SQLselect current_scn from v$database来查询当前的SCN。l以下为基于日志序列号的不完全恢复例子。lRMANRUNlset until scn=1214281; lrest
28、oredatabase;lrecoverdatabase;lsql alter database open resetlogs; ll基于日志序列号的不完全恢复l基于日志序列号恢复是指恢复数据库到指定日志序列号的状态。l可以通过下的语句来查询当前的日志序列号。lsqlarchive log listl以下为基于日志序列号的不完全恢复例子。lRMANRUNlstartup force mount; lset until sequence=3; lrestore database; lrecover database; lsql alter database open resetlogs; 6.2
29、.5 RMAN恢复示例恢复示例l联机备份的步骤如下:l步骤1:建立测试表,并向表里添加一条记录。lSQL conn system/Oracle123;lSQL create table test(a int) tablespace users;lSQL insert into test values(1);lSQL commit;l步骤2:在备份之前做一次日次切换。lSQL alter system archive log current;l步骤3:将数据库进行整库的备份。lRMANBACKUP DATABASE; l步骤4:再向测试表中添加一条记录,再做一次日志切换。lSQL insert
30、into test values(2);lSQL commit;lSQL alter system switch logfile;l步骤5:关闭数据库,模拟丢失数据文件lSQL conn system/Oracle123 as sysdba;lSQL shutdown immediate;lSQL $del E:appAdministratororadataorclUSERS01.DBFl步骤6:启动数据库。lSQL startuplORACLE 例程已经启动。lTotal System Global Area 1071333376 byteslFixed Size 1375792 byteslVariable Size 562037200 byteslDatabase Buffers 503316480 byteslRedo Buffers 4603904 bytesl数据库装载完毕。l步骤7:查询有问题的数据文件。lSQL select * from v$recover_file;l FILE# ONLINE ERROR CHANGE# TIMEl- - - - -l 4 ONLINE 1013500 2003-05-07