一、 备份的定义及分类
1.1备份的定义:
备份就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库副本的磁带或磁盘。
通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。
1.2备份分类:备份是一份数据副本,从不同的角度分类如下:
1.2.1 从物理与逻辑的角度来分类,备份可以分为物理备份和逻辑备份。
(1) 物理备份(RMAN):
对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。
物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),
a.脱机备份(冷备份)是在关闭数据库的时候进行的,
b.联机备份(热备份)是以归档日志的方式对运行的数据库进行备份。
可以使用oracle的恢复管理器(RMAN)或操作系统命令进行数据库的物理备份。
(2)逻辑备份(EXP,EXPDP等):
对数据库逻辑组件(如表和存储过程等数据库对象)的备份。
逻辑备份的手段很多,如传统的EXP,数据泵(EXPDP),数据库闪回技术等第三方工具,都可以进行数据库的逻辑备份。
1.2.2 从数据库的备份角度分类:备份可以分为完全备份、增量备份、差异备份
(1) 完全备份:
每次对数据库进行完整备份,当发生数据丢失的灾难时,完全备份无需依赖其他信息即可实现100%的数据恢复,其恢复时间最短且操作最方便。
(2) 增量备份:
只有那些在上次完全备份或增量备份后被修改的文件才会被备份。优点是备份数据量小,需要的时间短,缺点是恢复的时候需要依赖以前备份记录,出问题的风险较大。
(3) 差异备份:
备份那些自从上次完全备份之后被修改过的文件。从差异备份中恢复数据的时间较短,因此只需要两份数据---最后一次完整备份和最后一次差异备份,缺点是每次备份需要的时间较长。
二、 恢复的定义及分类
2.1.恢复的定义
恢复就是发生故障后,利用已备份的数据文件或控制文件,重新建立一个完整的数据库,恢复分为以下两种类型:
2.1.1 实例恢复:
当oracle实例出现失败后,oracle自动进行的恢复
2.1.2 介质恢复:
当存放数据库的介质出现故障时所作的恢复。
介质恢复又分为完全恢复和不完全恢复
(1)完全恢复:
将数据库恢复到数据库失败时的状态。这种恢复是通过装载数据库备份并应用全部的重做日志做到的。
(2)不完全恢复:
将数据库恢复到数据库失败前的某一时刻的状态。这种恢复是通过装载数据库备份并应用部分的重做日志做到的。进行不完全恢复后,必须在启动数据库时用resetlogs选项重设联机重做日志。
三、RMAN
3.1RMAN的存储类型有三种方式:
3.1.1 备份集 默认类型
3.1.2 压缩备份集
3.1.3 镜像copy
组成每个备份集的每个文件称之为备份片。
3.2 RMAN备份可以存放在两种位置:
3.2.1 目标数据库的控制文件
3.2.2 恢复目录中
3.3 RMAN备份的优点:
3.3.1 RMAN只备份有效数据
3.3.2 RMAN可以实现增量备份
四、使用RMAN工具
4.1 RMAN是oracle的一个重要工具,用于备份和恢复数据文件,归档日志和控制文件,也可以用来执行完全或不完全的数据库恢复。
RMAN有3种不同的用户接口,命令行方式,GUI方式(集成在OEM中的备份管理器),API方式(用于集成到第三方的备份软件中),它具有以下特点:
(1)支持在线热备份
(2)支持多级增量备份
(3)支持并行备份、恢复
(4)减少所需要备份量
(5)备份、恢复使用简单
4.2 RMAN的组件
4.2.1 target database(目标数据库)
目标数据库就是需要RMAN 对其进行备份与恢复的数据库,RMAN可以备份数据文件,控制文件,归档日志,spfile;
4.2.2 service session(服务器会话)
RMAN启动数据库上的oracle服务器进程,将建立一个与目标数据库的会话,有目标数据库上的服务器进程进行备份、还原、恢复的实际操作。
4.2.3 RMAN Repository(RMAN资料库)
RMAN使用过程中会用到的控制信息,是一些关于备份、归档日志及RMAN活动的元数据
4.2.4 Recovery Catalog(恢复目录)(详解:https://www.topunix.com/post-818.html)
恢复目录是建立在RMAN恢复目录数据库上的一种schema对象,用于保存RMAN资料库数据。恢复目录是一个可选的组件。
RMAN会将资料数据记录在目标数据库的控制文件中,但这样不够安全,因为一旦目标数据库的控制文件损坏就意味着所有的RMAN备份失效。所以建议在单独的一个数据库中建立一个恢复目录另外保存一份资料库数据。
(转)首先理解什么是catalog 恢复目录,实际上就是把数据库的一部分分出来作为catalog,来长时间存备份信息,在实际生产中,有时候会遇到要恢复数据库到一年或是更长时间之前的状态,我们知道控制文件存在很多重要的数据库结构信息,但是你的控制文件早已经被覆盖,你就不能完成任务,而catalog就不一样了,它可以保存很长时间,当然它也不只是可以存控制文件,也可以存别的备份副本,你可以把它简单的理解成保存时间长的控制文件,已经在控制文件清除的信息,重新加载回来。
4.2.5 MML(媒体管理库)
MML是第三方工具或软件,用于管理对磁带的读写与文件的跟踪管理。如果你想直接通过RMAN备份到磁带上,就必须配置媒体管理层,媒体管理层的工具和RMAN共同配合完成备份与恢复。
4.2.6 快闪恢复区
快闪恢复区是oracle数据库用于保存所有与恢复相关的文件的默认磁盘位置。这些相关文件包括归档日志,RMAN备份,控制文件自动备份,复用的控制文件和重做日志副本及闪回日志文件。
4.2.7 辅助数据库(类似于备用数据库)
在正常使用时,RMAN会与目标数据库一起使用,如果创建了恢复目录数据库,那么也会与恢复目录数据库一起使用。
在某些情况下,希望创建辅助数据库。辅助数据库时使用RMAN从目标数据库的备份中创建的新数据库。辅助数据库能够被创建作为备用数据库使用。在数据库发生灾难时,能够在不丢失任何数据及停机时间最短的情况下切换至备用数据库。
4.3 创建恢复目录
4.3.1 恢复目录存在于RMAN的目录数据库中,类似于标准的数据库目录,主要包含如下几个部分信息:
(1)备份恢复信息,可以是多个目标数据库
(2)RMAN脚本,可以存储重复使用
(3)关于数据文件和日志文件的备份信息
(4) 关于目标数据库的表空间和数据文件信息
(5)RMAN资料库可以存放在目标数据库控制文件里,也可以存放在恢复目录中;
4.3.2 创建恢复目录
(1)创建恢复目录路径(恢复目录放在ORACLEOGG2主机上):
[oracle@ORACLEOGG2 ~]$ mkdir -P /data/oradata_rman/
创建恢复目录:用来存储RMAN资料库的。( #目标库和catalog库可以为同一个库,但是实际上是没有意义的,因为你库打不开时,是无法使用catalog的,所以catalog恢复目录一般建议在其他数据库上创建,相当于做异机备份)
SQL>create tablespace tbs_rman datafile '/data/oradata_rman/rmante.dbf' size 20m autoextend on next 5m maxsize unlimited;
(2)在恢复目录数据库中创建RMAN用户并授权
SQL>create user rmantest_ogg2 identified by oracle default tablespace tbs_rman quota unlimited on tbs_rman ;
SQL>grant connect,resource,recovery_catalog_owner to rmantest_ogg2 ;
(3)连接到RMAN恢复目录数据库(在目标服务器(也就是要备份的资料库数据的服务器)ORACLEOGG1上,通过rman连接到ORACLEOGG2恢复目录数据库中,其中orclogg2即为tnsnames.ora中开头的名字)
[oracle@ORACLEOGG1 ~]$ rman catalog rmantest/oracle@orclogg2
(4)创建恢复目录
RMAN> create catalog tablespace tbs_rman;
(5)连接到目标数据库和恢复目录(此语句在target端登录或者在catalog端登录,都可以)
[oracle@ORACLEOGG1 admin]$ rman target sys/oracle@ORCLOGG1 catalog rmantest_ogg2/oracle@ORCLOGG2
(6)将目标数据库注册到恢复目录
向恢复目录注册数据库ORCL,提示已经启动全部恢复目录的resync,已完成全部的resync。此时就可以使用RMAN的恢复目录对目标数据库进行备份和恢复操作。
(7)查看已经注册的目标库(在ogg2中的数据库中查到了ogg1的资料库信息)
4.4 通道的分配
使用RMAN进行备份和恢复时,必须进行通道的分配,一个通道是RMAN和目标数据库之间的一个连接,通道指定了某种类型的设备用于备份和恢复,RMAN可以使用的通道设备包括磁盘与磁带两种。
通道分配可以自动或手动进行
a.自动通道配置
RMAN>configure device type disk paralielism 5;
RMAN>configure default device type to disk;
b.手动通道配置
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>}
可以使用show all命令可以显示已经配置过的有默认值的参数,其中包括通道参数
RMAN>show all;
五、备份与恢复的概念与操作
5.1 备份集与备份片
5.1.1 备份集(backup set)
备份集是一次备份的集合,它包含本次备份的所有备份片,以oracle专有的格式保存,是一个逻辑数据的集合。
5.1.2 备份片:
一个备份集由若干个备份片组成。每个备份片是一个单独输出文件,一个备份片的大小是有限制的,他的大小不能大于文件系统所支持的文件长度的最大值。
5.2 配置备份集文件的格式:
使用backup命令进行备份时,需要明确备份文件的存储路径及文件名称的格式。
(1)使用FORMAT格式:路径和格式可以使用FORMAT参数进行统一设置,FORMAT格式由两部分组成:即存储路径和文件名称格式;
(2)没有使用FORMAT指定存储路径和文件名称格式,则默认情况下BACKUP所产生的备份集将存储在快闪恢复区中,RMAN自动使用%U来确定文件名称不会被重复。
5.3 FORMAT命令格式如下:
FORMAT '格式字符串'
其中格式字符串的文件名称部分可以使用替换变量,例如FORMAT '/BACKUP/YY/%U'.
常用的替换变量如下:
%c : 备份片的拷贝数
%d:数据库名称
%D : 位于该月中的第几天(DD)
%M : 位于该年中第几月(MM)
%F : 一个基于DBID的唯一名称,它的形式为C-DBID-YYYYMMDD-QQ。其中DBID为数据库的DBID,YYYYMMDD为日志,QQ是一个1-256的序列
%n:数据库名称,向右填补到最大8个字符
%u:一个8个字符的名称,它是根据备份集个数与创建时间信息生成的。
%p:该备份集中的备份片号,从1开始到创建的文件数。
%U:系统生成的一个唯一文件名,对于备份片来说,它的含义相当于%u_%p_%c。
%s:备份集的号
%t:备份集时间戳
%T:年月日格式(YYYYMMDD)
5.4 备份与恢复命令
(1)backup命令:
用于备份数据库文件,可以将多个文件、表空间、整个数据库已备份集形式备份到磁盘或磁带上。
在RUN命令外使用BACKUP命令,会自动使用自动通道。
在RUN命令内使用BACKUP命令,如果定义了手动通道,则优先使用手动定义通道。
(2)恢复命令:
使用RMAN备份的数据库也只能使用RMAN提供的恢复命令进行恢复,RMAN的恢复目录中存储了目标数据库的备份信息。RMAN根据恢复目录中的存储信息,自动将数据库同步到某一个数据一致的状态。
RMAN恢复数据库时用到两个命令,即RESTORE和RECOVER。
RESTORE命令将备份数据恢复到指定的目录。
RECOVER命令对数据库进行同步恢复。
RESTORE命令:由于备份集中的备份片是以专有的RMAN格式存储的,需要使用RESTORE命令进行重建。重建的结果是自动产生目标数据库的物理文件结构。
RECOVER命令:负责把归档日志文件用于重建的数据文件,来完成数据库的同步恢复。在执行RECOVER命令时,RMAN需要读取归档日志。如果没有归档日志,或者数据库运行在非归档模式下,则恢复过程会报错。
5.5 在归档模式下备份与恢复的必要条件
要用RMAN进行联机备份,数据库必须处于归档模式,恢复目录必须打开,目标数据库进程必须启动,数据库已加载或者打开。
5.5.1 查看数据库是否处于归档模式下:
SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 23 Next log sequence to archive 25 Current log sequence 25
5.5.2 如果未处于归档模式下,进行下面操作
(1)关闭数据库并启动数据库到mount状态,
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started.
(2)使用ALTER DATABASE ARCHIVELOG命令将数据设置为归档模式,并验证数据库的归档模式是否改变
SQL> alter database archivelog; Database altered. SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 23 Next log sequence to archive 25 Current log sequence 25 SQL> alter database open; Database altered.
5.6 备份整个数据库
5.6.1 登录rman
[oracle@ORACLEOGG1 data]$ rman target sys/oracle@ORCLOGG1 catalog rmantest_ogg2/oracle@ORCLOGG2 Recovery Manager: Release 12.2.0.1.0 - Production on Sat Aug 17 08:12:54 2019 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. connected to target database: ORCLOGG1 (DBID=1989452072) connected to recovery catalog database RMAN> backup database;
5.6.2 备份整个数据库-FORMAT默认格式,自动分配通道,FORMAT默认使用%U,备份集存储在数据库快闪恢复区内,备份文件包括数据文件,控制文件,重做日志文件和参数文件)
(1)直接使用命令:backup database,备份整个库:
RMAN> backup database; Starting backup at 17-AUG-19 starting full resync of recovery catalog full resync complete allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=736 device type=DISK channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00003 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_sysaux_gjg4f2w3_.dbf input datafile file number=00005 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/MESPRD_01.dbf input datafile file number=00001 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_system_gnbfhptg_.dbf input datafile file number=00004 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_undotbs1_gjg4g625_.dbf input datafile file number=00002 name=/data/u01/app/oracle/oradata/tbs_ogg01.dbf input datafile file number=00011 name=/data/u01/app/oracle/oradata/tbs_test.dbf input datafile file number=00012 name=/data/oradata_rman/rmante.dbf input datafile file number=00008 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/tbs_test.dbf input datafile file number=00009 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/tbs_test2.dbf input datafile file number=00010 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/tbs_test3.dbf input datafile file number=00007 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_users_gjg4g76k_.dbf channel ORA_DISK_1: starting piece 1 at 17-AUG-19 channel ORA_DISK_1: finished piece 1 at 17-AUG-19 piece handle=/data/u01/app/oracle/fast_recovery_area/orclogg1/ORCLOGG1/backupset/2019_08_17/o1_mf_nnndf_TAG20190817T081306_gogknnbj_.bkp tag=TAG20190817T081306 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25 Finished backup at 17-AUG-19 Starting Control File and SPFILE Autobackup at 17-AUG-19 piece handle=/data/u01/app/oracle/fast_recovery_area/orclogg1/ORCLOGG1/autobackup/2019_08_17/o1_mf_s_1016525614_gogkogtf_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 17-AUG-19
注:如果备份是报错:ORA-19804: cannot reclaim 67108864 bytes disk space from 8405385216 bytes limit;
说明设置的恢复区域超过了8G,查看当前区域大小:
SQL>show parameter db_recovery_file;
增大恢复区域即可:
SQL>alter system set db_recovery_file_dest_size = 10G
(2)查看备份到了快闪恢复区
(3)如果备份整个数据库时要包含归档日志文件,则要加上plus archivelog关键字,delete input的意思是在备份完成后,删除archivelog文件
1>本次只加plus archivelog,未加delete input
RMAN> backup database plus archivelog; Starting backup at 17-AUG-19 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archived log backup set channel ORA_DISK_1: specifying archived log(s) in backup set input archived log thread=1 sequence=35 RECID=33 STAMP=1015326748 input archived log thread=1 sequence=36 RECID=34 STAMP=1015326768 input archived log thread=1 sequence=37 RECID=35 STAMP=1015394456 input archived log thread=1 sequence=38 RECID=36 STAMP=1015412564 input archived log thread=1 sequence=39 RECID=37 STAMP=1015433126 input archived log thread=1 sequence=40 RECID=38 STAMP=1015452849 input archived log thread=1 sequence=41 RECID=39 STAMP=1015460064 input archived log thread=1 sequence=42 RECID=40 STAMP=1015538432 input archived log thread=1 sequence=43 RECID=41 STAMP=1015543033 input archived log thread=1 sequence=44 RECID=42 STAMP=1016461966 input archived log thread=1 sequence=45 RECID=43 STAMP=1016463806 input archived log thread=1 sequence=46 RECID=44 STAMP=1016470860 input archived log thread=1 sequence=47 RECID=45 STAMP=1016496524 input archived log thread=1 sequence=48 RECID=46 STAMP=1016526235 channel ORA_DISK_1: starting piece 1 at 17-AUG-19 channel ORA_DISK_1: finished piece 1 at 17-AUG-19 piece handle=/data/u01/app/oracle/fast_recovery_area/orclogg1/ORCLOGG1/backupset/2019_08_17/o1_mf_annnn_TAG20190817T082356_gogl8x9h_.bkp tag=TAG20190817T082356 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25 Finished backup at 17-AUG-19 Starting backup at 17-AUG-19 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=00003 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_sysaux_gjg4f2w3_.dbf input datafile file number=00005 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/MESPRD_01.dbf input datafile file number=00001 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_system_gnbfhptg_.dbf input datafile file number=00004 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_undotbs1_gjg4g625_.dbf input datafile file number=00002 name=/data/u01/app/oracle/oradata/tbs_ogg01.dbf input datafile file number=00011 name=/data/u01/app/oracle/oradata/tbs_test.dbf input datafile file number=00012 name=/data/oradata_rman/rmante.dbf input datafile file number=00008 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/tbs_test.dbf input datafile file number=00009 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/tbs_test2.dbf input datafile file number=00010 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/tbs_test3.dbf input datafile file number=00007 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_users_gjg4g76k_.dbf channel ORA_DISK_1: starting piece 1 at 17-AUG-19 channel ORA_DISK_1: finished piece 1 at 17-AUG-19 piece handle=/data/u01/app/oracle/fast_recovery_area/orclogg1/ORCLOGG1/backupset/2019_08_17/o1_mf_nnndf_TAG20190817T082422_gogl9r4s_.bkp tag=TAG20190817T082422 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:46 Finished backup at 17-AUG-19 Starting backup at 17-AUG-19 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archived log backup set channel ORA_DISK_1: specifying archived log(s) in backup set input archived log thread=1 sequence=49 RECID=47 STAMP=1016526309 channel ORA_DISK_1: starting piece 1 at 17-AUG-19 channel ORA_DISK_1: finished piece 1 at 17-AUG-19 piece handle=/data/u01/app/oracle/fast_recovery_area/orclogg1/ORCLOGG1/backupset/2019_08_17/o1_mf_annnn_TAG20190817T082510_goglc6fq_.bkp tag=TAG20190817T082510 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 17-AUG-19 Starting Control File and SPFILE Autobackup at 17-AUG-19 piece handle=/data/u01/app/oracle/fast_recovery_area/orclogg1/ORCLOGG1/autobackup/2019_08_17/o1_mf_s_1016526312_goglc8rv_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 17-AUG-19
查看备份情况:
查看当前备份目录:连续进行四次,请看,根据下图,最多10个文件,过期文件依次被删除
2>本次增加delete input
RMAN>backup database plus archivelog delete input;
添加delete input后,archivelog日志被清理了。
5.6.3 备份整个数据库-FORMAT指定路径和格式——自动分配通道(可以run,也可以不run下进行)
(1)创建目录/data/rmanbak
[oracle@ORACLEOGG1 archivelog]$ mkdir /data/rmanbak
(2)自动分配通道,通过FORMAT制定具体的路径和格式
RMAN> backup database FORMAT '/data/rmanbak/%U'; Starting backup at 17-AUG-19 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=00003 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_sysaux_gjg4f2w3_.dbf input datafile file number=00005 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/MESPRD_01.dbf input datafile file number=00001 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_system_gnbfhptg_.dbf input datafile file number=00004 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_undotbs1_gjg4g625_.dbf input datafile file number=00002 name=/data/u01/app/oracle/oradata/tbs_ogg01.dbf input datafile file number=00011 name=/data/u01/app/oracle/oradata/tbs_test.dbf input datafile file number=00012 name=/data/oradata_rman/rmante.dbf input datafile file number=00008 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/tbs_test.dbf input datafile file number=00009 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/tbs_test2.dbf input datafile file number=00010 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/tbs_test3.dbf input datafile file number=00007 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_users_gjg4g76k_.dbf channel ORA_DISK_1: starting piece 1 at 17-AUG-19 channel ORA_DISK_1: finished piece 1 at 17-AUG-19 piece handle=/data/rmanbak/1fu9duff_1_1 tag=TAG20190817T084223 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:46 Finished backup at 17-AUG-19 Starting Control File and SPFILE Autobackup at 17-AUG-19 piece handle=/data/u01/app/oracle/fast_recovery_area/orclogg1/ORCLOGG1/autobackup/2019_08_17/o1_mf_s_1016527390_gogmdysq_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 17-AUG-19
查看备份情况:
5.6.4 备份整个数据库-FORMAT指定路径和格式——手动分配通道(run下进行)
RMAN> run 2> { 3> allocate channel ch1 device type disk; 4> backup database format '/data/rmanbak/%U'; 5> release channel ch1; 6> } released channel: ORA_DISK_1 allocated channel: ch1 channel ch1: SID=736 device type=DISK Starting backup at 17-AUG-19 channel ch1: starting full datafile backup set channel ch1: specifying datafile(s) in backup set input datafile file number=00003 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_sysaux_gjg4f2w3_.dbf input datafile file number=00005 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/MESPRD_01.dbf input datafile file number=00001 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_system_gnbfhptg_.dbf input datafile file number=00004 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_undotbs1_gjg4g625_.dbf input datafile file number=00002 name=/data/u01/app/oracle/oradata/tbs_ogg01.dbf input datafile file number=00011 name=/data/u01/app/oracle/oradata/tbs_test.dbf input datafile file number=00012 name=/data/oradata_rman/rmante.dbf input datafile file number=00008 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/tbs_test.dbf input datafile file number=00009 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/tbs_test2.dbf input datafile file number=00010 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/tbs_test3.dbf input datafile file number=00007 name=/data/u01/app/oracle/oradata/ORCLOGG1/datafile/o1_mf_users_gjg4g76k_.dbf channel ch1: starting piece 1 at 17-AUG-19 channel ch1: finished piece 1 at 17-AUG-19 piece handle=/data/rmanbak/1hu9e0uq_1_1 tag=TAG20190817T092441 comment=NONE channel ch1: backup set complete, elapsed time: 00:00:25 Finished backup at 17-AUG-19 Starting Control File and SPFILE Autobackup at 17-AUG-19 piece handle=/data/u01/app/oracle/fast_recovery_area/orclogg1/ORCLOGG1/autobackup/2019_08_17/o1_mf_s_1016529908_gogovnpx_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 17-AUG-19 released channel: ch1
查看备份情况:
5.7 恢复整个数据库
(1)全库备份的恢复,数据库要在mount状态下执行;
1>首先关闭数据库
2>查看并删除数据库系统数据文件system01.dbf,用户数据文件MES_PRD_01.dbf,使用RMAN恢复(oracle 12c中,默认的数据系统文件,以o1_开头)
此时数据库无法启动了,因为删除了system01.dbf(o1_mf_system_gjg4c1nn_.dbf)
3>数据库的当前状态为mounted,因为缺少文件,所以无法open
4>连接RMAN(rman target sys/oracle@ORCLOGG1 catalog rmantest_ogg2/oracle@ORCLOGG2)
5>恢复数据库:
RMAN> restore database;——重建数据库的物理文件
RMAN> recover database;——同步恢复
restore database和recover database区别)
假设我时间点A,做了个备份,时间点B数据库挂了
* restore database ;// 这个操作利用时间点A做的备份来还原,返回到时间点A
* recover database ;//这个操作利用archivelog and online log做recover,从时间点A,推进到时间点B
restore 是转储 也是還原被损坏文件(RMAN经常用)
recover 是恢复 通过redo log & archive log恢复
查看system恢复情况
7>打开数据库
SQL> alter database open;数据库处于open状态了,查看数据,也ok了
8> 测试数据库,新增数据,再进行rman恢复,使用默认restore database,recoverdatabase;新增数据仍然存在。这是什么鬼?????????????????,可能是完全恢复???通过redo log,archive log全部恢复最新数据,比如在增加新数据时,已经将新增数据写入到redo log或archive log中,所以即使还原,也会有最新数据。
貌似:restore database只是用于重建数据库的物理文件(有待确认).recover database 通过redo log & archive log恢复
5.7 备份和恢复表空间
1、备份表空间
备份USERS表空间:RMAN>backup tablespace users;
备份多个表空间:RMAN>backup filesperset=3 tablespace users,system,sysaux;
备份MESPRD_TBSP表空间:RMAN>backup tablespace MESPRD_TBSP;
在RUN命令中备份表空间
RMAN>run
{
allocate channel ch1 device type disk;
backup format '/data/rmanbak/%U' (tablespace users,system,sysaux,MESPRD_TBSP);
release channel ch1;
}
如果只丢失了特定的表空间的数据文件,那么可以选择只恢复这个表空间,而不是恢复整个数据库,表空间恢复可以在不关闭数据库的情况下进行,只需要将需要恢复的表空间offline
2、模拟删除表空间
3、恢复被删除的表空间
run
{
sql 'alter tablespace MESPRD_TBSP offline immediate';
restore tablespace MESPRD_TBSP;
recover tablespace MESPRD_TBSP;
sql 'alter tablespace MESPRD_TBSP online';
}
已经恢复了MESPRD_01.dbf
5.7 备份和恢复数据文件
1)查看数据文件的位置以及数据文件名称,以及查看sysaux01 文件的File_ID是多少
2)备份sysaux.dbf文件
3)删除数据文件sysaux01.dbf
4)对数据文件或表空间做恢复的时候数据文件和表空间一定要处于offline状态, 数据文件丢失了,但数据库实例还可以用,
此时数据文件sysaux01.dbf的状态为RECOVER
RMAN>select file#,name,statusfrom v$datafile;
恢复数据文件sysaux01.dbf
将数据文件datafile 2处于online状态。并查看数据文件的状态,已经变成online状态了
---------------------
作者:小白系统工程师
来源:CSDN
原文:https://blog.csdn.net/weixin_41078837/article/details/80609077
版权声明:本文为博主原创文章,转载请附上博文链接!
文章评论