设为首页 收藏本站
查看: 1066|回复: 0

[经验分享] oracle rman备份命令-备份恢复

[复制链接]

尚未签到

发表于 2016-7-21 11:30:14 | 显示全部楼层 |阅读模式
  RMAN简单使用

目标机A:

create tablespace RMAN datafile '$ORACLE_HOME/oradata/FILENAME.DBF' size 20M;

RMAN简单使用

目标机A:

create tablespace RMAN datafile '$ORACLE_HOME/oradata/FILENAME.DBF' size 20M;

create username RMAN identified by RMAN default tablespace rman temporary tablespace temp quota unlimited on RMAN; feedom.net

grant recovery_catalog_owner to rman ; 54ne.com

rman catalog rman/rman

create catalog tablespace 'RMAN'; 54ne.com

Rman主机B:

rman target /

connect catalog rman/rman@$A_SID

注册数据库

register database; feedom.net

注销数据库

sqlplus rman/rman

select * from db;

EXECUTE dbms_rcvcat.unregisterdatabase(db_key, db_id);

54com.cn

///////////非归档模式使用RMAN备份///////////////////////

备份目标数据库:

rman target /

connect catalog rman/rman@$A_SID

定义通道

allocate channel c1 type disk;

撤消通道

release channel c1;

备份整个数据库

run {

allocate channel c1 type disk;

backup full tag full_db_backup

format '/export/home/oracle/oradata/bak_db/db_%d' database

include current controlfile;

release channel c1;

}

54com.cn

备份表空间

run {

allocate channel d1 type disk;

backup tag tbs_users_read_only

format '/export/home/oracle/oradata/bak_tab/block_t%t_s%s' (tablespace "BLOCK");

release channel c1;

}

run {

allocate channel d1 type disk;

backup tablespace "BLOCK" filesperset 3 format '/export/home/oracle/oradata/bak_tab/aatst_%d%t%s.%p'

include current controlfile;

release channel c1;

}

备份单独数据文件

run {

allocate channel c1 type disk;

backup format '/export/home/oracle/oradata/bak_tab/%d_%u'

(datafile '/export/home/oracle/oradata/ECOM/block01.dbf');

release channel c1;

}

复制目标数据库数据文件:

run {

allocate channel c1 type disk;

copy datafile '/export/home/oracle/oradata/ECOM/block02.dbf' to '/export/home/oracle/oradata/bak_tab/block02.dbf' tag=u1215;

release channel c1;

}

备份控制文件:

run {

allocate channel c1 type disk;

backup format '/export/home/oracle/oradata/bak_cont/cf_t%t_s%s_p%p'

tag cf_monday_night (current controlfile);

release channel c1;

}

run {

allocate channel d1 type disk;

backup current controlfile format '/export/home/oracle/oradata/bak_tab/%d%t%s.ctl';

}

run {

allocate channel d1 type disk;

copy current controlfile to '/export/home/oracle/oradata/bak_tab/%d%t%s.ctl';

} 54com.cn

/////////////////////归档模式使用RMAN备份//////////////////////

归档日志备份:

run {

allocate channel c1 type disk;

backup format '/export/home/oracle/oradata/bak_log/log_t%t_s%s_p%p'

(archivelog all);

release channel c1;

}

下面的脚本归档日志从# 90 to 100:

run {

allocate channel c1 typye disk;

backup format '/export/home/oracle/oradata/bak_log/log_t%t_s%s_p%p'

(archivelog from logseq=90 until logseq=100 thread 1);

release channel c1;

}

下面的脚本备份在24小时内产生的归档日志,在备份完成后会自动删除归档日志。如果备份失败,归档日志不会被删除。

run {

allocate channel c1 type disk;

backup format '/export/home/oracle/oradata/bak_log/log_t%t_s%s_p%p'

(archivelog from time 'sysdate-1' all delete input);

release channel c1;

}



run {

allocate channel c1 type disk;

backup archivelog low logseq 1143 high logseq 1147 thread 1 format 'aaarc%t.%s';

}



使用下面的命令显示恢复目录中的归档日志

list backupset of archivelog all; 54ne.com

备份联机日志

run {

allocate channel c1 type disk;

sql "alter system archive log current";

backup format '/export/home/oracle/oradata/bak_log/onlog_t%t_s%s_p%p'

(archivelog from time 'sysdate-1' all delete input);

release channel c1;

}



