一、准备事宜
①需要拷贝归档日志与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: ??????
-->关闭重启数据库

5284

被折叠的 条评论
为什么被折叠?



