RMAN恢复操作手册

一、准备事宜

①需要拷贝归档日志与rman备份数据,最好放置位置与服务器位置一致(归档备份当天的归档)

②数据库版本与实例名要跟正式库保持一致

③数据参数修改(alter system set o7_dictionary_accessibility=true scope=spfile;

alter system set sec_case_sensitive_logon=false;

shutdown immediate;

④断网状态且删除正式库环境连接配置

二、恢复操作

1、cmd窗口执行:

SET ORACLE_SID=EMR  

sqlplus sys/aqa as sysdba

alter system set o7_dictionary_accessibility=true scope=spfile;

alter system set sec_case_sensitive_logon=false;

shutdown immediate;

startup nomount;

<4>恢复控制文件(新开dos命令窗)多个服务时需设置SET ORACLE_SID=ZLEMR  (注:Oracle_sid需大写)

C:>rman target 用户名/密码

RMAN> restore controlfile from 'F:\csemr\db\CTL_EMR_966777048_4886';(注:备份文件保存的绝对路径,正常为:finised)

<5>调整数据库至MOUNT状态

RMAN> alter database mount;

<6>加载备份集

RMAN> catalog start with 'F:\csemr\db\';(数据文件目录)

<7>PLSQL 登录测试库查找恢复数据文件的路径(注:注意修改路径与截取字符的路径)

select 'set newname for datafile '||file#||' to '||''''||'E:\app\Administrator\oradata\emr\'||substr(name,14)||''''||';' from v$datafile

union all

select 'set newname for tempfile '||file#||' to '||''''||'E:\app\Administrator\oradata\emr\'||substr(name,14)||''''||';' from v$tempfile;

 

<8>恢复数据文件

run

{

allocate channel t1 type disk;

allocate channel t2 type disk;set newname for datafile 1 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF';

set newname for datafile 2 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF';

set newname for datafile 3 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF';

set newname for datafile 4 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF';

set newname for datafile 5 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZLTOOLSTBS.DBF';

set newname for datafile 6 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9BASEITEM.DBF';

set newname for datafile 7 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9PATIENT.DBF';

set newname for datafile 8 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9EXPENSE.DBF';

set newname for datafile 9 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9MEDLST.DBF';

set newname for datafile 10 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9DUEREC.DBF';

set newname for datafile 11 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9CISREC.DBF';

set newname for datafile 12 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9EPRLOB.DBF';

set newname for datafile 13 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9EPRDAT.DBF';

set newname for datafile 14 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9CISAUDIT.DBF';

set newname for datafile 15 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9INDEXHIS.DBF';

set newname for datafile 16 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9INDEXCIS.DBF';

set newname for datafile 17 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZLBAK2007.DBF';

set newname for datafile 18 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZLBAK2011.DBF';

set newname for datafile 19 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9PEISDATA.DBF';

set newname for datafile 20 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9DEVBASE.DBF';

set newname for datafile 21 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9DEVREC.DBF';

set newname for datafile 22 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9DEVUSE.DBF';

set newname for datafile 23 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9INDEXDEV.DBF';

set newname for datafile 24 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9MTLBASE.DBF';

set newname for datafile 25 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9MTLREC.DBF';

set newname for datafile 26 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9INDEXMTL.DBF';

set newname for datafile 27 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9MEDBASE.DBF';

set newname for datafile 28 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9MEDREC.DBF';

set newname for datafile 29 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9MEDDAY.DBF';

set newname for datafile 30 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9INDEXMDR.DBF';

set newname for datafile 31 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF';

set newname for datafile 32 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9I_CDEB.DBF';

set newname for datafile 33 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZLPACSBASETAB.DBF';

set newname for datafile 34 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZLPACSBASEINDEX.DBF';

set newname for datafile 35 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZLPACSBIZTAB.DBF';

set newname for datafile 36 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZLPACSBIZINDEX.DBF';

set newname for datafile 37 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZLPACSBIZXML.DBF';

set newname for datafile 38 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9CISREC01.DBF';

set newname for datafile 39 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9INDEXCIS01.DBF';

set newname for datafile 40 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZL9PATIENT01.DBF';

set newname for tempfile 1 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF';

set newname for tempfile 2 to 'D:\oracle\PRODUCT\10.2.0\ORADATA\ORCL\ZLTOOLSTMP.DBF';

restore database;

switch datafile all;

switch tempfile all;

release channel t1;

release channel t2;

}

------****查看恢复进度:恢复时间比较长,具体可以使用plsql工具查看:-----------

 select sid,

       serial#,

       context,

       sofar as 已恢复大小,

       totalwork as 总需恢复大小,

       round(sofar / totalwork * 100, 2) as 完成比例,

       (last_update_time - start_time) * 24 * 60 as 已花费分钟数,

       time_remaining / 60 as 预计还需分钟数,

       time_remaining / 60/60 as 预计还需小时数

  from v$session_longops

 where opname like 'RMAN:%'

   and opname not like 'RMAN:aggregate%'

   and totalwork != 0;

 

注意:连接plsql工具时数据库的选择

--------------**********-----------------------------

 

<9>测试库上:根据归档恢复到当前的数据

①plsql查询重建redo的语句

select 'alter database rename file ' || '''' || member || '''' || ' to ' || '''' ||

       'E:\app\Administrator\oradata\emr' || substr(member, 14) || '''' || ';'

  from v$logfile;

②重建redo(sqlplus 中)

sql>alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\REDO03.LOG' to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG';

alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\REDO02.LOG' to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG';

alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\REDO01.LOG' to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG';

 

<10>恢复归档文件

rman>catalog start with 'D:\log\' (归档所在目录)

rman>recover database;---在这里会报错的话先查询下结果是否一致:

PLSQL>  

select distinct(checkpoint_change#)  from v$datafile

union all

select distinct(checkpoint_change#)  from v$datafile_header

---如果值一致:那么进行cancel

PLSQL>

recover   using backup controlfile until cancel;

-->cancel

 

 

<11>打开数据库,sqplus中--------190322------

SQL> alter database open resetlogs;

sql>shutdown immediate;

 

 

《12》关闭归档日志

cmd>shutdown immediate;

cmd>startup mount;

cmd>show parameter db_recovery_file_dest_size;(空间已满时操作)

cmd>alter system set db_recovery_file_dest_size=1G;(空间已满时操作)

cmd>alter  database noarchivelog;

cmd>alter database open;

 

 

三、常见问题处理

1、启动监听服务提示终止-->使用hostname作为数据库的host

2、SQL> rman target sys/aqa@orcl

SP2-0734: 未知的命令开头 "rman targe..." - 忽略了剩余的行。

---->set Oracle_sid=orcl

3、plsql 登录时连接超时

-->监听配置问题

4、sqlplus登录时提示协议适配器错误

-->set ORACLE_SID=orcl    (此设置只管当前命令窗口)

5、RMAN> catalog start with 'L:\rmanback\archivelog\';

搜索与样式 L:\rmanback\archivelog\ 匹配的所有文件

未找到数据库未知的文件

-->之前已经加载过了,跳过

6、cancel 的时候如果提示错误

-->直接alter database open resetlogs;如果成功就忽略。

7、RMAN> catalog start with 'F:\cndata\rmanback\archivelog\';

搜索与样式 F:\cndata\rmanback\archivelog\ 匹配的所有文件

未找到数据库未知的文件

--->重命名日志文件夹

8、ORA-01507: ??????

-->关闭重启数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂狼的小蝴蝶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值