Oracle数据库备份与恢复(理解与实践)--rman的使用

备份

参考《Oracle备份和恢复(RMAN篇)》

在这里插入图片描述

恢复

在这里插入图片描述

rman

介绍

参考《oracle RMAN 简要介绍及使用》
1) 是对数据库进行备份和恢复操作并自动管理相关备份策略的客户端工具

2)其环境至少包含:

  • 目标数据库(target database):需要进行备份和恢复的数据库;通过target命令指定。
  • RMAN客户端:存放于$ORACLE_HOME/bin下的可执行程序

还可能包括:

  • 快速恢复区(fast recovery area):存放和管理备份恢复文件 的地方;通过 DB_RECOVERY_FILE_DEST和DB_DECOVERT_FILE_DEST_SIZE设置
  • 介质管理器:RMAN与介质设备打交道所需要的应用程序
  • 恢复目录(recovery catalog):单独的数据库方案,用于存储其管理的多个目标数据库

命令

1)show all 可查看当前配置
2)通过backup命令备份数据库;默认情况下将备份文件放到快速恢复区中,若要备份到其他路径,需要设置FORMAT参数。

#1)FORMAT:指定备份片段的存放路径和命名规则。
BACKUP  FORMAT '/u01/app/oracle/oradata/enmo1/AL_%d/%t/%s/%p'   ARCHIVELOG LIKE '%arc_dest%';
其中:%U获得系统分配的一个唯一名;%d为DB_NAME;%t备份设置的时间戳;%s为备份设置的编号;%p为备份片段编号。
#2)TAG:给备份片段指定一个标签,若不指定,则系统自动生成一个随机唯一标签。标签在备份原数据中总是以大写方式存储。
BACKUP  TAG 'weekly_full_db_bkup'   DATABASE MAXSETSIZE 10M;

增量备份例子:

backup incremental level 0 database;----0级增量备份,作为增量备份策略的基础
backup incremental level 1 cumulative database;----1级累积增量备份
backup incremental level 1 database;----1级差异增量备份

3)使用list列出RMAN备份信息

list backup of database by backup;
list backup by file;
list backup summary;
list expired backupset/copy;
list backup recoverable;

4)使用REPORT列出RMAN备份信息

REPORT NEED BACKUP DATABASE;--列出当前需要备份的数据文件
REPORT OBSOLETE;
REPORT SCHEMA;
REPORT UNRECOVERABLE;

rman操作

准备工作

1、因为rman工作在归档日志模式下,开启该模式

C:\Users\Administrator>sqlplus sys/password as sysdba

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

SQL> startup mount
ORACLE 例程已经启动。
···
数据库装载完毕。
SQL> alter database archivelog;
数据库已更改。

SQL> alter database open;
数据库已更改。

2、在D盘建立 rman文件夹,将文件夹的只读属性勾选去掉
3、新建表空间和用户

SQL> create tablespace rman_ts datafile 'd:/rman/rman.ora' size 20M autoextend on next 5M maxsize unlimited;
表空间已创建。

SQL> create user wj identified by password default tablespace rman_ts temporary tablespace temp;
用户已创建。

SQL> grant connect,resource to wj;
授权成功。

SQL> grant recovery_catalog_owner to wj;
授权成功。

备份

1、创建rman恢复目录

C:\Users\Administrator>rman catalog wj/password
恢复管理器: Release 11.2.0.1.0 - Production on 星期一 427 09:50:48 2020
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
连接到恢复目录数据库

RMAN> create  catalog  tablespace rman_ts;
恢复目录已创建

2、注册目标数据库到恢复目录

C:\Users\Administrator>rman catalog wj/password target /
恢复管理器: Release 11.2.0.1.0 - Production on 星期一 427 10:04:28 2020
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
连接到目标数据库: ORACLE (DBID=1907090180)
连接到恢复目录数据库

RMAN> register database;
注册在恢复目录中的数据库
正在启动全部恢复目录的 resync
完成全部 resync

备份通道可选择手动或自动,均可
3.1、自动备份分配通道

RMAN> configure device type disk parallelism 5;
新的 RMAN 配置参数:
CONFIGURE DEVICE TYPE DISK PARALLELISM 5 BACKUP TYPE TO BACKUPSET;
已成功存储新的 RMAN 配置参数
正在启动全部恢复目录的 resync
完成全部 resync

