备份与恢复

RMAN备份与恢复

时间:2013-10-24 21:49:48  作者:www.solgle.com  来源:说歌社区  查看:3144  评论:0
内容摘要:nocatalog方式就是用control file作为catalog,每一次备份都要往控制文件里面写好多备份信息,控制文件里面会有越来越多的备份信息。若为catalog则必须要首先要创建目录备份数据库,建立恢复目录。当通过rman nocatalog方式备份Oracle,Or...

nocatalog方式就是用control file作为catalog,每一次备份都要往控制文件里面写好多备份信息,控制文件里面会有越来越多的备份信息。若为catalog则必须要首先要创建目录备份数据库,建立恢复目录。
当通过rman nocatalog方式备份Oracle,Oracle使用controlfile存放备份信息。因此,当使用rman nocatalog方式备份时,备份controlfile是非常重要的。
初始化参数control_file__record_keep_time设置备份信息保存时间,到规定时间就自动清除以前的备份信息:
SQL> alter sysem set control_file_record_keep_time=7 scope=spfile;
当使用rman nocatalog恢复时,数据库必须是处于“mount”状态的。而Oracle startup mount的前提条件是control必须存在。因此,你必须在恢复datafile之前先恢复controlfile。使用rman catalog方式时,可以startup nomount然后restore controlfile;但使用rman nocatalog时,必须先用文件方式恢复controlfile。

RMAN备份

归档模式,
alter system archvie log start;

//db_recovery_file_dest 备份目录
//Unix
alter system set db_recovery_file_dest='/u01/arch/flash_recovery_area' scope=both;
//Windows
alter syetem set db_recovery_file_dest='e\recover_file' scope=spfile;

//设置目录大小
alter system set db_recovery_file_dest_size=2G scope=spfile;

//查看备份目录选项
show parameter db_recover;

一:
//Dos纯环境下连接到目标数据库(不加分号";")
     rman target=system/root@orcl
二:
RMAN>conenct target system/root@orcl

--备份全库
//备份数据文件的同时备份控制文件
RMAN> backup database include current controlfile;
//设置标记(TAG) 标记文件名称中的部分文字
RMAN> backup database tag='MyBackup';

Archivelog 备份 ---------在nocatalog模式下----------
RMAN> backup database plus archivelog delete input;
delete input的意思在备份完成后,删除 archivelog文件,这个选项可要可不要,这个命令也可以用 backup incremental level=0(1,2...)来进行备份)
?? rman在nocatalog模式下,不能够对redo log file 进行备份 ??

//限制备份集大小  
RMAN> backup database maxsetsize=100M;

//增量的基础备份 
RMAN> backup incremental level 0 database;

//差异备份
RMAN> backup incremental level 1 database;

//方法一
备份控制文件同时备份SPFILE
RMAN>backup current controlfile; --手动
//修改rman配置参数,自动备份
RMAN>configure controlfile autobackup on;    //默认是off

//备份归档日志
RMAN>backup archivelog all;

//查看备份集和镜像
RMAN>list bakupset
RMAN>list copy
rman>report schema; (查看表空间及数据文件)
验证备份:
RMAN> validate backupset 3;

//备份镜像
RMAN>copy datafile 5 to '/u01/rmanbak/tbso1bak.dbf';(copy 5 对应的schme:perfstat.dbf)

--------------------------------------------------------------------
//改换文件路径
alter database rename file 'd:\archivelog\7_1_739151173.LOG' to 'e:\archivelog\7_1_739151173.LOG';

Rman 归档文件丢失导致不能备份的,在备份前先执行以下两条命令
crosscheck archivelog all;
delete expired archivelog all;


单命令: backup database;
批命令:
rman> run{
2> allocate channel cha1 type disk; --备份到磁盘
3> backup format '/u01/rmanbak/full_%t' tag full-backup database;
4> release channel cha1;
5>}