备份spfile

run {

allocate channel c1 type disk;

backup spfile tag 'ECOM_spfile' format '/export/home/oracle/oradata/bak_conf/spfile_%t.ora';

release channel c1;

}

清除联机日志备份

delete copy;



/* 如果物理文件被删除,用CROSSCHECK修复 */

crosscheck archivelog all;

delete noprompt obsolete;



列出对应物

list incarnation; 54ne.com

概述可用的备份

list backup summary;



按备份类型列出备份

list backup by file;


列出详细备份

list backup;

列出过期备份

list expired backup;

54ne.com

列出表空间和数据文件备份

list backup of tablespace ;

list backup of datafile;



列出归档日志备份

list archivelog all;

list backup of archivelog all; 54ne.com

列出控制文件和服务器参数文件

list backup of controfile;

list backup of spfile; feedom.net

检查备份

crosscheck backup;

crosscheck backup of database;

crosscheck backup of tablespace system;

crosscheck backup of controlfile;

crosscheck backup of spfile;

删除备份

allocate channel for delete type disk;

change backupset BS Key delete;

delete obsolete; 删除陈旧备份

delete expired backup;

delete backupset id;

delete backup; -- 删除所有备份

feedom.net

改变备份集的状态

change backupset id unavailable; -- available

改为长期备份

change backupset id keep forever logs;

change backupset id keep until time 'sysdate+60' logs;

change backupset id nokeep;



报告丢弃的备份

report obsolete;

删除丢弃状态的备份

delete obsolete;

RMAN的crosscheck 命令

  1 备份集有两种状态A(Available,RMAN认为该项存在于备份介质上)X(Expired,备份存在于控制文件或恢复目录中,但是并没有物理存在于备份介质上)

  2 crosscheck 的目的是检查RMAN 的目录以及物理文件,如果物理文件不存在于介质上,将标记为Expired。如果物理文件存在,将维持Available。如果原先标记为Expired 的备份集再次存在于备份介质上(如恢复了损坏的磁盘驱动器后),crosscheck将把状态重新从Expired标记回Available。

  3 crosscheck 输出分两部分。第一部分列出确定存在于备份介质上的所有备份集片,第二部分列出不存在于备份介质上的备份集片,并将其标记为Expired。当设置备份保存策略后,一个备份过期,crosscheck之后标记为丢弃的备份状态依旧为availabel,要删除丢弃备份delete obsolete。

  4 示例:

   crosscheck backup

   crosscheck backup of datafile 1;

   crosscheck backup of tablespace users;

   crosscheck backup of controfile;

   crosscheck backup of controlfile;

   crosscheck backup tag='SAT_BACKUP';

   crosscheck backup completed after 'sysdate - 2'

   crosscheck backup completed between 'sysdate - 5' and 'sysdate -2 '

   crosscheck backup device type sbt;

   crosscheck archivelog all;

   crosscheck archivelog like '%ARC00012.001'

   crosscheck archivelog from sequence 12;

   crosscheck archivelog until sequence 522; 54com.cn

概述可用的备份

list backup summary;

得到了备份集得主键ID如40

validate backupset 40;



命令删除备份集

change backupset ID1,ID2,ID3 delete;

change backuppiece ID1 delete;

change archivelog until logseq=ID1 delete;



要查看标记为丢弃的备份

report obsolete;

只有使用

delete obsolete才真正物理删除。

手工同步恢复目录

resync catalog;



--查看RMAN的信息

list backup

--列出过期备份

report obsolete;

--删除过期的备份

allocate channel for maintenance type disk;

--allocate channel for delete type disk;

change datafilecopy 44 delete;

release channel;

--如果目标数据库物理对象发生了变化,如添加了一个数据文件,需要用如下命令同步

resync catalog;

--如果目标数据库reset了数据库,需要用如下命令同步

reset database;

--当手工删除了数据库的归档文件后,要执行以下脚本同步

allocate channel for maintenance type disk;

--allocate channel for delete type disk;

change archivelog all crosscheck;

release channel;

--当手工删除了数据库的RMAN备份后,要执行以下脚本来同步

allocate channel for maintenance type disk;

crosscheck backup;

delete expire backup;

release channel;

feedom.net

/////////////////增量备份//////////////

Level 0 是增量备份策略的基础

