RMAN 备份管理-下集

RMAN(Recover Manager)

接着RMAN管理-上集延伸,上集内容我们主要介绍RMAN三种备份模式的实践以及备份过程中的步骤和注意事项⚠️,本章主要阐述的就是怎么利用RMAN所产出的备份文件进行恢复,全程会有理论概述以及实践阶段,感谢各位读阅🙏


在《用户管理》章节有介绍过关于恢复的两个名词,巩固一下:
Restore :如果文件丢失了,那我们就将备份的文件复制到原来文件丢失的位置
Recover :介质恢复,恢复通过备份文件还原后的数据空窗期

RMAN恢复控制文件

首先我们先将控制文件通过RMAN备份,我们介绍手动备份操作步骤(Linux)。

--创建存放备份的文件夹
[oracle@oracle u01]$ mkdir contro
--备份数据库控制文件到刚刚创建的文件夹中
RMAN> backup current controlfile format '/u01/contro/con';

Starting backup at 20-JUL-20
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 20-JUL-20
channel ORA_DISK_1: finished piece 1 at 20-JUL-20
...
[oracle@oracle contro]$ ll -lh
总用量 9.5M
-rw-r-----. 1 oracle oinstall 9.5M 7月  20 14:47 con
--查询数据库现有的控制文件位置
SQL> select name from v$controlfile;
NAME
---------------------
/u01/app/oracle/c1.ctl
/u01/app/oracle/c2.ctl
--删除其中一个控制文件
[oracle@oracle ~]$ rm -rf /u01/app/oracle/c2.ctl
--重启数据库,查看数据库是否还能启动
SQL> startup force;
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size             989857904 bytes
Database Buffers          603979776 bytes
Redo Buffers                7360512 bytes
ORA-00205: error in identifying control file, check alert log for more info

SQL> select status from v$instance;

STATUS
--------------------
STARTED
--已经发现数据库打不开,处于(started)状态,现在我们通过RMAN来进行手工恢复控制文件。1)重新登录RMAN
RMAN> quit

Recovery Manager complete.
[oracle@oracle u01]$ rman target /

Recovery Manager: Release 11.2.0.1.0 - Production on Mon Jul 20 14:59:14 2020

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database: PAS (not mounted)2)恢复(restore)控制文件
RMAN> restore controlfile from '/u01/contro/con';

Starting restore at 20-JUL-20
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=90 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/c1.ctl
output file name=/u01/app/oracle/c2.ctl
Finished restore at 20-JUL-20

--这里不指定from路径就会报错,所以必须是指定到我们刚刚备份的目录下进行恢复,后面的话我还会详细介绍一下如何自动备份。
--执行完restore之后,我们试下启动数据库。
SQL> startup
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size             989857904 bytes
Database Buffers          603979776 bytes
Redo Buffers                7360512 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

--这里还是提示数据库无法启动,提示需要我们输入RESETLOGS的参数.
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/pas/system01.dbf'

--但还是不成功,这里就要回到👆上面提到recover的意义了,我们要补齐备份前到目前为止所缺失的一些数据,现在我们进行介质恢复(recover)。
RMAN> recover database;

Starting recover at 20-JUL-20
Starting implicit crosscheck backup at 20-JUL-20
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
....
Finished recover at 20-JUL-20

--出现finisned recover代表已经完成介质恢复(recover),我们接着再回到刚刚的步骤来启动数据库。
SQL> alter database open resetlogs;

Database altered.

SQL> select status from v$instance;

STATUS
-----------
OPEN

SQL> 
--数据库已通过将控制文件删除的情况下正常恢复了。

除此之外,我们还可以通过RMAN>restore controlfile from autobackup; 自动备份就不用再指定目录进行恢复,数据库会找到默认的备份路径进行恢复,但是有一点要注意:默认路径的备份文件就是备份的时候没有指定format的路径(backup current controlfile ),这里的控制文件也是需要先进行备份(不用指定路径)才可恢复,避免利用旧版本的控制文件进行恢复,会挺麻烦,要保证控制文件备份是最新的。

RMAN恢复数据文件

为了解决未来更多的实际情况,恢复数据文件我们通过两种不同的场景模拟恢复数据文件,我们分两种场景模拟恢复:
场景1: 数据文件丢失,但是目前未导致实例崩溃。
场景2: 数据文件丢失,导致实例无法启动

场景1

--首先我们创建一个新的表空间和数据文件作为后面的演示环境:
SQL> create tablespace xx datafile '/u01/xx.dbf' size 100m autoextend on next 5m maxsize 100m;

Tablespace created.

--我们查看一下数据库全局的数据文件以及表空间情况
select a.file_id,a.tablespace_name,a.file_name,b.status
from dba_data_files a,v$datafile b 
where a.file_id = b.file#;

1	SYSTEM	 /u01/app/oracle/oradata/pas/system01.dbf		SYSTEM
2	SYSAUX	 /u01/app/oracle/oradata/pas/sysaux01.dbf		ONLINE
3	UNDOTBS1 /u01/app/oracle/oradata/pas/undotbs01.dbf	ONLINE
4	USERS	 /u01/app/oracle/oradata/pas/users01.dbf		ONLINE
5	EXAMPLE	 /u01/app/oracle/oradata/pas/example01.dbf	ONLINE
6	XX		 /u01/xx.dbf									ONLINE

--通过RMAN备份刚刚创建的xx表空间对应的数据文件(这里我直接备份,跳过创建文件夹的目录(linux))。
RMAN> backup datafile 6 format '/u01/datafile/df6';

Starting backup at 20-JUL-20
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00006 name=/u01/xx.dbf
channel ORA_DISK_1: starting piece 1 at 20-JUL-20
channel ORA_DISK_1: finished piece 1 at 20-JUL-20
piece handle=/</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值