前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【赵渝强老师】执行Oracle的冷备份与冷恢复

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

原创
作者头像
赵渝强老师
修改2024-08-26 09:48:46
320
修改2024-08-26 09:48:46
举报
文章被收录于专栏:关系型数据库

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

  视频讲解如下:

视频内容

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

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

  使用RMAN执行数据库的冷备份具体的步骤如下:

(1)创建RMAN冷备份存放的目录。

代码语言:powershell
复制
mkdir -p /home/oracle/backup/rman/archive/cold

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

代码语言:sql
复制
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
复制
SQL> select count(*) from c##scott.emp;
  COUNT(*)
----------
	14  

# 这里显示的14条数据是有备份的。

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

代码语言:sql
复制
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
复制
SQL> shutdown abort;

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

代码语言:powershell
复制
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状态,恢复控制文件。

代码语言:sql
复制
RMAN> startup nomount

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

代码语言:sql
复制
RMAN> restore controlfile from '/home/oracle/backup/rman/archive/cold/full_ORCL_20220327_14';

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

  输出的信息如下:

代码语言:sql
复制
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状态,恢复数据文件。

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

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

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

代码语言:sql
复制
SQL> select count(*) from c##scott.emp;

输出的信息如下:
  COUNT(*)
----------
	15

# 员工表中的15条记录被恢复成功了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、使用Oracle RMAN执行数据库的冷备份
  • 二、使用Oracle RMAN执行数据库的冷备份
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档