这里是:一看就会,一做就废系列

数据库演示版本为 19.3 (12.2.0.3

该系列涉及恢复过程中使用的 5 个语句:

1. recover database

2. recover database until cancel

3. recover database using backup controlfile

4. recover database until cancel using backup controlfile

5. recover database using backup controlfile until cancel

继续之前,你得知道什么叫还原什么叫恢复 ?以及备份与恢复的基础 点我查看己亥清爽系列

恢复级别一共三个:recover database > recover tablespace > recover datafile 本系列目的是为了演示上面 5 条命令的区别与联系,所以不探讨恢复级别以及数据库状态对应所使用的恢复级别问题。最高级别 database 已经包含了 tablespace 和 datafile 两个级别。

版权声明:博客园 AskScuti 版权所有,未经允许,禁止转载!

目录

1. 概念解释

2. 情况说明

3. 实验过程

  3.1 备份 CDB

  3.2 PDB1 创建测试数据

  3.3 删除 PDB1 所有数据文件

  3.4 还原 PDB1 所有数据文件

  3.5 恢复 PDB1 所有数据文件

  3.6 开启 PDB1 进行数据验证

1. 概念解释

  首先你得知道,recover database 这个命令是用作对所有数据文件进行恢复的,而且是完全恢复

  有个细节注意下,这个命令分为两种,一种用在 SQL 命令行一种用在 RMAN

  SQL > recover database 仅对所有数据文件进行完全恢复,前提是控制文件为当前最新状态不可以是还原过来的老版本或是手工重建,否则 SQL 命令行执行将返回错误

  RMAN > recover database 对所有数据文件和控制文件进行完全恢复

  本例中仅演示对数据文件的完全恢复,此命令对控制文件的恢复将在下篇讨论。

  一句话:recover database 就是对所有数据进行完全恢复操作(控制文件、归档日志、联机日志完好无损的情况下

2. 情况说明

  当前系统中,控制文件、归档日志、联机日志都完好无损,删除数据文件,进行还原,使用 recover database 进行完全恢复。

3. 实验过程

3.1 备份 CDB

备份整个 CDB(CDB$ROOT / PDB1 / PDB$SEED)

RMAN> backup database format '/u02/backup/%s_%d_%U.full' tag 'full_backup';

RMAN> backup database format '/u02/backup/%s_%d_%U.full' tag 'full_backup';Starting backup at 08-JUN-19
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/CDB1/system01.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/CDB1/sysaux01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/CDB1/undotbs01.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/CDB1/users01.dbf
channel ORA_DISK_1: starting piece 1 at 08-JUN-19
channel ORA_DISK_1: finished piece 1 at 08-JUN-19
piece handle=/u02/backup/8_CDB1_08u3ji4n_1_1.full tag=FULL_BACKUP comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00010 name=/u01/app/oracle/oradata/CDB1/pdb1/sysaux01.dbf
input datafile file number=00009 name=/u01/app/oracle/oradata/CDB1/pdb1/system01.dbf
input datafile file number=00011 name=/u01/app/oracle/oradata/CDB1/pdb1/undotbs01.dbf
input datafile file number=00012 name=/u01/app/oracle/oradata/CDB1/pdb1/users01.dbf
input datafile file number=00013 name=/u01/app/oracle/oradata/CDB1/pdb1/henry01.dbf
channel ORA_DISK_1: starting piece 1 at 08-JUN-19
channel ORA_DISK_1: finished piece 1 at 08-JUN-19
piece handle=/u02/backup/9_CDB1_09u3ji6f_1_1.full tag=FULL_BACKUP comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00006 name=/u01/app/oracle/oradata/CDB1/pdbseed/sysaux01.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/CDB1/pdbseed/system01.dbf
input datafile file number=00008 name=/u01/app/oracle/oradata/CDB1/pdbseed/undotbs01.dbf
channel ORA_DISK_1: starting piece 1 at 08-JUN-19
channel ORA_DISK_1: finished piece 1 at 08-JUN-19
piece handle=/u02/backup/10_CDB1_0au3ji78_1_1.full tag=FULL_BACKUP comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
Finished backup at 08-JUN-19Starting Control File and SPFILE Autobackup at 08-JUN-19
piece handle=/u02/backup/c-983951798-20190608-02.CTL comment=NONE
Finished Control File and SPFILE Autobackup at 08-JUN-19

process

3.2 PDB1 创建测试数据

连接 PDB1 查看当前数据文件

[oracle@henry ~]$ sqlplus sys/oracle@pdb1 as sysdba
SQL> select name from v$datafile;

[oracle@henry ~]$ sqlplus sys/oracle@pdb1 as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Sat Jun 8 16:48:51 2019
Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle.  All rights reserved.Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0SQL> select name from v$datafile;NAME
------------------------------------------------
/u01/app/oracle/oradata/CDB1/pdb1/system01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/sysaux01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/undotbs01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/users01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/henry01.dbf

创建测试表 recover_db,插入数据 1,2,3 并 commit 提交

SQL> create table recover_db(id number) tablespace henry;Table created.SQL> insert into recover_db values(1);1 row created.SQL> insert into recover_db values(2);1 row created.SQL> insert into recover_db values(3);1 row created.SQL> commit;Commit complete.

3.3 删除 PDB1 所有数据文件

SQL> !rm -rf /u01/app/oracle/oradata/CDB1/pdb1/*

继续插入数据 4,5,6 不提交,执行触发完全检查点,刷缓存数据,报错(请思考:物理文件删除,是否还可以继续插入数据?为什么)

SQL> insert into recover_db values(4);1 row created.SQL> insert into recover_db values(5);1 row created.SQL> insert into recover_db values(6);1 row created.SQL> alter system checkpoint;System altered.SQL> /
alter system checkpoint
*
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 30992
Session ID: 273 Serial number: 51273

因为对表的所有操作都是在内存里面,此时和物理数据文件无关,所以可以继续。

触发检查点的目的是为了将缓存数据刷入磁盘,而这时就和数据文件有关系了,第一次触发完全检查点刷数据,没反应过来,第二次刷报错,因为缓存数据要写入磁盘,可是对应的磁盘文件被删除,因此报错。

请留意:插入 4,5,6 三条数据后的操作,是否有提交?完全恢复是否可以恢复出 4,5,6 ?

切换 CDB 查看 PDB1 状态,并尝试启动(这里为什么 PDB1 是 MOUNT ?)

SQL> conn / as sysdba
Connected.
SQL> show pdbsCON_ID CON_NAME      OPEN MODE  RESTRICTED
---------- ------------- ---------- ----------2   PDB$SEED       READ ONLY  NO3   PDB1           MOUNTED
SQL> alter pluggable database pdb1 open;
alter pluggable database pdb1 open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 13 - see DBWR trace file
ORA-01110: data file 13: '/u01/app/oracle/oradata/CDB1/pdb1/henry01.dbf'

因为多租户体系中,参数文件控制文件都处于 CDB 级别,因此,只要 CDB 是开启的,下面所有 PDB 最低级别都是 MOUNT(哪怕这个库已经出了问题,停止了,依然显示MOUNT)

3.4 还原 PDB1 所有数据文件

还原数据文件

你可以连接 PDB1 还原自己

[oracle@henry ~]$ rman target sys/oracle@pdb1Recovery Manager: Release 19.0.0.0.0 - Production on Sat Jun 8 17:13:26 2019
Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.connected to target database: CDB1:PDB1 (DBID=2947650716, not open)RMAN> restore database from tag='FULL_BACKUP';Starting restore at 08-JUN-19
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=11 device type=DISKchannel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00009 to /u01/app/oracle/oradata/CDB1/pdb1/system01.dbf
channel ORA_DISK_1: restoring datafile 00010 to /u01/app/oracle/oradata/CDB1/pdb1/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00011 to /u01/app/oracle/oradata/CDB1/pdb1/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00012 to /u01/app/oracle/oradata/CDB1/pdb1/users01.dbf
channel ORA_DISK_1: restoring datafile 00013 to /u01/app/oracle/oradata/CDB1/pdb1/henry01.dbf
channel ORA_DISK_1: reading from backup piece /u02/backup/9_CDB1_09u3ji6f_1_1.full
channel ORA_DISK_1: piece handle=/u02/backup/9_CDB1_09u3ji6f_1_1.full tag=FULL_BACKUP
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:36
Finished restore at 08-JUN-19

还可以连接 CDB ,还原 PDB1

RMAN> restore pluggable database pdb1 from tag='FULL_BACKUP';Starting restore at 08-JUN-19
using channel ORA_DISK_1channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00009 to /u01/app/oracle/oradata/CDB1/pdb1/system01.dbf
channel ORA_DISK_1: restoring datafile 00010 to /u01/app/oracle/oradata/CDB1/pdb1/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00011 to /u01/app/oracle/oradata/CDB1/pdb1/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00012 to /u01/app/oracle/oradata/CDB1/pdb1/users01.dbf
channel ORA_DISK_1: restoring datafile 00013 to /u01/app/oracle/oradata/CDB1/pdb1/henry01.dbf
channel ORA_DISK_1: reading from backup piece /u02/backup/9_CDB1_09u3ji6f_1_1.full
channel ORA_DISK_1: piece handle=/u02/backup/9_CDB1_09u3ji6f_1_1.full tag=FULL_BACKUP
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:35
Finished restore at 08-JUN-19

3.5 恢复 PDB1 所有数据文件

恢复数据文件

你可以连接 PDB1 恢复自己

RMAN> recover database;Starting recover at 08-JUN-19
using channel ORA_DISK_1starting media recovery
media recovery complete, elapsed time: 00:00:00Finished recover at 08-JUN-1

还可以连接 CDB ,恢复 PDB1

RMAN> recover pluggable database pdb1;Starting recover at 08-JUN-19
using channel ORA_DISK_1starting media recovery
media recovery complete, elapsed time: 00:00:00Finished recover at 08-JUN-19

3.6 开启 PDB1 进行数据验证

打开数据库

你可以连接 PDB1 打开自己

RMAN> alter database open;Statement processed

还可以连接 CDB ,打开 PDB1

RMAN> alter pluggable database pdb1 open;Statement processed

验证数据

请问,完全恢复之后,recover_db 表中有几条数据?为什么?

SQL> select * from recover_db;ID
----------123

因为插入 4,5,6 没有提交,事务没有结束,因此不具有持久性。完全恢复是恢复到宕机前最后一次 commit 的状态

转载于:https://www.cnblogs.com/askscuti/p/10989736.html

一看就会一做就废系列:说说 RECOVER DATABASE(上)相关推荐

  1. 一看就会一做就废系列:说说 RECOVER UNTIL CANCEL

    这里是:一看就会,一做就废系列 数据库演示版本为 19.3 (12.2.0.3) 该系列涉及恢复过程中使用的 5 个语句: 1. recover database 2. recover databas ...

  2. 心得体悟帖---16、哪些看起来很难做的事情真的不过如此

    心得体悟帖---16.哪些看起来很难做的事情真的不过如此 一.总结 一句话总结: 你可能会因为激情缺乏非常抵触做什么事情,但是当你做了之后,你会发现其实感觉都还挺好的. 做着做着,你会发现感觉其实挺舒 ...

  3. 华为端到端项目管理流程_【达睿原创】供应链端到端管理 – 看华为是怎么做的...

    原标题:[达睿原创]供应链端到端管理 – 看华为是怎么做的 通常意义下的端到端: 从供应商的供应商到客户的客户 供应链端到端管理的概念早在20多年前就由SCC国际供应链协会提出了.著名的SCOR模型就 ...

  4. 菜鸟做设计必看!有关如何做设计的整体思路,以及能否综合的笔记

    对Verilog 初学者比较有用的整理(转自它处) 作者: Ian11122840 时间: 2010-9-27 09:04 标题: 菜鸟做设计必看!有关如何做设计的整体思路,以及能否综合的笔记 所谓综 ...

  5. deep deepfm wide 区别_个性化推荐如何满足用户口味?微信看一看的技术这样做

    原标题:个性化推荐如何满足用户口味?微信看一看的技术这样做 编辑导读:很多人每天都会习惯性地点开微信公众号阅读,除了朋友圈和转发等渠道以外,我们还可以通过看一看发现更多有趣的文章.那么,看一看是怎么实 ...

  6. [转载]你们要的GIF动图制作全攻略!看完就会做!(实操教程)

    非常实用呀 原文地址:你们要的GIF动图制作全攻略!看完就会做!(实操教程)作者:木木老贼 来源:文案匠(ID:sun-work) 作者:一木(授权转载,如需转载请联系文案匠) 文章配图的GIF动图怎 ...

  7. 计算机专业用移动硬盘,评测 篇四十三:国产之光,看这款可做移动硬盘又可系统盘的Orico SSD...

    评测 篇四十三:国产之光,看这款可做移动硬盘又可系统盘的Orico SSD 2020-03-22 21:26:50 5点赞 7收藏 17评论 移动存储一直是我们生活中的热门话题,在伴随最近几年的云盘不 ...

  8. 看过了不知道做过了才知道

    看过了不知道做过了才知道       从2006年正月开始正式工作到现在已经整整两年了,一直做WEB编程,从基本ASP编码到运用ASP就像是在用几个对象搭积木一样构建功能型WEB系统,从用Access ...

  9. java实现计算器的退格功能_帮忙看下这个java做的计算器为什么实现不了退格和清零功能,3q...

    已结贴√ 问题点数:5 回复次数:1 帮忙看下这个java做的计算器为什么实现不了退格和清零功能,3q import java.awt.*; import java.awt.event.*; publ ...

最新文章

  1. OpenCV学习(19) 细化算法(7)
  2. win8如何在已安装多系统的情况下,更改默认开机系统
  3. geotrellis使用(三十)使用geotrellis读取PostGIS空间数据
  4. mysql自增主键归零的方法
  5. 高级Java面试题,你敢挑战吗?
  6. java工作笔记018---java中BigDecimal小数位数的四舍五入等操作
  7. VS2008SP1下jQuery使用初体验
  8. 快手视频以及评论获取
  9. Swift仿写有妖气漫画
  10. 逍遥单机卡系统服务器ip,逍遥剑侠情缘私服架设源码+APP端+搭建教程
  11. 常用背景色RGB配色如下:
  12. 人体如何区分阴虚和阳虚?
  13. 2018年宇视科技智能交通-嵌入式软件开发线上笔试题
  14. 李丽云为什么选择肖志军?
  15. 2021大厂Java面试真题(一)
  16. Sublime Text 3默认临时/缓存文件保存位置
  17. jsp 实现查询功能
  18. PHPStudy搭建WordPress本地网站
  19. java定义包的关键字_如何定义包,关键字是什么?
  20. DID:仅有几个实验组样本的倍分法(双重差分)

热门文章

  1. win10任务栏透明_Win10透明任务栏工具
  2. QUANT[14]强化学习RL论文1:通过深度强化学习实现人的层次控制
  3. 10-10 常见单词 : 访问项目Gutenberg(http://gutenberg.org/ ) , 并找一些你想分析的图书。 下载这些作品的文本文件或将浏览器中的原始文本复制到文本文件中。 你可
  4. 计算机组成原理实验报告范文,计算机组成原理实验-运算器实验报告.doc
  5. 如何用Python从TripAdvisor抓取数十万条酒店评论
  6. Linux系统管理笔记
  7. lexyacc安装配置
  8. odoo centos 安装odoo14
  9. 如何快速入门模具设计?
  10. 什么高大填空四个字动人_高大怎么填空四个字