前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【基础知识】RMAN基础知识-Part1

【基础知识】RMAN基础知识-Part1

作者头像
甚至熊熊
发布2021-04-22 17:22:58
7410
发布2021-04-22 17:22:58
举报
文章被收录于专栏:数据库学习笔记

整理一下之前学习RMAN的笔记,都是些基础操作,详细的还是需要看官方文档

一、使用RMAN

  • 物理备份
  • 备份完整可恢复到任意时间点
  • 归档模式下,RMAN既可以做脱机备份(冷备份)也可以做联机备份(热备份)
  • 非归档模式下, RMAN不能进行联机备份
  • 修改环境变量,日期显示更清晰
代码语言:javascript
复制
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
  • 热备:数据库open状态下的备份(归档模式下),联机备份
  • 冷备:数据库shutdown状态下的备份(归档,非归档),脱机备份
1.服务器端登陆RMAN
  • RMAN路径在$ORACLE_HOME/bin下,可用which rman查看
代码语言:javascript
复制
- rman target /  或 rman target / nocatalog  --不使用恢复目录登录
2.客户端登陆RMAN(远程链接情况)
  • 示例:
代码语言:javascript
复制
rman target sys/Oracle123@192.168.230.100:1521/prod
  • RMAN链接的账户必须具有sysdba权限

二、在归档和非归档模式下备份

1.一致性备份

当数据库处于一致性状态的时候的备份就是一致性备份 数据库关闭状态是一致性状态

  • shutdown immediate | 一致性
  • shutdown normal | 一致性
  • shutdown transactional | 一致性
  • shutdown abort | 非一致性状态
2.非一致性备份

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

3.非归档模式备份数据库
代码语言:javascript
复制
--RMAN备份需要读取控制文件中的备份信息,所以要启动到mount状态,读取数据文件等路径
shutdown immediate
startup mount 

rman target /
backup database;
backup tag 'full_db_bkp' format '/u01/backup/db_%U' database;
--%U代表生成一个唯一的文件名
--tag代表自定义标签

注意一个参数control_file_record_keep_time 我目前理解的意思是:备份恢复信息保存在控制文件中的最小存储时间,超出这个时间的信息就有可能会被覆盖。 至于这个参数与rman保留策略的关系,后续屡清楚了再单独写

4.归档模式下备份数据库
代码语言:javascript
复制
rman target /

backup database;
--备份数据库+归档文件
backup database plus archivelog;

三、list和report命令

1.list命令
代码语言:javascript
复制
--列出之前备份信息
list backup;

--列出备份集,与list backup结果相同,属于语法和版本延续老语法问题
list backupset;

--列出映像副本,很少使用
list copy

--列出1号数据文件的备份集
list backup of datafile 1

--列出1号数据文件的映像副本
list copy of datafile 1

--列出2号备份集
list backupset 2

--列出tag为TAG20180419T213849的备份集
list backupset tag 'TAG20180419T213849'

--列出所有的归档日志
list archivelog all;

--列出包含users表空间的备份集
list backup of tablespace users;

--以文件序号,列出备份集,文件序号就是v$datafile的file#
list backupset by file;

--可用备份情况概述(常用)
list backupset summary;
2.report命令
代码语言:javascript
复制
--查看构成数据库组成的文件(数据文件、临时文件)
report schema;

--报告需要备份的文件
report need backup;

--列出哪些数据文件包含不可以恢复的操作
report unrecoverable;

--强制数据库记录日志,假设创建一个表 设定为 nologging,那就不能用rman进行备份,可以使用select force_logging from v$database;命令查看是否开启强制写日志,在应用DG的时候,一定要设置强制写,否则会有主库更改,备库没改变的情况
alter database force logging;

--列出三天未备份的文件
report need backup days 3;

--列出没有3个备份的所有文件
report need backup redundancy 3;

--列出哪些表空间需要备份,与备份保留策略相关
report need backup tablespace system;

--列出违反保留策略的备份集
report obsolete

--删除违反保留策略的备份集
delete obsolete

四、crosscheck命令-手工注册备份集|归档日志

