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

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


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
Oracle 关系型数据库 数据库
4、数据文件的备份与恢复
数据文件的备份与恢复
135 0
|
Oracle 关系型数据库 数据库
2、参数文件的备份与恢复
参数文件的备份与恢复
153 0
|
SQL Oracle 关系型数据库
oracle数据库控制文件的备份和恢复之一手动备份和恢复
实验步骤:手动备份和恢复oracle控制文件
587 0
|
Oracle 关系型数据库 数据库
|
SQL Oracle 关系型数据库
|
SQL Oracle 关系型数据库