课程内容:
1.RMAN备份与恢复概述
2.使用RMAN
3.在归档和非归档模式下备份数据库
4.使用list-report命令
5.热备与冷备-联机与脱机备份-备份集-备份片
6.使用crosscheck命令-手工注册备份集|归档日志
7.使用validate验证数据库
8.delete-obsolete
9.备份spfile-控制文件-归档文件-映像副本
10.configure-set

一、RMAN备份与恢复概述

1.1 介绍:RMAN(Recovery Manager)恢复管理器,它是一种oracle的专用备份恢复工具。
是一种用于备份backup,还原restore,恢复recover的工具。
很多第三方的备份软件,比如赛门铁克、NBU、TSM,其实都是调用RMAN的脚本进行备份。
1.2 为什么需要备份?
备份和恢复的主要目的就是避免数据库的数据丢失,恢复数据。
断电、机器故障、地质灾害。
跨机房备份、跨地区备份、异机备份。
1.3数据库的故障类型:
1.介质故障
硬件损坏
2.用户错误
应用程序逻辑错误或者手动错误导致数据库的数据更改错误。
3.应用程序错误:
软件故障会损坏数据块。
物理备份:
rman
逻辑备份:
exp-imp
expdp-impdp

二、使用RMAN

Oracle的备份通常分为2种类型:
1.物理备份
2.逻辑备份
逻辑备份:
导入导出工具:exp/imp
数据泵工具:expdp/impdp
任意时间点的恢复是无法达到。
物理备份:
RMAN实际上是物理备份,任意时间点的恢复可以做到。
archivelog模式,归档模式
noarchivelog模式,非归档模式
RMAN都可以执行脱机备份。
如果数据库处于归档模式,RMAN既可以做脱机备份(冷备份)也可以做联机备份(热备份)。
如果数据库处于非归档模式,RMAN是不能进行联机备份的。

使用RMAN
1.服务器端使用RMAN
rman target /
rman target / nocatalog

2.客户端使用RMAN
rman target sys/Oracle123@192.168.230.100:1521/prod
RMAN链接的账户必须具有sysdba权限

归档:(查看是否是归档模式)
SQL> archive log list;
select log_mode from v$database;

归档的位置:
log_archive_dest
alter system set log_archive_dest=’/u01/arch’ scope=spfile;

归档文件名的格式:
log_archive_format
alter system set log_archive_format=’%t_%s_%r.arc’ scope=spfile;
%t_%s_%r.arcs说明:
%t:线程号
%s:日志序列号
%r:resetlogs id
%d:database id

shutdown immediate 必须干净地关闭
startup mount
alter database archivelog;
alter database open;

alter system switch logfile;(切换日志将产生归档文件)
select t.RESETLOGS_ID,t.* from v$database_incarnation t;(查看RESETLOGS_ID)

三、在归档和非归档模式下备份数据库

1.一致性备份
当数据库处于一致性状态的时候的备份就是一致性备份。
当数据库关闭状态一致性状态。
shutdown immediate
shutdown normal
shutdown transactional
shutdown abort不是一致性状态
脱机备份

2.非一致性备份
当数据库处于非一致状态的备份就是非一致性备份。
实例失败,shutdown abort
数据库打开的时候进行的备份是非一致性备份

非归档模式备份数据库:
禁用归档模式:(需在mount状态下)
shutdown immediate
startup mount
alter database noarchivelog;
alter database open;

非归档下RMAN备份:(首先要求关闭数据库,启动到mount)
shutdown immediate
startup mount( 打开spfile,控制文件)
rman target /
backup database;
backup tag ‘full_db_bkp’ format ‘/u01/backup/db_%U’ database;(指定路径备份)
control_file_record_keep_time 30 (参数:控制文件保存日志时间天数)
alter system set control_file_record_keep_time=30;

归档模式下备份数据库:
可实现联机备份,热备份
启用归档模式:(mount下)
shutdown immediate
startup mount
alter database archivelog;(打开归档)
alter database open;(打开数据库)
RMAN备份:(open状态)
backup database;
如果备份含有system表空间的文件,自动备份控制文件和spfile.
备份数据库+归档文件:
backup database plus archivelog;

四、使用list-report命令

list命令:
list backup;(查看备份集)
list backupset;(查看备份集)
export NLS_DATE_FORMAT=‘yyyy-mm-dd hh24:mi:ss’(设置环境变量)

list copy;(列出映像副本)

列出包含数据文件的备份集:
list backup of datafile 1;
list copy of datafile 1;
list backupset 8;(列出8号备份集)
list backupset tag ‘TAG20180419T213849’

