首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

惯用的一些rman备份恢复命令

2013-02-25 
常用的一些rman备份恢复命令Oracle的官方文档中有rman命令的比较完整的说明,我们可以参考。下面是一些常用

常用的一些rman备份恢复命令
Oracle的官方文档中有rman命令的比较完整的说明,我们可以参考。下面是一些常用的命令的使用例子:Rman常用命令:一、RMAN设置1.显示RMAN默认配置Rman中可以利用show命令来显示当前的配置参数。例如,通过SHOW ALL显示当前所有的配置。RMAN> show all;RMAN 配置参数为:CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;CONFIGURE BACKUP OPTIMIZATION OFF; # defaultCONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP ON;CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/backup/%F';CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # defaultCONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE SNAPSHOT CONTROLFILE NAME TO 'F:\ORAHOME1\DATABASE\SNCFJSSWEB.ORA'; #defaultRMAN>注:配置项后面跟了# default的表示该项仍是初始配置,未被修改过。该命令使用也相当灵活,其后跟上不同的类型的配置参数,即可以显示不同类型的配置,如:SHOW CHANNEL;SHOW DEVICE TYPE;SHOW DEFAULT DEVICE TYPE;2.建立恢复目录:第一步,在目录数据库中创建恢复目录所用表空间:SQL> create tablespace rman_ts datafile 'd:\Oracle\oradata\rman\rman_ts.dbf' size 20M;第二步,在目录数据库中创建RMAN 用户并授权:SQL> create user rman identified by rman default tablespace rman_ts temporary tablespace temp quota unlimited on rman_ts;用户已创建。SQL> grant recovery_catalog_owner connect, resource to rman ;授权成功。第三步,在目录数据库中创建恢复目录C:\>rman catalog rman/rman恢复管理器:版本8.1.6.0.0 - ProductionRMAN-06008:连接到恢复目录数据库RMAN-06428:未安装恢复目录RMAN>create catalog tablespace rman_ts;RMAN-06431:恢复目录已创建2. 启动RMAN2.1.使用不带恢复目录的RMAN设置目标数据库的 Oracle_SID ,执行: oracle@myserve:~$ rman target / 2.2.使用带恢复目录的RMANoracle@myserve:~$ rman target / catalog rman/rman2.3.在恢复目录中注册数据库:RMAN> register database;.注销目标数据库为了能注销数据库,需要获得数据库的标识码(DB_ID)和数据库键值(DB_KEY)。其中连接目标数据库时将会获得DB_ID连接到目标数据库,查询db表:SQL> select * from db;DB_KEY DB_ID CURR_DBINC_KEY---------- ---------- --------------1 3021445076 2SQL> execute dbms_rcvcat.unregisterdatabase(1,3021445076);PL/SQL 过程已成功完成。3.使用rman备份数据库:在指定备份片的文件名时可以使用以下匹配符:%c:当生成多重备份时,用于指定备份片的副本号%d:用于指定数据库名%e:用于指定归档日志的序列号%p:用于指定在备份集内备份片的编号%s:用于指定备份集的编号%n:用于指定表空间的名称%f:用于指定绝对文件号为了防止建立备份集错误匹配符%s是必顺的;如果要建立多个备份片文件,则匹配符%p是必顺的;如果要建立多个备份片副本,则匹配符%c是必顺的.完全数据库备份集 backup database一至性备份:RMAN>shutdown immediateRMAN>startup mountRMAN>backup database format=’/opt/oracle/rmanbak/%d_%s.dbf’;RMAN>alter database open;RMAN>sql ‘alter system archive log current’非一至性备份(在open状态下):RMAN>backup database format=’/opt/oracle/rmanbak/%d_%s.dbf’;RMAN>sql ‘alter system archive log current’;免除表空间:RMAN>configure exclude for tablespace ts_name; //设定在备份数据库的时候排除ts_name;RMAN>backup database format=’/opt/oracle/rmanbak/%d_%s.dbf’;RMAN>sql ‘alter system archive log current’;查看数据库备份:RMAN>list backup of database;表空间备份集(只适用于archivelog):RMAN>backup tablespace ts_name format=’/opt/oracle/rmanbak/%n_%s.pdf’;查看表空间备份:RMAN>list backup of tablespace taplespace_name;数据文件备份集查询表空间对应的数据文件及其序号Select file_name,file_id,tablespace_name from dba_data_file;备份数据文件RMAN>backup datafile 5 format=’/opt/oracle/rmanbak/%n_%f_%s.dbf’;查看指定数据文件的备份RMAN>LIST BACKUP OF DATAFILE n;RMAN>LIST BACKUP OF DATAFILE '/opt/oracle/rmanbak/JWEB.ORA';控制文件备份集备份当前控制文件RMAN>backup current controlfile format=’/opt/oracle/rmanbak/%d_%s.ctl’在备份其它数据文件时,同时备份控制文件RMAN>backup datafile 5 format=’/opt/oracle/rmanbak/%n_%f_%s.dbf’2>include current controlfile;在备份时自动备份控制文件RMAN>configure controlfile autobackup on;如果要查看备份的控制文件,可以通过:RMAN>list backup of controlfile;备份spfileRMAN>backup spfile format=’/opt/oracle/rmanbak/%d_%s.par’;备份规档日志:备份全部的规档日志:RMAN>backup archivelog all2、在BACKUP过程中利用PLUS ARCHIVELOG参数备份,例如:RMAN>backup database plus archivelog则在备份数据库的同时自动对所有归档文件进行备份。这种方式与上种有什么区别呢,区别太明显了,BACKUP.....PLUS ARCHIVELOG命令在备份过程中会依次执行下列步骤:1>.运行ALTER SYSTEM ARCHIVE LOG CURRENT语句对当前redolog进行归档。2>.执行BACKUP ARCHIVELOG ALL命令备份所有已归档日志。3>.执行BACKUP命令对指定项进行备份。4>.再次运行ALTER SYSTEM ARCHIVE LOG CURRENT对当前redolog归档。5>.对新生成的尚未备份的归档文件进行备份。查看规档日志备份:RMAN>list backup of archivelog all;显示备份信息:视图:V$ARCHIVED_LOG:显示所有归档日志映像副本的信息SQL>col name format a45;SQL>select sequence#,first_change# from v$archived_log2 where status=’A’;V$BACKUP_DATAFILE:用于显示控制文件和数据文件的备份信息V$BACKUP_PIECE:SQL>select a.file#,b.handle,a.blocks*block_size byte2 from v$backup_datafile a,v$backup_piece b3 where a.set_stamp=b.set_stamp and a.status=’a’V$BACKUP_REDOLOG显示归档日志备份集的信息,每个规档日志备份集可以包含一个或多个归档日志。SQL>select distinct a.handle,b.sequence#,b.first_change#,b.blocks2 from v$backup_piece a,v$backup_redolog b3 where a.set_stamp=b.set_stamp and a.status=’a’V$BACKUP_CORRUPTION:显示在执行BACKUP命令时所检测到的损坏数据块信息。SQL>select file#,block#,blocks,marked_corrupt2 from v$backup_corruption;删除备份:1、删除陈旧备份当使用RMAN执行备份操作时,RMAN会根据备份冗余策略确定陈旧备份。 RMAN> delete obsolete;2、删除EXPIRED备份执行crosscheck命令核对备份集,那么会将该备份集标记为EXPIRED状态。为了删除相应的备份记录,可以执行delete expired backup命令。 RMAN> delete expired backup;3、删除EXPIRED副本RMAN> delete expired copy;4、删除特定备份集RMAN> delete backupset 19;5、删除特定备份片RMAN> delete backuppiece 'd:\backup\DEMO_19.bak';6、删除所有备份集RMAN> delete backup;7、删除特定映像副本RMAN> delete datafilecopy 'd:\backup\DEMO_19.bak';8、删除所有映像副本RMAN> delete copy;9、在备份后删除输入对象RMAN> delete archivelog all delete input;RMAN> delete backupset 22 format = ''d:\backup\%u.bak'' delete input;RMAN恢复RMAN完全恢复是指当数据文件出现介质失败时,使用RESTORE命令转储数据文件备份,并使用RECOVER命令将数据文件恢复到失败点的状态.RMAN不完全恢复: 是指当数据文件出现介质失败时,使用RESTORE命令转储数据文件备份,并使用RECOVER命令将数据库恢复到备份点与失败时刻的状态.恢复数据库V$RECOVER_FILE可以确定需要恢复的数据文件SQL>SELECT file#,error from v$recover_file;所有数据文件被误删除$rman target / catalog rman/rmanRMAN>STARTUP FORCE MOUNTRMAN>run{2>restore database;3>recover database;4>sql ‘alter database open’;5>}数据文件所在磁盘出现硬件故障磁盘故障数据文件将不能被转储到原位置,必顺将数据文件转储到其他磁盘RMAN>run{2>startup force mount;2>set newname for datafile 1 to ‘/opt/datafile/system01.pdf’;3> .4> //指定数据文件新位置5>set newname for datafile 6 to ‘/opt/datafile/sdl.pdf’6>restore database7>switch datafile all; //改变控制文件所记载的数据文件位置和名称8>recover database;9>sql ‘alter database open’10>}RMAN>report schema; //恢复后查看数据文件新位置恢复表空间数据文件示例:SYSTEM表空间的数据文件被删除RMAN>run{2>startup force mount;3>restore datafile 1;4>recover datafile 1;5>sql ‘alter database open’;}示例:在SYSTEM表空间数据文件所在磁盘出现故障RMAN>run{2>startup force mount3>set name for datafile 1 to ‘/opt/datafile/system01.dbf’ //设置表空间文件新位置4>restore datafile 1; //转储数据文件5>.switech datafile 1;6>recover datafile 1;7>sql ‘alter database open’;}在open状态下恢复关闭后损坏的数据文件示例:数据文件被误删除RMAN>run{2>startup force mount;3>sql ‘alter database datafile 4 offline’;//脱机损坏的数据文件4>sql ‘alter database open’;//打开数据库5>restore datafile 4;//转储数据文件6>recover datafile 4;//恢复数据文件7>sql ‘alter database datafile 4 online’;//联机恢复后的数据文件}示例2:数据文件所在磁盘出现损坏RMAN>run{2>startup force mount;3>sql ‘alter database datafile 4 offline’;//脱机损坏的数据文件4>sql ‘alter database open’;//打开数据库5>set newname for datafile 4 to ‘/opt/datafile/user01.pdf’;//指定恢复位置5>restore datafile 4;//转储数据文件6>recover datafile 4;//恢复数据文件7>sql ‘alter database datafile 4 online’;//联机恢复后的数据文件}恢复表空间:示例:表空间的数据文件被误删除RMAN>run{2>sql ‘alter tablespace users offline for recover’; //脱机表空间3>restore tablespace user;4>recover tablespace user;5>sql ‘alter tablespace users online’;}示例:表空间所在磁盘出现磁盘故障RMAN>run{2>sql ‘alter tablespace users offline for recover’; //脱机表空间3>set newname for datafile 4 to ‘/opt/datafile /user01.dbf’;4>restore tablespace user;5>switch datafile all;6>recover tablespace user;5>sql ‘alter tablespace users online’;}数据块介质恢复数据块错误会出现以下错误:SQL>SELECT * FROM SCOTT.CUSTOMERS;ORA-01578:ORACLE DATA BLOCK CORRUPTED (FILE #5,BLOCK #21)ORA-01110:data file 5 :‘/opt/oracle/oradata/mydb/sdl.dbf’RMAN>BLOCKRECOVER DEVICE TYPE DISK2>DATAFILE 5 BLOCK 21,48,128;不完全恢复基于时间恢复:$export nls_date_format=’yyyy-mm-dd hh24:mi:ss’ //指定日期格式RMAN>run{2>startup force mount; //挂载数据库3>set until time=’2007-7-26 20:49:00’; //恢复时间点4>restore database; //转储数据文件5>recover database; //根据时间点恢复数据库6>sql ‘alter database open resetlogs’;//打开数据库重建redolog文件7>}基于SCN确定恢复的SCNSQL>SELECT CURRENT_SCN FROM V$DATABASE;RMAN>run{2>startup force mount;3>set until scn=n; //设置还原点SCN4>restore database;5>recover database;6>sql ‘alter database open resetlogs’;7>}基于日志号:当不能定位日志号的归档日志时会出现以下错误:Rman-06025:no backup of log thread 1 seq 6 lowscn 531976 found to restoreRMAN>run{2>startup force mount;3>set until sequence=n; //日志号通常为不能定位的日志号4>restore database;5>recover database;6>sql ‘alter database open resetlogs’;7>}基于备份控制文件:当误删的表空间或者数据库有的控制文件损坏时可以使用这种方法$set nls_date_format=’yyyy-mm-dd hh24:mi:ss’;$rman target / catalog rman/rmanRMAN>startup force nomountRMAN>set dbid=3286265633;RMAN>restore controlfile from autobackup maxseq 6;RMAN>alter database mount;RMAN>run {2>set until time=’2007-7-26 21:07:00’3>restore database;4>recover database;5>sql ‘alter database open resetlogs’;6>}不完全恢复后建议删除早期的所有备份并重新备份RMAN>run{2>delete noprompt backup;3>delete noprompt copy;4>backup database format=’/opt/ora_bak/%d_%s.pdf’;5>sql ‘alter system archive log current’;}

?

热点排行