run {

allocate channel c1 type disk;

backup incremental level 0 filesperset 4 format '/export/home/oracle/oradata/bak_db/sunday_level0_%t'

(database);

release channel c1;

}

==================Recovery 恢复==================

0.恢复控制文件(以前必须有过控制文件的备份)

startup nomount

rman target/

connect catalog rman/rman

(数据库在nomount的时候才能set DBID)

set DBID=3287725908

1.Datafile recovery 数据文件恢复

run {

allocate channel c1 type disk;

sql "alter tablespace TB_name offline immediate";

restore datafile 4;

recover datafile 4;

sql "alter tablespace TB_name online";

release channel c1;

}



2.Tablespace recovery 表空间恢复

run {

allocate channel c1 type disk;

sql "alter tablespace TB_name offline immediate";

restore tablespace TB_name;

recover tablespace TB_name;

sql "alter tablespace TB_name online";

release channel c1;

}



如果还原系统表空间文件,数据库必须关闭,因为系统表空间不可以脱机

54com.cn

=======完全还原(丢失联机日志)并且前滚 - 数据库关闭=======

run {

allocate channel c1 type disk;

set until logseq=105 thread=1;

restore controlfile to '/export/home/oracle/oradata/ECOM/control01.ctl'

replicate controlfile from '/export/home/oracle/oradata/bak_cont/ctrltargdb.ctl' ;

restore database;

sql "alter database mount";

recover database;

sql "alter database open resetlogs";

release channel c1;

}

'set until' 命令指明恢复到指定的日志文件。这一点在数据文件恢复时很重要,否则RMAN将试图恢复最近的数据文件,该数据文件可能在指定的日志以前。

'replicate controlfile' 复制还原的控制文件到INIT.ORA指定的控制文件。

如果数据库使用WITH RESETLOGS打开,则需要使用RESET DATABASE命令注册改变后的数据库。在使用RESETLOGS命令打开数据库后强烈建议做一个完全的数据库备份。

还原数据文件的子集,完全恢复

run {

allocate channel c1 type disk;

sql "alter database mount";

restore datafile 2;

restore datafile 3;

restore archivelog all;

recover database;

sql "alter database open";

release channel c1;

}

54ne.com

恢复表空间

startup mount

rman target /

run { allocate channel c1 type disk ; restore tablespace 'TB_NAME';recover tablespace 'TB_NAME';}

或者

run { allocate channel c1 type disk ; restore database ;recover database ;}

sqlplus /nolog

alter database open;

脚本

create script alloc_disk {

Allocates one disk

allocate channel c1 type disk;

setlimit channel c1 kbytes 2097150 maxopenfiles 32 readrate 200;

}

replace script rel_disk {

releases disk

release channel c1;

}



replace script backup_db_full {

execute script alloc_disk;

backup

.....<backup commands here>

execute script rel_disk;

}

前两个脚本分别用来分配和回收通道。

alloc_disk 脚本还额外指定了备份片的最大兆字节数,备份时可以同时打开的输入文件的最大数目,以及每秒钟读每个输入文件的数据缓冲区的最大数目。

第三个脚本调用先前存储的两个脚本进行数据库备份。

运行存储脚本的示范:

run {

execute script backup_db_full;

} 54ne.com

查看备份及复制的信息

list backup;

list copy;



在备份是设置相关参数

format --文件输出格式,

%d--database name, (SID)

%t--tablespace name,

%s--backup sets sequence number,

%p--backup pieces sequence number

脚本

create script alloc_disk {

Allocates one disk

allocate channel c1 type disk;

setlimit channel c1 kbytes 2097150 maxopenfiles 32 readrate 200;

}

54com.cn

replace script rel_disk {

releases disk

release channel c1;

}

replace script backup_db_full {

execute script alloc_disk;

backup

.....<backup commands here>

execute script rel_disk;

}

前两个脚本分别用来分配和回收通道。

alloc_disk 脚本还额外指定了备份片的最大兆字节数,备份时可以同时打开的输入文件的最大数目,以及每秒钟读每个输入文件的数据缓冲区的最大数目。

第三个脚本调用先前存储的两个脚本进行数据库备份。

运行存储脚本的示范:

run {

execute script backup_db_full;

}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-247357-1-1.html 上篇帖子: ORACLE SQL语句优化技术分析[转载] 下篇帖子: Oracle远程复制表到本地
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表