列出所有的归档日志:
list archivelog all;
crosscheck archivelog all; --查看可以所有的归档文件
delete expired archivelog all; --清空过期的归档文件
select * from vbackuprest BackupRestoreTrials_数据文件recovery_file_dest; --查看归档日志的存放地址;

列出包含users表空间的备份集
list backup of tablespace users;
list backupset by file;
list backupset summary;
list backup of database;
list backup;

2.report命令
我们可以使用report命令来做如下的事情:
哪些文件需要备份?
在哪些文件上执行了不可恢复的操作?
查看哪些备份过时的信息?
哪些文件最近没有备份?
report schema;(查看构成数据库组成的文件)
report need backup;(报告需要备份的文件)
report unrecoverable;(列出不可恢复的文件)
alter database force logging;(强制日志记录)
report need backup days 3;(列出三天未备份的文件)
report need backup redundancy 3;(列出没有3个备份的文件)
backup datafile 4;(备份4号数据文件)
report need backup tablespace users;(查看需要备份的表空间)
report obsolete;(列出违反保留策略的备份集)
默认情况下,备份集一天默认一份,多余1分则违反备份保留策略。

五、热备与冷备-联机与脱机备份-备份集-备份片

1.热备与冷备
热备:数据库open状态下的备份(归档模式下),联机备份
冷备:数据库shutdown状态下的备份(归档,非归档),脱机备份
1.cp

所有的数据文件(undo文件)
v$dbfile(select * from v$dbfile;)

控制文件
show parameter control
v$controlfile(select * from v$controlfile;)
spfile
show parameter spfile;

redo联机重做日志文件
v$logfile(select * from v$logfile;)

临时文件
v$tempfile(select * from v$tempfile;)

注意:拷贝的时候先关闭数据库
cp -r prod/ prodbak

2.rman
启动到mount状态,backup database
归档还是非归档。

备份集:
逻辑概念

备份片:
一个一个文件
备份集包含多个备份片。
默认情况下一个备份集由一个备份片组成。

六、使用crosscheck命令和手工注册备份集

6.1.crosscheck交叉检查

crosscheck backupset;
list backupset summary;
list expired backupset;(检查过期备份)
X:expired
A:available
delete backupset;(前提是做过交叉检查才可删除过期的)
delete expired backupset;(删除过期备份)
delete expired:不删除任何文件,只更新RMAN的存储库。
delete obsolete:将文件删除并更新RMAN存储库。(违反保留策略的文件)
delete noprompt backupset;不提示直接删除,一般用于脚本中

6.2.手工注册备份集和归档日志

1.移走备份集
2.删除备份集
3.注册备份集
3.1注册单个备份片
catalog backuppiece ‘/u01/user4.bkp’
3.2注册整个目录
catalog start with ‘/u01/bkp’

注册归档文件:
单个,少量:
alter database register physical logfile ‘/u01/arch/arc/1_21_953704758.arc’
多个,目录:
catalog start with ‘/u01/arch/arc/’

七、使用validate验证数据库

rman命令,验证的目的主要是为了检查损坏的块和丢失的文件。
验证备份集是不是可以用来做恢复
验证数据文件是否损坏,坏块。

RMAN验证有三种方式:
1.validate
2.backup…validate
3.restore…validate

1.validate
validate database;(验证整个数据库)
validate tablespace uses;(验证users表空间)
validate datafile 1;(验证数据文件)
v$dbfile;(查询数据文件)
validate archivelog all;
验证数据文件单个数据块block是否损坏
validate datafile 1 block 10;
validate backupset 28;(验证指定的备份集)
dbv file=system01.dbf (验证数据文件是否损坏,需到数据文件所在位置)

制作坏块:高级课程

关于检验和损坏块:
db_block_checksum=typical
用于控制数据库中数据文件和reod文件中块的检验和写入。
数据库在正常操作期间为每一个块计算检验和,将其写入磁盘之前存储在块的头部。
当数据库从磁盘中读取块的时候,会重新计算检验和,与之前存储的检验和进行比较,如果不匹配就代表块已经损坏。

物理和逻辑块损坏:
物理损坏:数据库根本无法识别该块:
检验和无效,块中全部是0,块的header和footer不匹配;
逻辑损坏:块的内容在逻辑上不一致,例如:行片损坏、索引条目损坏。
默认情况下,RMAN不检查逻辑坏块。
validate check logical database;(检查逻辑坏块)

2.backup…validate
不生成任何备份
backup validate database;
backup validate check logical database;
backup validate archivelog all;
backup validate database archivelog all;

3.restore…validate
restore database validate;验证数据库是否能进行恢复
restore datafile 1 validate;(验证1号文件)

