【赵渝强老师】执行Oracle的冷备份与冷恢复

devtools/2024/9/24 4:43:31/

在这里插入图片描述

  冷备份与冷恢复是指发生在数据库已经正常关闭的情况下进行的备份和恢复。由于此时数据库已经关闭,通过冷备份可以将数据库的关键性文件拷贝到另外存储位置。冷备份因为只是拷贝文件,因此备份的速度非常快。在执行恢复时,只需将文件再拷贝回去就可以很容易恢复到某个时间点上。冷备份的最大缺点在于在冷备份过程中,数据库必须是关闭状态,不能提供外部的访问。
  视频讲解如下:

执行Oracle的冷备份与冷恢复

【赵渝强老师】执行Oracle的冷备份与冷恢复

  下面将通过具体的操作示例来演示如何使用Oracle RMAN执行数据库的冷备份与冷恢复。

一、使用Oracle RMAN执行数据库的冷备份

  使用RMAN执行数据库的冷备份具体的步骤如下:
(1)创建RMAN冷备份存放的目录。

mkdir -p /home/oracle/backup/rman/archive/cold

(2)执行RMAN的脚本对Oracle数据库进行冷备份。

RMAN>  run{# 关闭数据库shutdown immediate;# 启动数据库到mount状态startup mount;# 分配备份的通道allocate channel c1 type disk format '/home/oracle/backup/rman/archive/cold/full_%d_%T_%s';# 执行备份backup database include current controlfile;# 释放通道release channel c1; # 打开数据库sql 'alter database open';
}

二、使用Oracle RMAN执行数据库的冷备份

  下面将收到删除数据文件和控制文件来模拟数据库运行出错的情况。由于丢失了所有的数据文件和控制文件,因此在使用RMAN执行恢复的时候,需要先恢复控制文件,再恢复数据文件。
(1)确认c##scott用户下员工表中的记录数。

SQL> select count(*) from c##scott.emp;COUNT(*)
----------14  # 这里显示的14条数据是有备份的。

(2)往表中新插入一条记录

SQL> insert into c##scott.emp(empno,ename,sal,deptno) values(1,'Tom',1000,10);
SQL> commit;
SQL> select count(*) from c##scott.emp;COUNT(*)
----------15  # 新插入的第15条记录没有备份。

(3)强制关闭数据库

SQL> shutdown abort;

(4)模拟文件的丢失,删除所有的数据文件和控制文件

cd /u01/app/oracle/oradata/ORCL
rm -rf *.dbf
cd /u01/app/oracle/oradata/ORCL
rm -rf control01.ctl
cd /u01/app/oracle/fast_recovery_area/ORCL
rm -rf control02.ctl

(5)启动数据库到nomount状态,恢复控制文件。

RMAN> startup nomount

(6)执行控制文件的恢复

RMAN> restore controlfile from '/home/oracle/backup/rman/archive/cold/full_ORCL_20220327_14';

这里使用了前面的冷备份恢复控制文件。如果生成的备份集有多个,体积较小的备份集中包含了控制文件的备份。

  输出的信息如下:

Starting restore at 27-MAR-22
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=47 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u01/app/oracle/oradata/ORCL/control01.ctl
output file name=/u01/app/oracle/fast_recovery_area/ORCL/control02.ctl
Finished restore at 27-MAR-22

(8)将数据库开启到mount状态,恢复数据文件。

RMAN> alter database mount;			# 将数据库启动到mount状态
RMAN> restore database;				# 转储数据库文件
RMAN> recover database;				# 恢复数据库
RMAN> alter database open resetlogs;		# 打开数据库

使用resetlogs代表这是是一个不完全恢复,但由于当前是在归档模式下,因此可以实现数据库的完全恢复。

(9)验证c##scott用户下员工表中的记录数。

SQL> select count(*) from c##scott.emp;输出的信息如下:COUNT(*)
----------15# 员工表中的15条记录被恢复成功了。

http://www.ppmy.cn/devtools/99254.html

相关文章

OpenHarmony开发实战: 一种应用界面UI自动化测试方法

前言: 随着 OpenHarmony 版本更新,应用生态繁荣,如何对应用界面进行自动化测试成为一个迫切的问题。一般情况,对应用的界面测试都是通过人工进行,效率低,误判率高,本文将介绍一种通过图片对比进…

什么是微服务?

在这个日益数字化和竞争激烈的时代,企业对软件的敏捷性、可维护性和可扩展性的要求越来越高,在这种需求下微服务孕育而生,微服务架构提供了一种适应变化的灵活方式,使企业能够更加敏捷地创新、交付价值,并在技术和业务…

Spring Cloud(面试篇)

目录 什么是微服务架构 为什么要学习SpringCloud SpringCloud是什么? Spring Cloud常见组件有哪些? Nacos的服务注册表结构是怎样的? Nacos如何支持案例内部数十万服务器注册压力? 网关和过滤器有什么区别 如何设计一套AP…

Leetcode JAVA刷刷站(80)删除有序数组中的重复项 ||

一、题目概述 二、思路方向 为了解决这个问题,我们可以使用双指针技术。一个指针(我们称之为i)用于遍历数组,另一个指针(我们称之为j)用于记录不重复或只重复一次的元素应该放置的位置。同时,我…

@Transactional 注解 this调用注解不生效

如果在一个方法上标注Transactional,要确定这个方法的调用方是容器中的代理对象还是普通的java对象. 如果是代理对象事务会开启生效 如果是普通的java对象事务会失效 如果是这样调用,那 grantDayBonus 方法肯定是容器中的代理对象调起的.事务会生效

MinIO 企业级人工智能存储的数据和驱动器同等重要

为什么会这样?这是因为硬件故障发生在不同的级别。有一些中断会导致整个站点瘫痪。然后,会出现中断,导致集群中的一部分节点瘫痪。但是,在更精细的硬盘驱动器位级别也存在故障,这些故障需要复制本身无法提供的另一种类…

Vue 之混入(mixin)详细介绍

混入(mixin)提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项(如data、methods、mounted、filters等等)。 一、注册使用 1、在main.js中全局配置 import mixin from ./mixinsVue.mixin(mixin)2、组件中配置 在日常的开发…

【时时三省】(C语言基础)数组参数

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 一维数组传参 一维数组传参 数组大小可以省略 也可以写成指针 如果这个一维数组是个指针数组 写成指针数组 或者写成二级指针 这个上面列的都是正确的写法 二维数组传参 第5行的写法是不行…