ORACLE不完全恢复的几种情况

1、介绍

RMAN不完全恢复的三个标准模式:基于time、基于scn和基于sequence,与手工不完全恢复相比原理类似,语法稍有不同:

2、不完全恢复的几种情况

#### 1)不完全恢复用于最小化测试备份
####①备份一部分数据文件

RMAN> backup datafile 1,2 format '/u01/rman_bak/%s.bak';

RMAN> backup datafile 1,2 format '/u01/rman_bak/%s.bak';

启动 backup 于 2018-04-22 16:14:25
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00001 名称=/u01/app/oracle/oradata/vbox66db/system01.dbf
输入数据文件: 文件号=00002 名称=/u01/app/oracle/oradata/vbox66db/sysaux01.dbf
通道 ORA_DISK_1: 正在启动段 1 于 2018-04-22 16:14:25
通道 ORA_DISK_1: 已完成段 1 于 2018-04-22 16:16:00
段句柄=/u01/rman_bak/3.bak 标记=TAG20180422T161425 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:35
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 2018-04-22 16:16:07
通道 ORA_DISK_1: 已完成段 1 于 2018-04-22 16:16:11
段句柄=/u01/rman_bak/4.bak 标记=TAG20180422T161425 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04
完成 backup 于 2018-04-22 16:16:11

SQL> create table scott.emp1 as select * from scott.emp;

###②切换日志

alter system switch logfile;

③备份其余的数据文件

select FILE#,name from v$datafile;

SYS@vbox66in>select FILE#,name from v$datafile;

FILE# NAME
1/u01/app/oracle/oradata/vbox66db/system01.dbf
2/u01/app/oracle/oradata/vbox66db/sysaux01.dbf
3/u01/app/oracle/oradata/vbox66db/undotbs01.dbf
4/u01/app/oracle/oradata/vbox66db/users01.dbf

backup datafile 3,4 format ‘/u01/rman_bak/%s.bak’;

RMAN> backup datafile 3,4 format '/u01/rman_bak/%s.bak';

启动 backup 于 2018-04-22 16:29:20
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00003 名称=/u01/app/oracle/oradata/vbox66db/undotbs01.dbf
输入数据文件: 文件号=00004 名称=/u01/app/oracle/oradata/vbox66db/users01.dbf
通道 ORA_DISK_1: 正在启动段 1 于 2018-04-22 16:29:22
通道 ORA_DISK_1: 已完成段 1 于 2018-04-22 16:29:25
段句柄=/u01/rman_bak/5.bak 标记=TAG20180422T162921 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 2018-04-22 16:29:25

④切换日志

alter system switch logfile;
create table scott.emp2 as select * from scott.emp;

⑤干净的关闭数据库,删除所有数据文件

SYS@vbox66in>shutdown immediate;    发生完全检查点,更新控制文件和数据文件头的SCN
[oracle@vbox66 vbox66db]$ rm -rf system01.dbf
[oracle@vbox66 vbox66db]$ rm -rf sysaux01.dbf
[oracle@vbox66 vbox66db]$ rm -rf undotbs01.dbf
[oracle@vbox66 vbox66db]$ rm -rf users01.dbf

⑥RMAN按时间点做不完全恢复

SYS@vbox66in>startup mount;
RMAN> restore database;
RMAN> alter database open;

RMAN> alter database open;

RMAN-00571: >===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK >FOLLOWS ===============
RMAN-00571: >===========================================================
RMAN-03002: alter db 命令 (在 04/22/2018 16:50:09 上) 失败
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: >'/u01/app/oracle/oradata/vbox66db/system01.dbf'

SYS@vbox66in>select file#,checkpoint_change# from v$datafile;FILE# CHECKPOINT_CHANGE#1             9881042             9881043             9881044             988104  SYS@vbox66in>select file#,checkpoint_change# from v$datafile_header;FILE# CHECKPOINT_CHANGE#1             986289     最小化测试需要前滚到9875132             986289     最小化测试需要前滚到9875133             9875134             987513
RMAN>  recover database until scn 987513;   此scn是所有数据文件恢复后的最小打开数据库的scn

RMAN> recover database until scn 987513;
启动 recover 于 2018-04-22 17:11:06
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:02
完成 recover 于 2018-04-22 17:11:08