1.crosscheck交叉检查
代码语言:javascript
复制
--检查所有备份集是否存在、是否有效
crosscheck backupset;

--如果在磁盘上删掉备份,使用该命令查看依然显示是Available状态,但是再使用交叉检查命令则提示expired
list backupset summary;

X:expired
A:available
代码语言:javascript
复制
 --如果没有先使用交叉检查命令,无法使用delete命令删除
delete backupset;

delete expired backupset;

--不删除任何文件,只更新RMAN的存储库
delete expired

--将违反保留策略的文件删除并更新RMAN存储库
delete obsolete

--不提示直接删除,一般用于脚本中
delete noprompt backupset
2.手工注册备份集和归档日志

应用场景:备份后将备份文件移动到别的文件夹,或者别人的备份交给你还原,因为备份的路径写在控制文件中,不在原路径就需要将备份注册到控制文件或者恢复目录中;同样的别人给你的归档日志也需要注册到控制文件或恢复目录当中。

代码语言:javascript
复制
--注册单个备份片
catalog backuppiece '/u01/user4.bkp'

--注册整个目录下的备份片
catalog start with '/u01/bkp'  

--单个注册归档文件
sqlplus / as sysdba
alter database register physical logfile '/u01/arch/arc/1_21_953704758.arc'

--批量注册归档文件
rman target /
catalog start with '/u01/arch/arc/'

五、validate命令验证数据库

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

RMAN验证有三种方式:

  1. validate
  2. backup…validate 仅仅验证是否能做备份,并不是真正的备份
  3. restore…validate 验证是否能恢复数据库,并不是真正的恢复
1.validate(验证)
代码语言:javascript
复制
--验证数据库,是否有坏块
validate database;

--单独验证表空间
validate tablespace 表空间名;

--单独验证数据文件,v$dbfile视图查看数据文件号
validate datafile 数据文件号;

--验证所有的归档文件
validate archivelog all;

--验证数据文件单个数据块block是否损坏
validate datafile 1 block 10;

--验证某备份集
validate backupset 备份集编号;

另外Oracle还自带了验证工具dbv

代码语言:javascript
复制
which dbv
--验证数据文件是否损坏,系统层级命令,不进入rman
dbv file=XXXX.dbf

关于检验和损坏块:

代码语言:javascript
复制
show parameter db_block
db_block_checksum=typical
--用于控制数据库中数据文件和redo文件中块的校验和写入

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

物理和逻辑块损坏:

  • 物理损坏 数据库根本无法识别该块: 检验和无效,块中全部是0,块的header(头部)和footer(尾部)不匹配
  • 逻辑损坏 块的内容在逻辑上不一致,例如:行片损坏、索引条目损坏。

默认情况下,RMAN不检查逻辑坏块。 可以使用该命令检查逻辑坏块:

代码语言:javascript
复制
validate check logical database;
2.backup…validate

不生成任何备份,只做验证

代码语言:javascript
复制
backup validate database;
backup validate check logical database;
backup validate archivelog all;
backup validate database archivelog all;
3.restore…validate
代码语言:javascript
复制
--验证数据库是否能进行恢复
restore database validate;

