标题
Oracle 12c备份与恢复
一、简介
数据库备份与恢复是数据库管理员必须掌握的。没有任何系统能免遭硬盘物理损坏、粗心用户的错误操作、或一些可能会威胁到存储数据的潜在灾难的侵袭。为了能够最大限度地恢复数据库数据,保证数据库的安全运行,应该选择最合理的备份方法来防止各种故障所导致的用户数据丢失,本次主要介绍三种备份恢复技术,即RMAN技术、数据泵技术及闪回技术。
二、备份与恢复概述
1、需要备份的原因
现实工作中有很多情况都可能造成数据丢失,造成数据丢失的主要因素如下:
(1)介质故障:磁盘损坏、磁头碰撞,瞬时强磁场干扰
(2)用户的错误操作
(3)服务器的彻底崩溃
(4)计算机病毒
(5)不可预料的因素:自然灾害、电源故障、盗窃
根据原因,可以将oracle中的故障分为以下4种类型:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TZQwCJOi-1595472389464)(img/image-20200417112003352.png)]
(1)语句故障
语句故障时在执行sql语句过程中发生的逻辑故障。例如:向表中插入违反约束的无效数据,或者表空间没有空间了导致无法插入数据等。这时,应用人员或者DBA根据情况进行相应处理及可。
(2)用户进程故障
当用户程序出错而无法访问oracle数据库时,就会发生用户进程故障,原因是异常断开连接或终止进程,如果网络不通,客户端计算机以外重新启动,这些故障会导致用户进程与服务器的连接意外终止。
用户进程故障只会导致当前用户无法正常操作数据库,但不会影响其他用户进程。当用户进程出现故障时,进程监控程序(PMON)会自动执行进程恢复。PMON是oracle的后台进程,用于检测与用户进程失去连接的服务器进程。PMON会通过回滚事务来处理故障,还将释放进程当前占用的资源。
(3)实例故障
当oracle的数据库实例由于硬件故障或软件问题而无法继续运行时,就会发生实例故障。硬件问题包括意外断电,而软件问题可能是服务器操作系统崩溃。
当重新启动数据库时,如果发现实例故障,oracle会自动完成实例恢复。实例恢复将数据库恢复到与故障之前的事务一致的状态,oracle会自动回滚未提交的数据。
(4)介质故障
介质故障是当一个数据库文件、文件的部分或磁盘不能读或不能写时出现的故障。例如:硬盘磁头损坏会导致而数据库文件完全损坏。要修复由于介质故障引起的数据库文件损坏,需要使用介质恢复。
2、备份与恢复的定义与分类
(1)备份的定义与分类
备份就是把数据库复制到转储设备的过程。其中转储设备是指用于放置数据库副本的磁带或磁盘。从不同的角度分类如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4kJgcsfB-1595472389468)(img/image-20200417112352731.png)]
1)从物理与逻辑角度分类
从物理与逻辑角度分,备份可以分为物理备份和逻辑备份。
物理备份:
对数据库操作系统的物理文件(如数据文件、控制文件和日志文件)的备份。物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数据库的时候进行的,后者对正以归档日志方式运行的数据库进行备份。可以使用oracle的恢复管理器(RMAN)或操作系统命令进行数据库的物理备份。
逻辑备份:
对数据库逻辑组件(如表和存储过程等数据库对象)的备份。逻辑备份的手段很多,如传统的EXP、数据泵EXPDP、数据库闪回技术及第三方工具,都可以进行数据库的逻辑备份。
2)从数据库的备份策略角度分类
完全备份:
每次对数据进行完整的备份。当发生数据丢失的灾难情况时,完全备份无须依赖其他信息,即可实现100%数据恢复,其恢复时间最短且操作最方便。
增量备份:
只有那些在上次完全备份或者增量备份后被修改的文件才会备份。优点是备份数据量小,需要的时间短,缺点是恢复的时候需要依赖之前的备份记录,出问题的风险较大。
差异备份:
备份那些自从上次完全备份之后被修改过的文件。从差异备份中恢复数据库时间较短,因此只需要两份数据(最后一次完全备份和最后一次差异备份),缺点是每次备份需要的时间较长。
(2)恢复的定义与分类
恢复就是发生故障后,利用已备份的数据或控制文件,重新建立一个完整的数据库。恢复分为以下两种类型。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NadyphIj-1595472389470)(img/image-20200417112857941.png)]
1)实例恢复:
当oracle实例出现失败后,oracle自动进行的恢复。
2)介质恢复:
当存放数据库的介质出现故障时所做的恢复。介质恢复又分为完全恢复和不完全恢复。
完全恢复:
将数据库恢复到数据库失败时的状态。这种恢复是通过装载数据库备份,并用全部的重做日志做到的。
不完全恢复:
将数据库恢复到数据库失败前的某一时刻的状态。这种恢复是通过装载数据库备份并应用部分的重做日志做到的。进行不完全恢复后,必须在启动数据库时用resetlogs选项重设联机重做日志。
三、使用RMAN工具
RMAN(recovery manager)即恢复管理器,是oracle的一个重要工具,用于备份和恢复数据库文件、归档日志和控制文件。也可以用来执行完全或不完全的数据库恢复。
RMAN有3种不同的用户接口:命令行方式,GUI方式(集成在OEM中的备份管理器)、api方式(用于集成到第三方的备份软件中)。它具有如下优点:
(1)支持在线热备份
(2)支持多级增量备份
(3)支持并行备份、恢复
(4)减少所需要的备份量
(5)备份、恢复使用简单
RMAN有丰富的特性集。随着oracle新版本的发布,RMAN特性也不断增强,使得RMAN几乎在任何情况下都可以备份和恢复数据库。其中很多的新特性都是针对日常工作中所遇到的问题和困难开发的。
1、RMAN组件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KMEx2cfP-1595472389474)(img/image-20200417114133751.png)]
(1)target database(目标数据库)
目标数据库就是需要RMAN对其进行备份与恢复的数据库。RMAN可以备份数据文件、控制文件、归档日志文件、spfile。
(2)server session(服务器会话)
RMAN启动数据库上的oracle服务器进程,并建立一个与目标数据库的会话。由目标数据库上的服务器进程进行备份、还原、恢复的实际操作。
(3)RMAN repository(RMAN资料库)
RMAN使用过程中会用到的控制信息,是一些关于备份、归档日志及RMAN活动的元数据。
(4)recovery catalog(恢复目录)
恢复目录是建立在RMAN恢复目录数据库上的一种schema对象,用于保存RMAN资料库数据。
恢复目录是一个可选的组件。RMAN会将资料库数据记录在目标数据库的控制文件中,但这样不够安全,因为一旦目标数据库的控制文件损坏就意味着所有的RMAN备份失效。所以建议在单独的一个数据中建立恢复目录另外保存一份资料库数据。
对于大部分中等环境的企业环境,将RMAN备份信息存储在恢复目录数据库中,而不是存储在目标数据库的控制文件中,这样能够发挥RMAN工具的全部功能,此外,RMAN的很多高级功能也只有在创建了恢复目录的环境下才被支持。
(5)MML(媒体管理库)
MML(media management layer)是第三方工具或软件,用于管理对磁带的读写与文件的跟踪管理,如果你要想直接通过RMAN备份到磁带上,就必须配置媒体管理层,媒体管理层的工具和RMAN共同完成备份与恢复。
(6)快闪恢复区
快闪恢复区是oracle数据库用于保存所有与恢复相关的文件的默认磁盘位置。这些相关文件包括归档日志、RMAN备份、控制文件自动备份、复用的控制文件和重做日志副本及闪回日志文件。
(7)辅助数据库
在正常使用时,RMAN会与目标数据库一起使用,如果创建了恢复目录数据库,那么也会与恢复目录数据库一起使用。在某些情况下,希望创建辅助数据库,辅助数据库是使用RMAN从目标数据库的备份中创建新的数据库。辅助数据库能被创建作为备用数据库使用。在产品数据库发生灾难时,能够在不丢失任何数据及停机时间最短的情况下切换至备用数据库。
2、创建恢复目录
恢复目录存在于RMAN的目录数据库中,类似于标准的数据库目录,主要包含如下几个部分的信息:
(1)备份和恢复信息,可以是多个目标数据库
(2)RMAN脚本,可以存储供重复使用
(3)关于数据文件和日志文件的本分信息
(4)关于目标数据库的表空间和数据文件的信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qsfqspUO-1595472389476)(img/image-20200417114620067.png)]
实际环境中,建议目标数据库和回复目录数据库为不同的服务器,出于实验目的,也可以同一个服务器上操作。下面介绍创建恢复目录的具体步骤。
(1)创建表空间
切换到oracle用户
[root@192 ~]# su oracle
[oracle@192 root]$ mkdir /orc/app/oracle/oradata/rmandb
[oracle@192 oradata]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on 星期四 4月 16 17:01:09 2020
Copyright (c) 1982, 2014, Oracle. All rights reserved.
连接到:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> create tablespace rmants datafile '/orc/app/oracle/oradata/rmandb/rmants.dbf' size 20M;
(2)在恢复目录数据库中创建RMAN用户并授权
创建RMAN用户的操作如下:
SQL> create user c##rman identified by rman default tablespace rmants temporary tablespace temp quota unlimited on rmants;
create user c##rman identified by rman
*
第 1 行出现错误:
ORA-65048: 在可插入数据库 PDBORCL 中处理当前 DDL 语句时出错 ORA-00959: 表空间
'RMANTS' 不存在
SQL> shutdown abort;
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 763363328 bytes
Fixed Size 2929064 bytes
Variable Size 566234712 bytes
Database Buffers 188743680 bytes
Redo Buffers 5455872 bytes
数据库装载完毕。
数据库已经打开。
SQL> create user c##rman identified by rman
2 default tablespace rmants
3 temporary tablespace temp
4 quota unlimited on rmants;
用户已创建。
给RMAN用户授权的操作如下:
SQL> grant connect,resource to c##rman;
授权成功。
SQL> grant recovery_catalog_owner to c##rman;
授权成功。
(3)在恢复目录数据库中创建恢复目录
创建恢复目录的操作如下:
[oracle@192 root]$ rman catalog c##rman/rman
恢复管理器: Release 12.1.0.2.0 - Production on 星期四 4月 16 17:27:38 2020
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
连接到恢复目录数据库
RMAN> create catalog;
恢复目录已创建
在Oracle 12c中,RMAN>提示符下也可以执行sql语句。
3、注册目标数据库到恢复目录
登录目标数据库,如果要对目标数据库进行注册,可以按照以下操作进行。
rman target sys/123456
connect catalog c##rman/rman;
register database;
执行过程如下:
[oracle@192 root]$ rman target sys/123456
恢复管理器: Release 12.1.0.2.0 - Production on 星期四 4月 16 17:30:56 2020
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ORCL (DBID=1565653210)
RMAN> connect catalog c##rman/rman;
连接到恢复目录数据库
RMAN> register database;
注册在恢复目录中的数据库
正在启动恢复目录的全部重新同步
完成全部重新同步
在Oracle 12c中,执行RMAN备份的数据库用户不一定是sys用户,也可以使用普通用户授予sysbackup角色。例如:
SQL> create user c##tom identified by tom;
SQL> grant sysbackup to c##tom;
[oracle@192 root]$ rman target c##tom/tom
至此,完成了目标数据库在恢复目录中的注册操作,现在可以使用RMAN的恢复目录对目标数据库进行备份和恢复操作。
练习1:RMAN恢复目录
实现步骤:
创建恢复目录
创建恢复目录数据库
在恢复目录数据库中创建RMAN 用户并授权
在恢复目录数据库中创建恢复目录
注册目标数据库到恢复目录
进入RMAN环境
连接目标数据库
连接恢复目录数据库
注册
4、通道分配
使用RMAN进行备份和恢复操作时,必须进行通道的分配,一个通道是RMAN和目标数据库之间的一个连接,通道指定了某种类型的设备用于备份和恢复,RMAN可以使用的通道设备包括磁盘与磁带两种。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vOvlozWo-1595472389479)(img/image-20200417115952844.png)]
(1)自动通道配置
使用configure命令配置自动通道,语法格式如下:
# 指定自动通道的并行个数
CONFIGURE DEVICE TYPE sbt/disk PARALLELISM n;
# 指定自动通道的默认设备
CONFIGURE DEFAULT DEVICE TYPE TO sbt/disk;
例如:指定RMAN可以打开5个磁盘通道,具体操作如下:
RMAN> configure device type disk parallelism 5;
新的 RMAN 配置参数:
CONFIGURE DEVICE TYPE DISK PARALLELISM 5 BACKUP TYPE TO BACKUPSET;
已成功存储新的 RMAN 配置参数
正在启动恢复目录的全部重新同步
完成全部重新同步
RMAN> configure default device type to disk;
新的 RMAN 配置参数:
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
已成功存储新的 RMAN 配置参数
正在启动恢复目录的全部重新同步
完成全部重新同步
(2)手动通道配置
在run块中使用allocate channel手动分配通道,其语法格式如下:
run
{
allocate channel 通道名称 device type 设备类型;
}
例如:指定3个磁盘通道,分别是ch1、ch2、ch3,具体操作如下:
RMAN> run
{
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
allocate channel ch3 device type disk;
}
分配的通道: ch1
通道 ch1: SID=250 设备类型=DISK
分配的通道: ch2
通道 ch2: SID=367 设备类型=DISK
分配的通道: ch3
通道 ch3: SID=14 设备类型=DISK
释放的通道: ch1
释放的通道: ch2
释放的通道: ch3
(3)显示通道配置参数
使用show all命令可以显示已经配置过的和有默认值的参数,其中包括通道参数。具体操作操作如下:
RMAN> show all;
db_unique_name 为 ORCL 的数据库的 RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 5 BACKUP TYPE TO BACKUPSET;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/orc/app/oracle/product/12.1.0/dbhome_1/dbs/snapcf_orcl.f'; # default
练习2:RMAN通道配置
5、备份与恢复的相关概念
(1)备份集与备份片
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4mwPzJMz-1595472389480)(img/image-20200417120808976.png)]
1)备份集
备份集:备份集是第一次备份的集合,它包含本次备份的所有备份片,以oracle专有的格式保存,是一个逻辑数据的集合。
2)备份片
备份片:一个备份集由若干个备份片组成,每个备份片是一个单独的输出文件,一个备份片的大小是有限制的,它的大小不能大于文件系统所支持的文件长度的最大值。
(2)配置备份集文件的格式
使用BACKUP命令进行备份时,需要明确备份文件的存储路径及文件名称格式。其路径和格式可以使用FORMAT参数进行统一设置。FORMAT格式由两部分组合,即存储路径和文件名称。
如果没有使用FORMAT指定存储路径和文件名称格式,则默认情况下BACKUP所产生的备份集将存储在快闪恢复区中,RMAN自动使用%U来确保文件名称不会重复。
FORMAT命令格式如下:
FORMAT ‘格式字符串’
其中格式字符串的文件名称部分可以使用替换变量,例如:FORMAT ‘/backup/rmanback/%U’。
常用的替换变量如下:
%c:备份片的拷贝数
%d:数据库名称
%D:位于该月中的第几天(DD)
%M:位于该年中的第几月(MM)
%F:一个基于DBID的唯一的名称,它的形式为C-||||||-YYYYMMDD-QQ。其中||||||为该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列。
%n:数据库名称,向右填补到最大8个字符
%u:一个8个字符的名称,它是根据备份集个数与创建时间信息成成的。
%p:该备份集的备份片号,从1开始到创建的文件数
%U:系统生成的一个唯一文件名,对于备份片来说,它的含义相当于%u%p%c。
%s:备份集的号
%t:备份集时间戳
%T:年月日格式(YYYYMMDD)
如果没有使用FORMAT指定存储路径和文件名称格式,则默认情况下BACKUP命令所产生的备份集存储在快闪恢复区中,RMAN自动使用%U来确保文件名不会重复。
6、备份与恢复命令
(1)BACKUP命令用于备份数据库文件,可以将多个文件、表空间,整个数据库以备份集形式备份到磁盘或磁带上。在RUN命令外使用BACKUP命令,会自动使用自动通道;在RUN命令内使用BACKUP命令,如果定义了手动通道,则优先使用手动定义通道。
(2)使用RMAN备份的数据库也只能使用RMAN提供的恢复命令进行恢复。RMAN的恢复目录中存储了目标数据库的备份信息。RMAN根据恢复目录中存储的信息,自动将数据库同步恢复到某一个数据一致的状态。
RMAN恢复数据库时用到两个命令,即restore和recover。restore命令将备份数据恢复到指定的目录,recover命令对数据库实施同步恢复。
restore命令:由于备份集中的备份片是以专有的RMAN格式存储的,需要使用restore命令进行重建,重建的结果是自动产生目标数据库的物理文件结构。
recover命令:负责把归档日志文件用于重建的数据文件,来完成数据库的同步恢复。在执行recover命令时,RMAN需要读取归档日志,如果没有归档日志,或者数据库运行在非归档模式下,则恢复过程会报错。
案例1:在归档方式下备份与恢复(完全恢复)
要用RMAN进行联机备份操作,需要具备几个条件,如下所示:
1. 数据库必须位于归档方式
2. 恢复目录必须打开
3. 目标数据库实例必须启动
4. 数据库已加载或者打开
(1)开启归档模式
在用RMAN备份oracle数据库时,提示“在 NOARCHIVELOG 模式下不能执行 BACKUP DATABASE”,需要将数据库由非存档模式(NOARCHIVELOG)转为存档模式(ARCHIVELOG)
首先 sqlplus / as sysdba 进入 sqlplus,然后依次执行下列命令
# 查看数据库归档模式,可以看到为“非存档模式”
SQL> archive log list;
# 开启归档模式需要数据库在mount状态下进行配置,因此先关闭数据库
SQL> shutdown immediate;
# 启动到mount状态下
SQL> startup mount
# 设置数据库为归档模式
SQL> alter database archivelog;
# 启动数据库
SQL> alter database open;
# 查看数据库归档模式,可以看到归档模式已打开,路径为DB_RECOVERY_FILE_DEST参数所指定的路径
SQL> archive log list;
(2)整个数据库的备份与恢复
基本的数据库备份命令
基本的数据库备份命令如下:
RMAN> backup database;
执行以上命令,自动分配通道,FORMAT默认使用%U,备份集存储在数据库快闪恢复区内,备份文件包括数据文件,控制文件,重做日志文件和参数文件。
查看快闪恢复区,发现备份成功了。如下所示:
[oracle@192 root]$ ls /orc/app/oracle/fast_recovery_area/ORCL/backupset/
2020_04_17
多种参数组合备份数据库
(1)如果还要包含归档日志文件,则要加上plus archivelog关键字,delete input的意思是在备份完成后,删除archivelog文件。如下所示:
RMAN> backup database plus arvhicelog delete input;
(2)自动分配通道备份数据库(需要提前创建备份目录),通过FORMAT制定具体的路径和格式。如下所示:
# 创建bak目录
[oracle@192 root]$ mkdir /orc/app/bak
RMAN> backup database format '/orc/app/bak/%U';
(3)手动分配通道,备份数据库。如下所示:
RMAN> run
{
allocate channel ch1 device type disk;
backup database format '/orc/app/bak/%U';
release channel ch1;
}
恢复整个数据库
全库备份的恢复,数据库要在mount的状态下执行。
关键命令
RMAN> rman target sys/123456
RMAN> shutdown immediate
RMAN> startup mount
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open;
恢复演示
删除删除sysaux01.dbf
[oracle@192 root]$ rm -rf /orc/app/oracle/oradata/orcl/sysaux01.dbf
再次开启数据库实例
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 763363328 bytes
Fixed Size 2929064 bytes
Variable Size 566234712 bytes
Database Buffers 188743680 bytes
Redo Buffers 5455872 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 3 - 请参阅 DBWR 跟踪文件 ORA-01110:
数据文件 3: '/orc/app/oracle/oradata/orcl/sysaux01.dbf'
此时数据库无法启动了,因为删除了system01.dbf。
使用sys连接RMAN。
[oracle@192 root]$ rman target sys/123456
恢复管理器: Release 12.1.0.2.0 - Production on 星期五 4月 17 12:41:51 2020
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ORCL (DBID=1565653210, 未打开)
RMAN> restore database;
启动 restore 于 17-4月 -20
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=355 设备类型=DISK
分配的通道: ORA_DISK_2
通道 ORA_DISK_2: SID=6 设备类型=DISK
分配的通道: ORA_DISK_3
通道 ORA_DISK_3: SID=126 设备类型=DISK
分配的通道: ORA_DISK_4
通道 ORA_DISK_4: SID=244 设备类型=DISK
分配的通道: ORA_DISK_5
通道 ORA_DISK_5: SID=361 设备类型=DISK
正在略过数据文件 5; 已还原到文件 /orc/app/oracle/oradata/orcl/pdbseed/system01.dbf
正在略过数据文件 7; 已还原到文件 /orc/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf
正在略过数据文件 8; 已还原到文件 /orc/app/oracle/oradata/orcl/pdborcl/system01.dbf
正在略过数据文件 9; 已还原到文件 /orc/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf
正在略过数据文件 10; 已还原到文件 /orc/app/oracle/oradata/orcl/pdborcl/SAMPLE_SCHEMA_users01.dbf
正在略过数据文件 11; 已还原到文件 /orc/app/oracle/oradata/orcl/pdborcl/example01.dbf
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00001 还原到 /orc/app/oracle/oradata/orcl/system01.dbf
通道 ORA_DISK_1: 将数据文件 00004 还原到 /orc/app/oracle/oradata/orcl/undotbs01.dbf
通道 ORA_DISK_1: 将数据文件 00012 还原到 /orc/app/oracle/oradata/rmandb/rmants.dbf
通道 ORA_DISK_1: 正在读取备份片段 /orc/app/bak/18utrve8_1_1
通道 ORA_DISK_2: 正在开始还原数据文件备份集
通道 ORA_DISK_2: 正在指定从备份集还原的数据文件
通道 ORA_DISK_2: 将数据文件 00006 还原到 /orc/app/oracle/oradata/orcl/users01.dbf
通道 ORA_DISK_2: 正在读取备份片段 /orc/app/bak/1duts0bc_1_1
通道 ORA_DISK_3: 正在开始还原数据文件备份集
通道 ORA_DISK_3: 正在指定从备份集还原的数据文件
通道 ORA_DISK_3: 将数据文件 00003 还原到 /orc/app/oracle/oradata/orcl/sysaux01.dbf
通道 ORA_DISK_3: 正在读取备份片段 /orc/app/oracle/fast_recovery_area/ORCL/backupset/2020_04_17/o1_mf_nnndf_TAG20200417T101455_h9l48zg9_.bkp
通道 ORA_DISK_2: 段句柄 = /orc/app/bak/1duts0bc_1_1 标记 = TAG20200417T100531
通道 ORA_DISK_2: 已还原备份片段 1
通道 ORA_DISK_2: 还原完成, 用时: 00:00:01
通道 ORA_DISK_3: 段句柄 = /orc/app/oracle/fast_recovery_area/ORCL/backupset/2020_04_17/o1_mf_nnndf_TAG20200417T101455_h9l48zg9_.bkp 标记 = TAG20200417T101455
通道 ORA_DISK_3: 已还原备份片段 1
通道 ORA_DISK_3: 还原完成, 用时: 00:00:07
通道 ORA_DISK_1: 段句柄 = /orc/app/bak/18utrve8_1_1 标记 = TAG20200417T094945
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:15
完成 restore 于 17-4月 -20
同步恢复:
RMAN> recover database;
打开数据库
RMAN> alter database open;
sysaux01.dbf表空间已经被恢复了
[oracle@192 root]$ ls /orc/app/oracle/oradata/orcl/
control01.ctl pdbseed redo02.log sysaux01.dbf temp01.dbf users01.dbf
pdborcl redo01.log redo03.log system01.dbf undotbs01.dbf
(3)表空间的备份与恢复
表空间备份:
RMAN> backup tablespace users;
在run命令中备份表空间:
RMAN> run
{
allocate channel ch1 device type disk;
backup tablespace users format '/orc/app/bak/%U';
release channel ch1;
}
恢复表空间:
如果值丢失了特定的表空间的数据文件,那么可以选择值恢复这个表空间,而不是恢复整个数据库。表空间恢复可以在不关闭数据库的情况下进行,只需要将需要恢复的表空间offline
RMAN> run
{
alter tablespace users offline immediate;
restore tablespace users;
recover tablespace users;
alter tablespace users online;
}
(4)数据文件的备份与恢复
SQL> col file_id for 9999999
SQL> col file_name for a50
SQL> select file_id,file_name from dba_data_files;
FILE_ID FILE_NAME
-------- --------------------------------------------------
1 /orc/app/oracle/oradata/orcl/system01.dbf
3 /orc/app/oracle/oradata/orcl/sysaux01.dbf
4 /orc/app/oracle/oradata/orcl/undotbs01.dbf
6 /orc/app/oracle/oradata/orcl/users01.dbf
12 /orc/app/oracle/oradata/rmandb/rmants.dbf
# 备份3号数据文件
RMAN> backup datafile 3;
RMAN> exit
# 模拟3号文件丢失
[oracle@192 root]$ rm -rf /orc/app/oracle/oradata/orcl/sysaux01.dbf
# 恢复3号文件
[oracle@192 root]$ rman target sys/123456
RMAN> alter tablespace sysaux offline immediate;
RMAN> restore datafile 3;
RMAN> recover datafile 3;
RMAN> alter tablespace sysaux online;
RMAN> exit
[oracle@192 root]$ ll /orc/app/oracle/oradata/orcl/
总用量 2189008
-rw-r-----. 1 oracle oinstall 17973248 4月 17 10:18 control01.ctl
drwxr-x---. 2 oracle oinstall 148 4月 16 10:09 pdborcl
drwxr-x---. 2 oracle oinstall 94 4月 16 09:55 pdbseed
-rw-r-----. 1 oracle oinstall 52429312 4月 17 09:59 redo01.log
-rw-r-----. 1 oracle oinstall 52429312 4月 17 09:59 redo02.log
-rw-r-----. 1 oracle oinstall 52429312 4月 17 10:17 redo03.log
-rw-r-----. 1 oracle oinstall 713039872 4月 17 10:17 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 828383232 4月 17 10:17 system01.dbf
-rw-r-----. 1 oracle oinstall 206577664 4月 17 10:11 temp01.dbf
-rw-r-----. 1 oracle oinstall 356524032 4月 17 10:16 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 5251072 4月 17 10:07 users01.dbf
案例2:备份与恢复(不完全恢复)
四、使用数据泵技术实现逻辑备份
逻辑备份是创建数据库对象的逻辑副本,并存入一个二进制转储文件的过程。从本质上说,逻辑备份与恢复实际就是对数据库实施数据的导入和导出。
导出:
导出即数据库的逻辑备份,实质是读取一个数据库集并将这个数据集写入一个文件(扩展名通常是dmp),这些记录的导出与物理位置无关。
导入:
导入及数据库的逻辑恢复,实质是读取被导出的二进制转储文件并将其恢复到数据库。
1、使用数据泵技术导入/导出
数据泵(data pump)是一种在数据库之间或在数据库与操作系统之前高速传输的技术。数据泵工具运行在服务器上,数据库管理员需要指定数据库目录来保存转储的数据。
4月 17 09:59 redo02.log
-rw-r-----. 1 oracle oinstall 52429312 4月 17 10:17 redo03.log
-rw-r-----. 1 oracle oinstall 713039872 4月 17 10:17 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 828383232 4月 17 10:17 system01.dbf
-rw-r-----. 1 oracle oinstall 206577664 4月 17 10:11 temp01.dbf
-rw-r-----. 1 oracle oinstall 356524032 4月 17 10:16 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 5251072 4月 17 10:07 users01.dbf
##### 案例2:备份与恢复(不完全恢复)
### 四、使用数据泵技术实现逻辑备份
逻辑备份是创建数据库对象的逻辑副本,并存入一个二进制转储文件的过程。从本质上说,逻辑备份与恢复实际就是对数据库实施数据的导入和导出。
导出:
导出即数据库的逻辑备份,实质是读取一个数据库集并将这个数据集写入一个文件(扩展名通常是dmp),这些记录的导出与物理位置无关。
导入:
导入及数据库的逻辑恢复,实质是读取被导出的二进制转储文件并将其恢复到数据库。
1、使用数据泵技术导入/导出
数据泵(data pump)是一种在数据库之间或在数据库与操作系统之前高速传输的技术。数据泵工具运行在服务器上,数据库管理员需要指定数据库目录来保存转储的数据。
基于命令行的数据泵导出步骤如下