oracle rman介质恢复数据库到历史上的某个时间点(不完全恢复的一种)

目录

一、准备需要恢复的数据

二、在B机上恢复

三、补充


一、准备需要恢复的数据

巧妇难为无米之炊,没有恢复的数据可不行。

根据你的备份策略备份的文件来获取需要的备份的控制文件、备份的数据文件及备份的归档日志文件。
如果是要恢复到当天,但当天还未备份,需要直接拷贝A机当天的归档日志和redo日志)
准备好用于恢复数据库的B机服务器

恢复思路就是根据备份的控制文件、数据文件、归档文件。A库现有的redo日志文件进行数据库恢复。

切记:需要的恢复数据一定要准备完整,且拷贝到B机(恢复服务器)的恢复目录(我一般使用备份集的目录)才进行恢复操作,否则后续会遇到很多报错的麻烦。备份文件一定是在恢复点之前完成的备份。

在B机上执行:1、2、3步

1. show parameter DB_RECOVERY_FILE_DEST; --查看快闪恢复区,找到备份集目录
我的快闪恢复区显示在:/opt/oracle/oradata2/flash_recovery_area 目录
备份集目录在快闪目录下的:/opt/oracle/oradata2/flash_recovery_area/ORCL/backupset 目录

2. 将备份好的恢复文件全部复制到 /opt/oracle/oradata2/flash_recovery_area/ORCL/backupset 目录下(注意用户权限问题)

3. 解压备份策略备份的文件(未压缩请忽略此步):tar -zxvf 20220421data.tar.gz 

二、在B机上恢复

SQL> shutdown immediate

SQL> startup nomount

--备份B机上redo日志
mv /opt/oracle/oradata/orcl/redo01.log /opt/oracle/oradata/orcl/redo01.log.bak
mv /opt/oracle/oradata/orcl/redo02.log /opt/oracle/oradata/orcl/redo02.log.bak
mv /opt/oracle/oradata/orcl/redo03.log /opt/oracle/oradata/orcl/redo03.log.bak

--从A机拷贝当天的归档日志和redo日志到B机(恢复当天的需要拷贝、恢复其它天的可以省略)(当天增量数据)
192.168.0.x为A机
scp -r oracle@192.168.0.x:/opt/oracle/flash_recovery_area/ORCL/archivelog/2022_04_21 /opt/oracle/oradata2/flash_recovery_area/ORCL/backupset/
scp -r oracle@192.168.0.x:/opt/oracle/oradata/orcl/redo01.log /opt/oracle/oradata/orcl/
scp -r oracle@192.168.0.x:/opt/oracle/oradata/orcl/redo02.log /opt/oracle/oradata/orcl/
scp -r oracle@192.168.0.x:/opt/oracle/oradata/orcl/redo03.log /opt/oracle/oradata/orcl/

--进入rman环境,然后exit;退出进行登录
[oracle@localhost ~]$ rman

--登录rman
[oracle@localhost ~]$ rman target /

RMAN> set DBID=1535108156

--恢复控制文件,必须是到恢复时间点之后的控制文件,不然recover时可能找不到SCN记录
RMAN> restore controlfile from "/opt/oracle/oradata2/flash_recovery_area/ORCL/backupset/control_20220421_1102551008_6842"; 

RMAN> alter database mount;

--执行代码块,更改数据文件路径,还原数据库
RMAN> run {
set newname for datafile '/opt/oracle/oradata/orcl/gytestds.dbf' to '/opt/oracle/oradata2/gytestds.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/gytestds02.dbf' to '/opt/oracle/oradata2/gytestds02.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/gytestds01.dbf' to '/opt/oracle/oradata2/gytestds01.dbf';
set newname for datafile '/opt/oracle/102/dbs/omng01.dbf' to '/opt/oracle/oradata2/omng01.dbf';
set newname for datafile '/opt/oracle/102/dbs/omng.dbf' to '/opt/oracle/oradata2/omng.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/sysaux01.dbf' to '/opt/oracle/oradata2/sysaux01.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/system01.dbf' to '/opt/oracle/oradata2/system01.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/undotbs01.dbf' to '/opt/oracle/oradata2/undotbs01.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/users01.dbf' to '/opt/oracle/oradata2/users01.dbf';
restore database;
switch datafile all;
}

--恢复数据到某个时间点
RMAN> recover database until time "to_date('2022-04-21 09:10:00','yyyy-mm-dd hh24:mi:ss')";

RMAN> alter database open resetlogs;

三、补充

--指定存放恢复文件的备份集路径
catalog start with '/opt/oracle/oradata2/flash_recovery_area/ORCL/backupset/';

RMAN> restore database preview;
1、查看恢复整个数据库所需要的备份文件是否存在

RMAN> restore database validate;
1、检查用于恢复数据库的最新备份集,以确认这个备份是否完整
2、检查恢复所需要的数据文件副本和归档日志备份集,并确认他的完整性
3、validate对备份集进行全面验证,确定完整性

--验证控制文件和参数文件
RMAN> restore validate controlfile;
RMAN> restore validate spfile;

--根据原库查询出更改数据文件恢复路径的语句
select 'set newname for datafile '''||file_name||''' to ''/usr/date/oracle/102/data'||substr(file_name,instr(file_name,'/',-1))||''';' from dba_data_files
order by tablespace_name

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值