SYS@vbox66in>select file#,checkpoint_change# from v$datafile;FILE# CHECKPOINT_CHANGE#1             9881042             9881043             9881044             988104SYS@vbox66in>select file#,checkpoint_change# from v$datafile_header;FILE# CHECKPOINT_CHANGE#1             9875132             9875133             9875134             987513

⑥打开数据库

SYS@vbox66in>alter database open resetlogs;数据库已更改。SYS@vbox66in>select file#,checkpoint_change# from v$datafile;FILE# CHECKPOINT_CHANGE#1             9875172             9875173             9875174             987517SYS@vbox66in>select file#,checkpoint_change# from v$datafile_header;FILE# CHECKPOINT_CHANGE#1             9875172             9875173             9875174             987517

⑦验证

 SYS@vbox66in>select * from scott.emp1;  //有此文件SYS@vbox66in>select * from scott.emp1;  //无此文件

###2) RMAN恢复误删除表空间

必须通过备份的控制文件(即含有删除的表空间结构的老控制文件)进行恢复。本例要做的是drop tablespace test,然后再通过不完全恢复,使数据库在drop表空间前的那一刻打开,从而恢复test表空间及t1表的内容。
注: Oracle11gR2版可以支持数据库处于open方式下,以TSPITR方式恢复误删除的表空间。

①创建表空间和表

create tablespace test datafile '/u01/app/oracle/oradata/vbox66db/test01.dbf' size 20M;
create table test_table (id int,name varchar2(30)) tablespace test;
insert into test_table values(1,'aaa');
insert into test_table values(2,'bbb'); 

###②对数据库进行全备

RMAN> backup database format '/u01/rman_bak/all_%U.bak';

RMAN> backup database format '/u01/rman_bak/all_%U.bak';

启动 backup 于 2018-04-22 19:40:43
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00001 名称>=/u01/app/oracle/oradata/vbox66db/system01.dbf
输入数据文件: 文件号=00002 名称>=/u01/app/oracle/oradata/vbox66db/sysaux01.dbf
输入数据文件: 文件号=00003 名称>=/u01/app/oracle/oradata/vbox66db/undotbs01.dbf
输入数据文件: 文件号=00005 名称>=/u01/app/oracle/oradata/vbox66db/test01.dbf
输入数据文件: 文件号=00004 名称>=/u01/app/oracle/oradata/vbox66db/users01.dbf
通道 ORA_DISK_1: 正在启动段 1 于 2018-04-22 19:40:44
通道 ORA_DISK_1: 已完成段 1 于 2018-04-22 19:42:19
段句柄=/u01/rman_bak/all_0bt10gts_1_1.bak 标记>=TAG20180422T194043 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:35
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 2018-04-22 19:42:22
通道 ORA_DISK_1: 已完成段 1 于 2018-04-22 19:42:29
段句柄=/u01/rman_bak/all_0ct10h0r_1_1.bak 标记>=TAG20180422T194043 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:07
完成 backup 于 2018-04-22 19:42:29

③删除表空间及查看表空间删除时间

SYS@vbox66in>drop tablespace test including contents and datafiles;
tail /u01/app/oracle/diag/rdbms/vbox66db/vbox66in/trace/alert_vbox66in.log

[oracle@vbox66 trace]$ tail alert_vbox66in.log
Sun Apr 22 17:22:36 2018
SMCO started with pid=30, OS id=4136
Sun Apr 22 19:28:40 2018
create tablespace test datafile >'/u01/app/oracle/oradata/vbox66db/test01.dbf' size 20M
Completed: create tablespace test datafile >'/u01/app/oracle/oradata/vbox66db/test01.dbf' size 20M
Sun Apr 22 19:45:53 2018
drop tablespace test including contents and datafiles
Sun Apr 22 19:46:09 2018 //这是删除表空间的完成时间,后面取>时间要比它提前一点(考虑提前1分钟)
Deleted file /u01/app/oracle/oradata/vbox66db/test01.dbf
Completed: drop tablespace test including contents and >datafiles

④删除所有控制文件和数据文件

