Oracle Rman备份及异机恢复

环境:oracle11g  需要os相同,数据库版本相同,实例名相同,备份路径相同,文件路径相同,如果可以,将目标库的参数文件,控制文件,数据文件,闪回区清空

1.oracle rman备份,该方法单独压缩备份了数据库,归档日志,控制文件,参数文件,清理超期备份集,检查并清理已经注册实际并不存在的备份

复制代码
run {
allocate channel ch1  type disk;
allocate channel ch2  type disk;
sql 'alter system archive log current';
backup as compressed backupset database format '/u01/app/oracle/rmanbak/full_%d_%T_%s_%p.bak';
sql 'alter system archive log current';
backup as compressed backupset archivelog all format '/u01/app/oracle/rmanbak/%d_arc_%T_%U';
backup current controlfile format '/u01/app/oracle/rmanbak/%d_control_%T_%U';
backup spfile format '/u01/app/oracle/rmanbak/%d.%s.%p.%T.SPFILE';
crosscheck backup;
delete noprompt expired backup;
release channel ch1;
release channel ch2;
}
复制代码

2.通过scp将/u01/app/oracle/rmanbak下的文件拷贝到目标机器

3.在目标机器上登入rman

复制代码
rman target /
#挂载到nomount'阶段
startup nomount
#恢复参数文件
restore spfile from 'spfile具体路径文件'
#登入sqlplus
sqlplus / as sysdba
#根据spfile 创建pfile
create pfile from spfile
#清空闪回区的路径信息
vi $ORACLE_HOME/dbs/initorcl.ora
#把控制文件路径中在闪回区路径的信息删除
#关闭数据库
shutdown immediate;
#创建动态参数文件
create spfile from pfile='$ORACLE_HOME/dbs/initorcl.ora';
#启动到nomount阶段
startup nomount
复制代码

4.还原控制文件

复制代码
rman target /
#还原控制文件
restore controlfile from '控制文件所在具体路径';
#更改数据库到mount阶段
alter database mount;
#检查并标记控制文件中存在,但是实际已经不存在的备份文件
crosscheck backup
#清理控制文件中存在,但是实际已经不存在的备份文件
delete noprompt expired backup;
复制代码

5.将备份注册到catalog

catalog backuppiece '控制文件路径'

6.确定要恢复的seq号

list backup of archivelog all;

7.根据第6步确定的seq号,一般用最大的

复制代码
run {

set until sequence seq号 thread 1;                                                                                                     

restore database;

switch datafile all;

recover database;

}
复制代码

8.打开数据库

alter database open resetlogs;

 

posted @   BlackData  阅读(974)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示