六`、delete命令

删除备份

代码语言:javascript
复制
--删除备份(集)
delete backup;
delete backupset;

--不许确认直接删除
delete noprompt backup;

--删除指定的备份集
delete backupset xx;

--删除过期备份
report obsolete;
delete obsolete;

--删除expired状态备份
crosscheck backupset;
delete expired backupset;

--删除所有归档
delete archivelog all;

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

1.备份spfile
代码语言:javascript
复制
--执行这个命令的时候,实际会将控制文件一起备份掉
backup spfile;
2.备份控制文件
代码语言:javascript
复制
--备份当前控制文件
backup current controlfile

--打开后备份任何文件都会自动备份spfile跟控制文件
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.备份归档日志
代码语言:javascript
复制
--备份所有的归档日志
backup archivelog all;

--归档当前日志文件
alter system switch logfile;

--备份所有的归档文件,并删除所有的输入,意思是如果归档日志的存储路径下有两个归档文件,使用该命令进行备份后,则归档日志存储路径下的原先归档文件则删除掉,可以用来节省空间
backup archivelog all delete all input;

--一般使用上一个
backup archivelog all delete input;
4.使用映像副本(Image copy)

简介:与手工OS Copy备份数据文件类似(简单来说就是使用rman复制一份),是一个数据文件生成一个镜像副本文件(数据库数据文件、归档重做日志或者控制文件的精确副本),不同的是这个过程由RMAN完成,RMAN复制的时候也是一个数据块一个数据块(Oacle block)的复制,同时默认检测数据块是否出现物理损坏(默认不会进行逻辑损坏检查,需要手工启动),且不需要将表空间置为begin backup状态,和备份集类型不同在于生成的镜像副本中包含使用过的数据块,也包含从来没有用过的数据块。

生成镜像副本的好处在于恢复时速度相对备份集来说要更快,恢复时可以不用拷贝,指定新位置即可。

代码语言:javascript
复制
backup as copy database;
--既可以查看映像副本,还可以显示归档日志文件
list copy;  
backup as copy datafile 4;
backup as copy datafile 4 format '/u01/backup/user01.bak'

八、configure配置RMAN

代码语言:javascript
复制
--查看所有默认配置
show all;  --查看所有默认配置

--只查看保留策略
show retention policy;

--查看默认备份到的设备类型
show default device type;

--这个视图可以查看show all中所有配置修改的记录
v$rman_configuration 

--修改默认设备类型为磁带
CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';

--清除配置
configure default device type clear;

--备份时指定类型
backup device type disk database;
配置冗余策略
代码语言:javascript
复制
--设置备份保留几份,默认1
CONFIGURE RETENTION POLICY TO REDUNDANCY 2; 

--清除配置
CONFIGURE RETENTION POLICY clear;
配置备份的默认类型

备份集或者映像副本

代码语言:javascript
复制
configure device type disk backup type to copy;
configure device type clear;

--配置成压缩的备份集
configure device type disk backup type to compressed backupset;
配置通道channel

默认情况下,RMAN为所有操作分配一个磁盘通道

代码语言:javascript
复制
configure channel device type disk format '/u01/backup/db_%U';
configure channel device type disk format '+dg1';
配置并行
代码语言:javascript
复制
--用于提高备份速度,设置parallelelism参数可以加快备份速度,设置的值不应超过CPU的核数
configure device type disk backup type to compressed backupset parallelism 2;
配置优化
代码语言:javascript
复制
--默认为off
configure backup optimization on
run块
代码语言:javascript
复制
run{
  allocate channel c1 device type disk;
  backup tablespace users;
  release c1;  --release 释放通道
}

九、格式化串

指定备份文件名称中的格式化串

%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的序列。

%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为备份片段命名。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据库学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、使用RMAN
    • 1.服务器端登陆RMAN
      • 2.客户端登陆RMAN(远程链接情况)
      • 二、在归档和非归档模式下备份
        • 1.一致性备份
          • 2.非一致性备份
            • 3.非归档模式备份数据库
              • 4.归档模式下备份数据库
              • 三、list和report命令
                • 1.list命令
                  • 2.report命令
                  • 四、crosscheck命令-手工注册备份集|归档日志
                    • 1.crosscheck交叉检查
                      • 2.手工注册备份集和归档日志
                      • 五、validate命令验证数据库
                        • 1.validate(验证)
                          • 2.backup…validate
                            • 3.restore…validate
                            • 六`、delete命令
                            • 七、备份spfile-控制文件-归档文件-映像副本
                              • 1.备份spfile
                                • 2.备份控制文件
                                  • 3.备份归档日志
                                    • 4.使用映像副本(Image copy)
                                    • 八、configure配置RMAN
                                      • 配置冗余策略
                                        • 配置备份的默认类型
                                          • 配置通道channel
                                            • 配置并行
                                              • 配置优化
                                                • run块
                                                • 九、格式化串
                                                相关产品与服务
                                                数据库
                                                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                                                领券
                                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档