format参数属性:
%c:备份片的拷贝数(从1开始编号);
%d:数据库名称;
%D:位于该月中的天数(DD);
%M:位于该年中的月份(MM);
%F:一个基于DBID唯一的名称,这个格式的形式为c-xxx-YYYYMMDD-QQ,其中xxx位该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列;
%n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8;
%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集产生一个唯一的名称;
%p:表示备份集中的备份片的编号,从1开始编号;
%U:是%u_%p_%c的简写形式,利用它可以为每一个备份片段(既磁盘文件)生成一个唯一的名称,这是最常用的命名方式;
%t:备份集时间戳;
%T:年月日格式(YYYYMMDD);


RMAN 恢复

口令文件丢失(不属于rman备份的范畴),我们只需要用一个命令来重建这个文件就可以了:

SPFILE 丢失:
startup nomount;
set dbid 3988862108;
restore spfile from autobackup;
shutdown immediate;
set dbid 3988862108;
startup;
/
eg:
rman>restore spfile from autobackup;
执行该命令,如果没有找到的话,那可能是文件的路径发生错误.可以通过直接赋予它的文件
rman>restore spfile from '/u01/oracle/flash_recovery_area/ORA10G/autobackup/2008_12_09/o1_mf_s_673025706_4mw7xc79_.bkp
在dbs/目录下产生spfileora10g.ora文件。证明spfile 已经恢复好
rman> shutdown immediate;
rman> startup ;(如果该命令不能够启动数据库,那么需要set dbid 3988862108)


ControlFile 丢失:
startup nomount;
restore controlfile from autobackup;
alter database mount;
recover database;//没有该句会出错, redolog的scn记录在controlfile里面的,因为有了新的controlfile,且还需要resetlogs.
alter database open resetlogs;
/
注意:在做了alter database open resetlogs;会把online redelog file清空,数据文件丢失.所以这个时候要做一个全备份。


Redolog File 丢失(下面的这些语句一定要在sqlplus中执行,不是在rman中执行)
(sqlplus/nolog)
1.shutdown immediate;
2.startup mount;
3.recover database until cancel;(media recovery)
4.alter database resetlogs;


数据文件丢失(在rman中执行sql语句,在sql后面用双引号括起来):
RMAN>sql "alter database datafile 3 offline";
RMAN>restore datafile 3
RMAN>recover datafile 3
RMAN>sql "alter database datafile 3 online";


表空间丢失:
RMAN>sql "alter tablespace users offline";//如果文件不存在,则用 sql "alter tablespace users offline immeidate";
RMAN>restore tablespace users;
RMAN>recover tablespace users; //与online redolog file 信息一致
RMAN>sql "alter tablespace users online";


Nocatalog方式下完全恢复(数据库出现问题)
1.startup nomount;
2.restore controlfile from autobackup;
3.alter database mount;
4.restore database;
5.recover database;
6.alter database open resetlogs;
/
eg:
oracle ora10g> rm *;
oracle ora10g> ls;
oracle ora10g>  //数据文件,控制文件全部删除

oracle ora10g> rman target /; //因为controlfile丢失,不能够连接到rman
oracle ora10g> sqlplus /nolog;
oracle ora10g> connect / as sysdba;
oracle ora10g> shutdown abort;(不允许新的连接,不等待会话结束,不等待事务结束,不做检查点且没有关闭数据文件。启动时自动进行实例恢复)
oracle ora10g> rman target /

rman> startup nomount;
rman> restore controlfile from autabackup;
rman> alter database mount;
rman> restore database;
rman> recover database; //online redolog 不存在

SQL>recover database until cancel; //当redo log丢失,数据库在缺省的方式下,是不容许进行recover操作的,那么如何在这种情况下操作呢
SQL>create pfile from spfile;

vi /u01/product/10.20/dbs/initora10g.ora,在这个文件的最后一行添加
*.allow_resetlogs_corruption='TRUE'; //容许resetlog corruption

SQL>shutdown immediate;
SQL>startup pfile='/u01/product/10.20/dbs/initora10g.ora' mount;
SQL>alter database open resetlogs;