SYS@vbox66in> select dbid from v$database;  //rman恢复是用到
SYS@vbox66in>shutdown immediate
[oracle@vbox66 vbox66db]$ mv system01.dbf system01.dbf.bak
[oracle@vbox66 vbox66db]$ mv undotbs01.dbf undotbs01.dbf.bak
[oracle@vbox66 vbox66db]$ mv sysaux01.dbf sysaux01.dbf.bak
[oracle@vbox66 vbox66db]$ mv users01.dbf users01.dbf.bak
[oracle@vbox66 vbox66db]$ mv temp01.dbf temp01.dbf.bak
[oracle@vbox66 vbox66db]$ mv control01.ctl control01.ctl.bak
[oracle@vbox66 vbox66db]$ mv control02.ctl control02.ctl.bak

⑤准备对drop tablespace test做不完全恢复

SYS@vbox66in>startup nomount;
run {
startup nomount;
set dbid=3269052407;
restore controlfile from '/u01/rman_bak/all_0ct10h0r_1_1.bak' until time '2018-04-22 19:45:09';
alter database mount;
restore database;
recover database until time '2018-04-22 19:45:09';
alter database open resetlogs;
}

RMAN> run {
2> startup nomount;
3> set dbid=3269052407;
4> restore controlfile from >'/u01/rman_bak/all_0ct10h0r_1_1.bak' until time '2018-04-22 >19:45:09';
5> alter database mount;
6> restore database;
7> recover database until time '2018-04-22 19:45:09';
8> alter database open resetlogs;
9> }

Oracle 实例已启动

系统全局区域总计 839282688 字节

Fixed Size 2257880 字节
Variable Size 545262632 字节
Database Buffers 289406976 字节
Redo Buffers 2355200 字节

正在执行命令: SET DBID

启动 restore 于 2018-04-22 20:18:29

使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=18 设备类型=DISK

通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时: 00:00:03
输出文件名=/u01/app/oracle/oradata/vbox66db/control01.ctl
输出文件名=/u01/app/oracle/oradata/vbox66db/control02.ctl
完成 restore 于 2018-04-22 20:18:32

数据库已装载

释放的通道: ORA_DISK_1

启动 restore 于 2018-04-22 20:18:38
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=18 设备类型=DISK

通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00001 还原到 >/u01/app/oracle/oradata/vbox66db/system01.dbf
通道 ORA_DISK_1: 将数据文件 00002 还原到 >/u01/app/oracle/oradata/vbox66db/sysaux01.dbf
通道 ORA_DISK_1: 将数据文件 00003 还原到 >/u01/app/oracle/oradata/vbox66db/undotbs01.dbf
通道 ORA_DISK_1: 将数据文件 00004 还原到 >/u01/app/oracle/oradata/vbox66db/users01.dbf
通道 ORA_DISK_1: 将数据文件 00005 还原到 >/u01/app/oracle/oradata/vbox66db/test01.dbf
通道 ORA_DISK_1: 正在读取备份片段 >/u01/rman_bak/all_0bt10gts_1_1.bak
通道 ORA_DISK_1: 段句柄 = >/u01/rman_bak/all_0bt10gts_1_1.bak >标记 = >TAG20180422T194043
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:01:45
完成 restore 于 2018-04-22 20:20:25

启动 recover 于 2018-04-22 20:20:25
使用通道 ORA_DISK_1

正在开始介质的恢复

线程 1 序列 1 的归档日志已作为文件 >/u01/app/oracle/oradata/vbox66db/redo01.log 存在于磁盘上
归档日志文件名=/u01/app/oracle/oradata/vbox66db/redo01.log 线>程=1 序列=1
介质恢复完成, 用时: 00:00:01
完成 recover 于 2018-04-22 20:20:28

数据库已打开

⑥验证

SYS@vbox66in>select * from test_table;  ID NAME1 aaa2 bbb
注:①不能使用当前的控制文件恢复误删除的表空间,因为当前控制文件已经没有该表空间的记录了。②DBID是RMAN识别数据库的身份证,保存在控制文件中,set dbid=对于控制文件自动恢复(from autobackup)是必要的;

