3、控制文件的备份与恢复

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 控制文件的备份与恢复

1、概念

控制文件是一个跟踪数据库的二进制文件,每个数据库有唯一的控制文件,可以维护多个相同的拷贝。控制文件是oracle数据库用来查找数据库文件,并从总体上管理数据库状态的文件。控制文件包含以下信息:


(1)数据库名称和数据库唯一标识符(DBID);


(2)创建数据库的时间戳;


(3)有关数据库文件、联机重做日志、归档日志的信息;


(4)表空间的信息;


(5)RMAN备份信息。


2、控制文件的作用

1、包含数据文件、重做日志文件等打开数据库所需要的信息。


控制文件跟踪数据库的结构变化。当添加、重命名、删除数据文件或重做日志文件时,数据库将更新控制文件,记录相应的修改。


2、包含数据库打开时需要使用的元数据。


控制文件中包含包括检查点等用于恢复数据库所需的信息。在实例恢复过程中,检查点能指示出redo stream需要的起始SCN。每次提交更改之前检查点确保SCN已保存到磁盘上的数据文件中。


在数据库使用期间,数据库不断读取和写入控制文件,并且只要数据库处于打开状态,控制文件就必须是可用的。


3、使用RMAN备份控制文件

3.1 备份控制文件

我们可以使用backup current controlfile命令对控制文件的进行备份:


RMAN> backup current controlfile format '/app/rmanbak/control_%d_%I_%T_%t_%s_%p.ctl';

3.2 查看控制文件备份信息

我们可以使用list backup命令查询控制文件的备份信息:


RMAN> list backup of controlfile;


4、使用RMAN恢复控制文件

我们将模拟生产坏境中数据的插入,模拟控制文件丢失


--模拟数据插入

SQL> insert into t1 values(1,'Tome');1 row created.

SQL> commit;

--查询控制文件位置

SQL> select name from v$controlfile;

--删除控制文件

SQL> host rm /app/oracle/oradata/ORCL/control01.ctl

SQL> host rm /app/oracle/oradata/ORCL/control02.ctl

4.1 重启数据库

我们在重启数据库的时候,由于缺少控制文件,数据库只能启动到nomount状态。


--强制重启数据库

SQL> startup force;

ORACLE instance started.

Total System Global Area 8002730448 bytes

Fixed Size    8915408 bytes

Variable Size 1308622848 bytes

Database Buffers 6677331968 bytes

Redo Buffers    7860224 bytes

ORA-00205: error in identifying control file, check alert log for more info

--查询数据库状态

SQL> select status from v$instance;

STATUS

------------------------------------

STARTED

4.2 使用RMAN恢复控制文件

我们使用 restore命令恢复控制文件


RMAN> restore controlfile from '/app/rmanbak/control_ORCL_1651659091_20230203_1127833229_267_1.ctl';

控制文件恢复成功后,我们使用alter database mount命令挂载数据库。


RMAN> alter database mount;

4.3 使用rman恢复数据库

使用recover database命令恢复数据


RMAN> recover database;

数据库恢复完成之后,必须以resetlogs模式才能打开数据库。


--打开数据库

RMAN> alter database open;

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of sql statement command at 02/03/2023 15:24:43

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

--以resetlogs模式打开数据库

RMAN> alter database open RESETLOGS;

Statement processed

我们登陆数据库查询数据


SQL> select * from t1;

       ID NAME

---------- --------------------------------------------------

        1 Tome

数据正常,至此控制文件恢复完成。


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
安全 物联网 Linux
IoT技术-用HackRF做一个私网LTE基站
本文中涉及到国家通信安全。请不要随便尝试。如若尝试后造成任何后果与本文作者无任何关系。
2051 1
IoT技术-用HackRF做一个私网LTE基站
|
11月前
|
Python Windows
Python实现常用办公文件格式转换
本文介绍了如何使用Python及其相关库(如`pandas`、`openpyxl`、`python-docx`等)实现办公文件格式间的转换,包括XLS转XLSX、DOC转DOCX、PPT转PPTX、Word转PDF及PDF转Word,并提供了具体代码示例和注意事项。
602 89
|
7月前
|
数据采集 JSON API
Python 实战:用 API 接口批量抓取小红书笔记评论,解锁数据采集新姿势
小红书作为社交电商的重要平台,其笔记评论蕴含丰富市场洞察与用户反馈。本文介绍的小红书笔记评论API,可获取指定笔记的评论详情(如内容、点赞数等),支持分页与身份认证。开发者可通过HTTP请求提取数据,以JSON格式返回。附Python调用示例代码,帮助快速上手分析用户互动数据,优化品牌策略与用户体验。
1397 3
|
11月前
|
C语言 计算机视觉
【C语言】移位操作详解 - 《凌波微步 ! 》
移位操作符是C语言中非常重要的工具,提供了高效的位级操作方法。理解和正确使用移位操作符,对于编写高性能和高效能的程序至关重要。本文详细介绍了左移和右移操作符的使用方法、应用场景及注意事项,希望对您理解和使用C语言移位操作有所帮助。
931 5
|
域名解析 弹性计算 网络协议
DNS问题之域名云解析接口关闭如何解决
DNS解析是指将人类可读的域名转换成机器可读的IP地址的过程,它是互联网访问中不可或缺的一环;本合集将介绍DNS解析的机制、类型和相关问题的解决策略,以确保域名解析的准确性和高效性。
384 1
DNS问题之域名云解析接口关闭如何解决
|
小程序
TDesign电商小程序模板解析02-首页功能
TDesign电商小程序模板解析02-首页功能
|
存储 Java 数据安全/隐私保护
面试官:什么是JWT?为什么要用JWT?
面试官:什么是JWT?为什么要用JWT?
419 0
|
运维 关系型数据库 MySQL
Apache Doris FE 元数据常见故障处理
Apache Doris FE 元数据常见故障处理
2162 0
|
机器学习/深度学习 人工智能 自然语言处理
深度学习-分享几个开源AI模型库
现在市面上有很多的深度学习预训练模型库,这些预训练库收集了不同AI任务的SOTA模型,有的还提供推理的SDK。这对于做AI应用和AI开发来说,是宝贵的开源资源。
5754 0
深度学习-分享几个开源AI模型库
|
NoSQL 关系型数据库 MySQL
一站式Linux&数据库管理平台mayfly-go
web版linux、mysql、redis、mongo统一管理操作平台。
一站式Linux&数据库管理平台mayfly-go