基于时间点的恢复:
rman> run{
rman>  set until time "to_date(07/01/02 15:00:00','mm/dd/yy hh24:mi:ss')";
rman>  restore database;
rman>  recover database;
rman>  alter database open resetlogs;
rman> }

ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
1.startup mount;
2.restore database until time "to_date('2009-7-19 13:19:00','YYYY-MM-DD HH24:MI:SS')";
3.recover database until time "to_date('2009-7-19 13:19:00','YYYY-MM-DD HH24:MI:SS')";
4.alter database open resetlogs;
如果有open resetlogs,都是不完整恢复.

 

基于SCN的恢复:
1.startup mount;
2.restore database until scn 10000;
3.recover database until scn 10000;
4.alter database open resetlogs;

基于日志序列的恢复:
1.startup mount;
2.restore database until SEQUENCE 100 thread 1; //100是日志序列
3.recover database until SEQUENCE 100 thread 1;
4.alter database open resetlogs;
日志序列查看命令:SQL>select * from v$log;其中有一个sequence字段.resetlogs就会把sequence 置为1

 

RMAN -------catalog模式下的备份与恢复------------


1.创建Catalog所需要的表空间(Unix系统)
SQL>create tablespace rman_ts datafile '/u01/oracle/oradata/ora10g/rmants.dbf'size 20M;


2.创建RMAN用户并授权
SQL>create user rman identified by rman default tablespace rman_ts quota unlimited on rman_ts;
SQL>grant recovery_catalog_owner to rman;(grant connect to rman)
/
查看角色所拥有的权限: select * from dba_sys_privs where grantee='RECOVERY_CATALOG_OWNER';
(RECOVER_CATALOG_OWNER,CONNECT,RESOURCE)


3.创建恢复目录
oracle>rman catalog rman/rman
RMAN>create catalog tablespace rman_ts;
exit rman
RMAN>connect target sys/root@orcl;
rman>connect catalog rman/root@orcl;
register database;(database是target database)

连接方式:
rman target sys/root@orcl catalog rman/root@orcl;


RECOVER DATABASE UNTIL CANCEL 和 RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE 区别


RECOVER DATABASE UNTIL CANCEL ==> DATAFILE HEADER SCN一定会小于CONTROLFILE的DATAFILE SCN 如果你有进行RESTORE DATAFILE,则该RESTORE的DATAFILE HEADER SCN一定会小于目前CONTROLFILE的DATAFILE SCN,此时会无法开启数据库,必须进行media recovery。 重做archive log直到该datafile header的SCN=current scn
RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE; ==> DATAFILE HEADER SCN一定会大于CONTROLFILE的DATAFILE SCN 如果只是某TABLE被DROP掉,没有破坏数据库整体数据结构,还可以用NCOMPLETE RECOVERY解决 如果是某个TABLESPACE OR DATAFILE被DROP掉,因为档案结构已经破坏,目前的CONTROL FILE内已经没有 该DATAFILE的信息,就算你只RESTORE DATAFILE然后进行INCOMPLETE RECOVERY也无法救回被DROP的DATA FILE。 只好RESOTRE 之前备份的CONTROL FILE(里头被DROP DATAFILE Metadata此时还存在),不过RESTOREC CONTROL FILE后 此时Oracle会发现CONTROL FILE内的SYSTEM SCN会小于目前的DATAFILE HEADER SCN,也不等于目前储存于LOG FILE内的SCN, 此时就必须使用RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE到DROP DATAFILE OR DROP TABLESPACE之前的SCN。

 

1.你的备份存储空间有限
2.通过网络备份而带宽有限
3.直接备份至磁带、CD,DVD介质而压缩不可用

你可以选择在备份命令里显示指定压缩选项:
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
--仅对1,5文件压缩备份
BACKUP AS COMPRESSED BACKUPSET DATAFILE 1,5;

也可以配置RMAN指定压缩选项:
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO COMPRESSED BACKUPSET;



标签:RMAN备份与恢复 

solgle.com 版权所有,欢迎分享!!!

相关文章
    相关评论
       Copyright © 2013-2020 solgle.com,All rights reserved.[solgle.com] 公安机关备案号:51010802000219
    Email:solgle@solgle.com; weixin:cd1008610000 ICP:蜀ICP备14011070号-1