1)Backup sets 备份集
备份集顾名思义就是一次备份的集合,它包含本次备份的所有备份片,以oracle专有的格式保存。一个备份集根据备份的类型不同,可能构成一个完全备份或增量备份。
2)Backup pieces 备份片
一个备份集由若干个备份片组成。每个备份片是一个单独的输出文件。一个备份片的大小是有限制的;如果没有大小的限制, 备份集就只由一个备份片构成。备份片的大小不能大于你的文件系统所支持的文件长度的最大值。
3)Image copies 映像备份
映像备份不压缩、不打包、直接COPY 独立文件(数据文件、归档日志、控制文件),类似操作系统级的文件备份。而且只能COPY 到磁盘,不能到磁带。可以作为增量备份的0级,一般用来备份控制文件。
4)Full backup 全备份
全备份是指对数据文件中使用过的数据块进行备份,没有使用过的数据块是不做备份的,也就是说,RMAN 进行备份是进行压缩的。
5)Incremental backup 增量备份
增量备份是指备份数据文件中自从上一次同一级别的或更低级别的备份以来被修改过的数据块。与完全备份相同,增量备份也进行压缩。增量备份虽然概念很好,备份也很简单,但恢复起来却是另外一回事,不仅麻烦而且容易出错,所以实际中越来越少使用,到了Oracle 9i已经建议不再使用,以后版本会逐渐取消对增量备份的支持。
6)Recovery catalog 恢复目录
恢复目录用于记录RMAN 使用过程中的控制信息,恢复目录应该经常被同步(这在后面会讲到)。尽管我们可以使用nocatalog 方式来使用RMAN,此时控制信息记录在目标数据库的控制文件中,但这样毕竟不安全,因为一旦目标数据库的控制文件损坏就意味着所有的RMAN 备份失效。同样的道理恢复目录应该建立在另外一个数据库中,在下面的例子中我们称作“目录数据库”。
FRA区
查看FRA区位置和大小,可以使用alter system set 重新设置FRA区位置和大小
SYS@orcl> show parameter db_recovery_file_dest
NAME TYPE VALUE
----------------------- ------------- ----------------------
db_recovery_file_dest string /data/oracle/fast_recovery_area/orcl
db_recovery_file_dest_size big integer 8016M
查看FRA区使用情况
SYS@orcl> col name for a40
SYS@orcl> select name,space_limit/1024/1024 as space_all,space_used/1024/1024 as sapce_used,number_of_files from v$recovery_file_dest;
NAME SPACE_ALL SAPCE_USED NUMBER_OF_FILES
---------------------------------------- ---------- ---------- ---------------
/data/oracle/fast_recovery_area/orcl 8016 2619.2373 14
1 row selected.
SYS@orcl> select * from v$recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES CON_ID
---------------------------------------------- ------------------ ------------------------- --------------- ----------
CONTROL FILE .13 0 1 0
REDO LOG 7.49 0 3 0
ARCHIVED LOG 11.12 0 5 0
BACKUP PIECE 13.93 0 5 0
IMAGE COPY 0 0 0 0
FLASHBACK LOG 0 0 0 0
FOREIGN ARCHIVED LOG 0 0 0 0
AUXILIARY DATAFILE COPY 0 0 0 0
8 rows selected.
DBA_OUTSTANDING_ALERTS视图针对FRA添加或删除文件时,这些事件被记录到数据库警报日志中。
创建catalog目录以存储rman备份的相关信息
在目录数据库中创建恢复目录所使用的表空间
create tablespace rmants datafile '/data/oracle/oradata/ORCL/datafile/o1_mf_rmants.dbf' size 20M;
在目录数据库中创建rman用户并授权
SYS@orcl> create user rman identified by rman default tablespace rmants temporary tablespace temp quota unlimited on rmants;
User created.
SYS@orcl> grant recovery_catalog_owner to rman;
Grant succeeded.
在目录数据库中创建恢复目录
[oracle@orclinux ~]$ rman catalog rman/rman
Recovery Manager: Release 12.2.0.1.0 - Production on Wed Aug 8 15:50:59 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to recovery catalog database
RMAN> create catalog tablespace rmants;
recovery catalog created
注册目标数据库到恢复目录
[oracle@orclinux ~]$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Wed Aug 8 15:52:11 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1503397589)
RMAN> connect catalog rman/rman@orcl
connected to recovery catalog database
RMAN> register database;
database registered in recovery catalog
starting full resync of recovery catalog
full resync complete
准备工作做完了,下面介绍使用rman
清除为默认配置使用 configure device type disk backup type clear;
RMAN> show all;
RMAN configuration parameters for database with db_unique_name ORCL are:
--备份保存策略,可基于时间和冗余,默认基于冗余,保存1份
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
--备份优化,默认为关闭
CONFIGURE BACKUP OPTIMIZATION OFF; # default
--配置默认设备类型为磁盘。当配置默认设备类型时,除非使用带device type参数的backup命令重写默认值,
--或使用run块中的allocate channel命令。否则将使用默认信道
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
--配置控制文件和参数文件默认自动备份
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
--控制文件和参数文件备份默认备份位置。%F提供唯一的和可重复的名称,该名称结合了数据库ID(DBID)、
--日期、月份、年份和顺序
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
--特定备份类型的默认值。默认并行级别为1(通道数),备份为备份集
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
--配置任何到磁盘的备份默认存储一份
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
--归档重做日志备份1份
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
--rman操作输出保留时间,默认为7天。保存在v$rman_output视图,rc_rman_output恢复目录
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
--配置归档日志删除策略
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
--配置控制文件快照设置。
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/data/oracle/product/11.2.0/db_1/dbs/snapcf_orcl.f'; # default
注意通常设置默认的并行级别时,应当设置其为连接备份数据的磁盘数或磁带驱动其数。
在配置信道时有一些可用选项。使用maxpiecesize参数,可控制备份集片的大小。使用maxopenfiles参数,可控制rman一次最多打开的文件数。rate参数用于限制rman并控制备份时读取字节的比率为B/s、KB/s、MB/s或GB/s。例
--信道1的每个备份片最大100MB,并限定rman在该信道最多打开8个文件。限定只允许拥有100MB以内的吞吐量。
CONFIGURE CHANNEL 1 DEVICE TYPE DISK MAXPIECESIZE 100m maxopenfiles 8 rate 100MB;
使用共享服务器的情况
如果使用oracle的共享服务器选项,就必须配置一个rman的专用服务器。从根本上讲,必须使用server = dedicated 语法为服务器配置oracle net中的专用连接。
默认情况下,backup命令将整个数据库备份到备份集和备份集片。备份类型
备份数据库及相关的归档重做日志
RMAN> backup database plus archivelog;
Starting backup at 09-AUG-18
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=38 device type=DISK
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=31 RECID=46 STAMP=983459801
input archived log thread=1 sequence=32 RECID=47 STAMP=983459802
input archived log thread=1 sequence=33 RECID=48 STAMP=983459867
input archived log thread=1 sequence=34 RECID=49 STAMP=983459891
input archived log thread=1 sequence=41 RECID=50 STAMP=983663026
input archived log thread=1 sequence=42 RECID=51 STAMP=983698501
channel ORA_DISK_1: starting piece 1 at 09-AUG-18
channel ORA_DISK_1: finished piece 1 at 09-AUG-18
piece handle=/data/oracle/fast_recovery_area/orcl/ORCL/backupset/2018_08_09/o1_mf_annnn_TAG20180809T093503_fpq6l7sn_.bkp tag=TAG20180809T093503 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:35
Finished backup at 09-AUG-18
Starting backup at 09-AUG-18
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/oracle/oradata/ORCL/datafile/o1_mf_sysaux_fh36j53q_.dbf
input datafile file number=00001 name=/data/oracle/oradata/ORCL/datafile/o1_mf_system_fh36gqxt_.dbf
input datafile file number=00004 name=/data/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_fh36jy74_.dbf
input datafile file number=00005 name=/data/oracle/oradata/ORCL/datafile/o1_mf_rmants.dbf
input datafile file number=00007 name=/data/oracle/oradata/ORCL/datafile/o1_mf_users_fh36k19g_.dbf
channel ORA_DISK_1: starting piece 1 at 09-AUG-18
channel ORA_DISK_1: finished piece 1 at 09-AUG-18
piece handle=/data/oracle/fast_recovery_area/orcl/ORCL/backupset/2018_08_09/o1_mf_nnndf_TAG20180809T093539_fpq6mddm_.bkp tag=TAG20180809T093539 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
Finished backup at 09-AUG-18
Starting backup at 09-AUG-18
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=43 RECID=52 STAMP=983698565
channel ORA_DISK_1: starting piece 1 at 09-AUG-18
channel ORA_DISK_1: finished piece 1 at 09-AUG-18
piece handle=/data/oracle/fast_recovery_area/orcl/ORCL/backupset/2018_08_09/o1_mf_annnn_TAG20180809T093606_fpq6n67k_.bkp tag=TAG20180809T093606 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 09-AUG-18
Starting Control File and SPFILE Autobackup at 09-AUG-18
piece handle=/data/oracle/fast_recovery_area/orcl/ORCL/autobackup/2018_08_09/o1_mf_s_983698567_fpq6n82k_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 09-AUG-18
rman backup命令选项
临时修改rman备份,使用run语句
run {
allocate channel a1 type disk;
allocate channel a2 type disk;
backup database;
release channel a1;
release channel a2;
}
--自动检查备份状态
crosscheck backup;
--删除到期备份(noprompt,不提示直接删除,不询问)
delete noprompt expired backup;
--删除过期备份
delete obsolete;
--注意,如不适用catalog数据库,rman备份信息存在controlfile中,需在参数文件中设置
--CONTROLFILE_RECORD_KEEP_TIME 参数时间,默认保留7天,最好设置大点
SYS@orcl> show parameter control_file_record_keep_time
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
control_file_record_keep_time integer 7
RMAN 服务器进程在协调通道工作时要访问两个SYS数据包:DBMS_RCVMAN 数据包 和 DBMS_BACKUP_RESTORE 数据包, 这两个包包含了目标数据库中RMAN的所有功能
SYS.DBMS_RCVMAN 数据包
DBMS_RCVMAN 数据包用来访问控制文件中的表并将此信息传递给RMAN,使用RMAN 可以构建准确反应数据库结构的备份和还原操作。DBMS_RCVMAN 包负责在执行任何操作前设置time 运算符和校验数据文件头中的检查点信息,并检查文件位置和大小,以及有关节点相似性(在RAC 环境中)和磁盘相似性的其他信息。 这种信息会影响RMAN的性能,并且RMAN 在构建实际备份/还原命令之前自动执行负载均衡(load-balancing)算法和性能增强(performance-enhancing)算法。
SYS.DBMS_BACKUP_RESTORE 数据包
SYS.DBMS_RCVMAN 包访问控制文件并校验所有必须的信息。 这些必须的信息被传递回RMAN服务器进程,RMAN 服务器进程随后会基于recover.bsq 文件中的代码创建一些PL/SQL 块。 这些PL/SQL 块含有对DBMS_BACKUP_RESOTRE 数据包的调用,实际上RMAN 中是由DBMS_BACKUP_RESTORE数据包来创建系统调用以备份数据文件,控制文件和归档的redo log。 RMAN 接收从DBMS_RCVMAN 数据包返回的信息,并在通道间基于负载均衡算法分配工作,然后创建一系列DBMS_BACKUP_RESTORE 数据包调用。
在V$SESSION_LONGOPS 视图中可以跟踪的是DBMS_BACKUP_RESTORE 数据包的工作。它执行备份和还原操作,此外还可以以受限方式访问控制文件。 DBMS_BACKUP_RESTORE 数据包访问控制文件以备份该文件(实际上是控制文件的快照),在备份完成后写入备份信息。 一旦完成了一个备份集, DBMS_BACKUP_RESTORE 数据包就会在控制文件的表中写入备份开始时间,备份大小和备份名的信息。
RMAN 服务器进程
RMAN 生成一个到目标数据库的客户连接,并创建两个服务器进程。其中主要进程生成对SYS模式中的数据包的调用,从而执行备份和恢复操作,该进程会在备份和还原期间协调通道进程的工作。
另外一个次要的进程(或影子进程)轮询RMAN中的所有长事务(long-running transaction)并在内部记录信息。 在V$version_longops 视图中可以查看到轮询结果。
还可以在v$session 视图中查看这些进程。 RMAN 分配一个通道时,它会在输出中提供如果所示的会话ID信息:
SID 信息对应与v$session 中的SID 列。
SYS@orcl> col saddr for a20
SYS@orcl> col paddr for a20
SYS@orcl> col program for a30
SYS@orcl> col client_info for a30
SYS@orcl> select sid,saddr,paddr,program,client_info from v$session where sid=38;
SID SADDR PADDR PROGRAM CLIENT_INFO
---------- -------------------- -------------------- ------------------------------ ------------------------------
38 000000006EDED090 000000006EADCA58 rman@orclinux (TNS V1-V3) rman channel=ORA_DISK_1
RMAN 通道进程
除了默认的两个进程外,在备份活还原操作期间还会为分配的每个通道单独的创建一个进程。 RMAN 将通道视为目标数据库上的服务器进程,该进程在备份期间协调读取数据文件和写入指定位置的操作,在还原期间则协调读取备份位置和在数据文件位置写入数据块的操作。 通道进程只有两种类型: 磁盘通道 和 磁带通道。 不能为一个备份操作同时分配这两种通道,备份只能写入磁盘或写入磁带。
与后台RMAN 进程一样,可以从数据字典(data directory)跟踪通道进程。并且将通道进程在OS 级别(OS level)上与一个SID 关联。 正是这些通道进程的活动被轮询的影子进程记录到V$SESSION_LONGOPS 视图中。