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

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

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

猜你喜欢

转载自blog.csdn.net/liang921119/article/details/129474151