RMAN> configure default device type to disk;
新的 RMAN 配置参数:
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
已成功存储新的 RMAN 配置参数
正在启动全部恢复目录的 resync
完成全部 resync

3.2、手动备份分配通道

RMAN> run
2> {
3> allocate channel ch1 device type disk;
4> allocate channel ch2 device type disk;
5> allocate channel ch3 device type disk;
6> }

分配的通道: ch1
通道 ch1: SID=72 设备类型=DISK

分配的通道: ch2
通道 ch2: SID=135 设备类型=DISK

分配的通道: ch3
通道 ch3: SID=196 设备类型=DISK
释放的通道: ch1
释放的通道: ch2
释放的通道: ch3

4、开始备份
备份整个数据库和归档日志,不指定备份路径会被分到默认路径。

5.在归档模式备份数据库 1)若数据库开启归档,则数据库支持open状态进行RMAN备份,但此时的备份为非一致性备份,即在恢复时,需要使用到归档redo日志,才能使数据库恢复到一致性状态。
2)backup database plus archivelog;
6.在非归档模式下进行RMAN备份 1)在非归档模式下的数据库,只能进行一致性备份,备份前需要将数据库一致性关闭后,打开到mount状态,再进行备份。
2)shutdown immediate;

RMAN> backup database plus archivelog;

备份过程截图:
在这里插入图片描述
备份完成后在Oracle文件夹下的备份文件:
在这里插入图片描述


模拟故障user01.dbf丢失(自己删了试试)
在这里插入图片描述
测试数据库是否关闭

RMAN> shutdown immediate

数据库已关闭
数据库已卸装
Oracle 实例已关闭

???
为什么可以关闭
???

再试试退出登陆

C:\Users\Administrator>sqlplus sys/password as sysdba

SQL> alter database open;
alter database open
*1 行出现错误:
ORA-01157: 无法标识/锁定数据文件 4 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 4: 'D:\APP\ADMINISTRATOR\ORADATA\ORACLE\USERS01.DBF'

恢复

在mount下恢复 USERS01.DBF

1、restore database
还原到备份的时间点;
还原是指从所有的备份或镜像文件中找到一个用于恢复操作的数据文件。

C:\Users\Administrator>rman target sys/password
恢复管理器: Release 11.2.0.1.0 - Production on 星期一 427 10:59:59 2020
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
已连接到目标数据库: ORACLE (DBID=1907090180, 未打开)

RMAN> restore database;

运行结果:
在这里插入图片描述
2、recover database
通过redo log & archive log恢复 ;
恢复是指在还原的数据文件上应用redo日志或增量备份中记录的变化,使得数据文件向前滚到一个SCN值或者一个时间点。

RMAN> recover database;

启动 recover 于 27-4-20
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
使用通道 ORA_DISK_3
使用通道 ORA_DISK_4
使用通道 ORA_DISK_5
未处理数据文件 5, 因为文件是只读的

正在开始介质的恢复
介质恢复完成, 用时: 00:00:04

完成 recover 于 27-4-20

需要处理数据文件5

RMAN> recover datafile 5;

启动 recover 于 27-4-20
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
使用通道 ORA_DISK_3
使用通道 ORA_DISK_4
使用通道 ORA_DISK_5

正在开始介质的恢复
介质恢复完成, 用时: 00:00:00

完成 recover 于 27-4-20

查看文件下该文件已经恢复:
在这里插入图片描述
测试打开 数据库未报错:

此处需要注意的一点是,如果你的数据库并非处于归档模式,那么必须使用ALTER DATABASE OPEN RESETLOGS来打开数据库,
因为RMAN会认为在非归档模式下是一个不一致的备份,执行resetlogs之后,oracle将会把scn重新置为0。

在这里插入图片描述
数据库也可正常访问查询数据:
在这里插入图片描述

使用闪回数据库技术

1)想使用闪回数据库技术,需要先开启闪回日志功能。(闪回日志只能存放在快速恢复区中,并且不会进行归档)
2)闪回数据库不能用于介质恢复和修复数据文件的丢失。
3)闪回数据库需要在mount状态下进行。
4)命令:
shutdown immediate ;----调整至mount状态
startup mount;
flashback database to scn 1526845;----闪回到过去的某时刻
flashback database to restore point before_points;
flashback database to timestamp to_date(‘20140510’,‘yyyymmdd’);
alter database read only;----将数据库置为只读状态,进行验证
shutdown immediate;----若闪回后满足要求,启动数据库
startup mount;
alter database open resetlogs;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章