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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 本文介绍了数据库的冷备份与冷恢复技术,包括其定义、优缺点及操作步骤。通过Oracle RMAN工具,详细演示了如何执行冷备份和冷恢复,确保数据库在关闭状态下完成备份,并能快速恢复到指定时间点。文中还提供了具体的操作示例和代码,帮助读者更好地理解和实践。

b097.png


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

   

视频讲解如下:

   

下面将通过具体的操作示例来演示如何使用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


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

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

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


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

SQL> select count(*) from c##scott.emp;

# 输出的信息如下:
  COUNT(*)
----------
15
# 员工表中的15条记录被恢复成功了。



相关文章
|
17小时前
|
存储 关系型数据库 MySQL
【赵渝强老师】执行MySQL的冷备份与冷恢复
冷备份是在数据库关闭状态下进行的备份,速度快且恢复简单,但备份期间数据库不可用。本文通过一个MySQL数据库的示例,详细演示了冷备份和恢复的步骤,包括备份文件、模拟错误、恢复数据等过程。
|
2月前
|
Oracle 安全 关系型数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨
删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。
|
3月前
|
SQL Oracle 关系型数据库
Oracle误删数据怎么恢复?
Oracle误删数据怎么恢复?
45 0
|
4月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法
相信有很多oracle数据库用户都遇到过在操作Oracle数据库时误删除某些重要数据的情况,这个时候如果数据库没有备份且数据十分重要的,怎么才能恢复误删除的数据呢?北亚企安数据恢复工程师下面简单介绍几个误删除Oracle数据库数据的恢复方法。
|
6月前
|
Oracle 关系型数据库 数据库
oracle数据恢复—服务器断电导致Oracle数据库报错的数据恢复案例
一台Windows server操作系统的服务器上部署Oracle数据库。 服务器意外断电导致oracle数据库报错,报错信息:“system01.dbf需要更多的恢复来保持一致性”。由于该oracle数据库并没有备份,仅有一些断断续续的归档日志,无法通过备份文件恢复oracle数据库的数据。管理员联系北亚企安数据恢复中心要求修复Oracle数据库。
oracle数据恢复—服务器断电导致Oracle数据库报错的数据恢复案例
|
SQL Oracle 关系型数据库
|
SQL Oracle 关系型数据库
|
SQL Oracle 关系型数据库
下一篇
无影云桌面