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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示