ORACLE不完全恢复的几种情况相关推荐

  1. Oracle不使用索引的几种情况列举

    本文介绍了几种不使用索引的情况,本文实验的数据库版本均为11.2.0.4 情况1: 我们在使用一个B*树索引,而且谓词中没有使用索引的最前列. 如果这种情况,可以假设有一个表T,在T(x,y)上有一个 ...

  2. oracle or索引失效_oracle数据库中索引会失效的几种情况

    创建Oracle 索引的目的是为了避免全表扫描数据,提高查询效率,但是如果sql语句写的不好致使索引失效,反而会影响数据查询效率.以下几种情况就会导致索引失效: 没有 WHERE 子句 众所周知,添加 ...

  3. oracle数据库中索引会失效的几种情况

    创建Oracle 索引的目的是为了避免全表扫描数据,提高查询效率,但是如果sql语句写的不好致使索引失效,反而会影响数据查询效率.以下几种情况就会导致索引失效: 1. 没有 WHERE 子句 众所周知 ...

  4. Oracle数据库重复数据删除的三种情况

    在对数据库进行操作过程中我们可能会遇到这种情况,表中的数据可能重复出现,使我们对数据库的操作过程中带来很多的不便,那么怎么删除这些重复没有用的数据呢? 重复数据删除技术可以提供更大的备份容量,实现更长 ...

  5. Oracle 索引扫描的五种类型

    之前在讨论CBO和RBO的时候提到了索引扫描的几种类型. Oracle Optimizer CBO RBO http://blog.csdn.net/tianlesoftware/archive/20 ...

  6. Oracle数据库备份与恢复的三种方法

    Oracle数据库备份与恢复的三种方法 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份.导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/ ...

  7. myeclipse无法启动tomcat的一种情况

    2019独角兽企业重金招聘Python工程师标准>>> 配置的jdk是jdk1.7.0_51,tomcat是apache-tomcat-6.0.30,配置的环境变量经检验没有问题. ...

  8. sql中索引不会被用到的几种情况

    转载自  sql中索引不会被用到的几种情况 1.查询谓词没有使用索引的主要边界,换句话说就是select *,可能会导致不走索引. 比如,你查询的是SELECT * FROM T WHERE Y=XX ...

  9. transaction缩写为什么是tx_TX Transaction locks常见的4种情况

    TX锁最常见的有以下4种情况: 由于行被活动事务锁住导致的等待. 由于唯一约束或主键约束导致的等待. 由于数据块ITL槽不足导致的等待. 由于行包含在同一个位图索引片段中导致的等待. 在LDY用户下创 ...

最新文章

  1. HTTP协议 ----响应消息
  2. python3.5中pdfkit的详细配置与使用
  3. python学习过程中随手写的测试脚本-testloop.py
  4. 恒压板框过滤实验数据处理_高考化学实验中:那些不常见的【特殊仪器】与装置,难得的资料...
  5. window10内核Linux,windows 10中发布完整的Linux内核
  6. Android 8.0 AutoFill自动填写框架实践
  7. 【蓝桥杯嵌入式】【STM32】4_TIM之定时器及其中断、PWM初探
  8. 鸿蒙升级后能恢复安卓吗,升级了鸿蒙系统怎么卸载鸿蒙系统?升级了鸿蒙还能用安卓吗?...
  9. MATLAB DBSCAB简介
  10. 企业微信第三方应用Demo源码
  11. nginx安装三大的命令的解释./configure make make install
  12. 软件测试面试考什么综合素质,综合素质测评都考了啥
  13. 专为轻运动而生的南卡NEO全新发布,定位骨传导运动耳机新标杆!
  14. 使用vue-qr生成带中间带图片的二维码
  15. 为什么机器人运动学逆解最好采用双变量反正切函数atan2而不用反正/余弦函数?
  16. StatusBarUtil 状态栏工具类(实现沉浸式状态栏/变色状态栏)
  17. 客户端伪造代理服务器ip进行sql注入
  18. ERP系统对接方案,API接口封装系列(高并发)
  19. SAP:ZSD010 Download Requirements Plan Data
  20. 面向对象编程---上

热门文章

  1. 英语 面包为什么不可数?
  2. Java数组去重的多种方法,[Java教程]JavaScript常见的五种数组去重的方式
  3. 7-32 中位数 (10 分)
  4. 基于顺序存储结构的图书信息表的旧图书的出库(C++)
  5. 数据库(4)表的基本操作
  6. php mongo 范围查询语句,【MongoDB】数组和范围查询的相互作用
  7. mysql转移数增删改查_MySql CURD操作(数据的增删改查)
  8. mysql 排序字段索引吗_Mysql 排序优化与索引使用(转)
  9. BZOJ5300 [Cqoi2018]九连环 【数学】【FFT】
  10. Hbase对时,时差范围的确定