八、delete-obsolete

delete:删除备份
备份集
delete backup;delete backupset;(删除备份集)
delete noprompt backup;(不提示直接删除)
delete backupset xx;(删除指定的备份集)
report obsolete;(报告过期的备份。违反保留策略。)
expired:删除的,找不到的备份。crosscheck X
delete obsolete;(删除obsolete备份集,时间最久远的。)

crosscheck archivelog all; --查看可以所有的归档文件
delete expired archivelog all; --清空过期的归档文件
delete archivelog all;(删除所有归档日志文件)
select * from vbackuprest BackupRestoreTrials_数据文件recovery_file_dest; --查看归档日志的存放地址;

backup keep forever database;(恢复目录中才支持。 )
control_file_record_keep_time
(show parameter db_block 默认7天,生产中一般设置30天)

九、备份spfile-控制文件-归档文件-映像副本

1.备份spfile
backup spfile;

2.备份控制文件
backup current controlfile;

spfile和控制文件自动备份:
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
CONFIGURE CONTROLFILE AUTOBACKUP ON;

设置自动备份的存储位置:
configure controlfile autobackup format for device type disk to ‘/u01/backup/ctl_%F’;
configure controlfile autobackup format for device type disk clear;

3.备份归档日志
backup archivelog all;
alter system switch logfile;归档当前日志文件
backup archivelog all delete all input;(备份当前日志文件,删除所有输入)
backup archivelog all delete input;

4.使用映像副本
备份集
backup as copy database;
list copy;还可以显示归档日志文件
backup as copy datafile 4;
backup as copy datafile 4 format ‘/u01/backup/user01.bak’

十、configure配置RMAN

配置备份保留策略
备份到磁盘|磁带
设置默认的设备类型

RMAN> show all;查看所有默认配置
RMAN> show retention policy;
RMAN> show default device type;

v$rman_configuration(select * from v$rman_configuration;)
CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';修改默认设备类型为磁带
configure default device type clear;清除设备类型配置
backup device type disk database;(指定设备类型备份)

配置冗余策略:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;(设置冗余为2份)
CONFIGURE RETENTION POLICY clear;

配置备份的默认类型:备份集或者映像副本
configure device type disk backup type to copy;
CONFIGURE DEVICE TYPE DISK clear;
configure device type disk backup type to compressed backupset;(压缩备份集)

配置通道channel
默认情况下,RMAN为所有操作分配一个磁盘通道。
configure channel device type disk format ‘/u01/backup/db_%U’;
configure channel device type disk format ‘+dg1’;

配置并行
configure device type disk backup type to compressed backupset parallelism 2;

配置优化
configure backup optimization on;

run块

run{
allocate channel c1 device type disk; 
backup tablespace users;
release c1;--释放通道
}

配置控制文件自动备份的位置:
configure controlfile autobackup format for device type disk to ‘/u01/backup/ctrl_%F’;

%U:默认的文件命令模式,生成的文件名具有唯一性
%a:Oracle数据库的activation ID即RESETLOG_ID。
%c:备份片段的复制数(从1开始编号,最大不超过256)。
%d:Oracle数据库名称。
%e:归档序号。
%F:基于"DBID+时间"确定的唯一名称,格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD为日期,QQ是一个1~256的序列。
file:///F|/12cOracle数据库课件/Oracle12C DBA实战系列(4)-RMAN备份恢复/1/10-configure配置RMAN.txt[星期五 21:48:04]
%h:归档日志线程号。
%I:Oracle数据库的DBID。
%M:当前时间中的月,格式为MM。
%N:表空间名称。
%n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8。比如数据库名JSSBOOK,则生成的名称则是JSSBOOKx。
%p:备份集中备份片段的编号,从1开始。
%s:备份集号。
%t:备份集时间戳。
%T:当前时间的年月日格式(YYYYMMDD)。
%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集生成一个唯一的名称。
%U:默认是%u_%p_%c的简写形式,利用它可以为每一个备份片段(即磁盘文件)生成一个唯一名称,这是最常用的命名方式,执行不同备份操作时,生成的规则也不同,如下所示:
生成备份片段时,%U=%u_%p_%c;
生成数据文件镜像复制时,%U=data-D-%d_id-%I_TS-%N_FNO-%f_%u;
生成归档文件镜像复制时,%U=arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u;
生成控制文件镜像复制时,%U=cf-D_%d-id-%I_%u。
%Y:当前时间中的年,格式为YYYY。
注:如果在BACKUP命令中没有指定FORMAT选项,则RMAN默认使用%U为备份片段命名。