oracle rman备份原理

本文详细介绍了Oracle RMAN备份的原理,包括 nocatalog 和 catalog 两种模式,以及RMAN的备份进程和内存分配。同时,还讨论了RMAN备份的优缺点,并给出了RMAN的相关参数设置及常用命令,帮助理解RMAN如何进行数据库备份和恢复操作。
摘要由CSDN通过智能技术生成

RMAN备份
一、RMAN备份原理

1、简介
RMAN备份是ORACLE数据库自带的在线热备工具,使用RMAN不需要安装,可会数据块进行压缩和检测,可备份数据块的变化量,是数据块级别的备份解决方案。

缺点:若数据库中出现坏块,RMAN会自动检测坏块并跳过坏块,造成一定数据的丢失,建议,采用expdp/impdp、ACTIVE DATAGUARD、ORACLE GOLDENGATE等在线逻辑迁移数据方案。

RMAN备份分为catalog和nocatalog两种:

nocatalog:直接进行备份,将备份信息直接记录到控制文件,会导致控制文件持续增长,若控制文件丢失,将导致备份不能恢复,控制文件存在风险,

可通过修改参数文件中的control_file__record_keep_time参数来确定控制文件数据过期时间,缺省值是7days。

恢复:nocatalog恢复,恢复数据库需要控制文件的记录信息,必须要现将数据库启动到mount阶段才能回数据库进行恢复,若控制文件损坏,需要先进行恢复。

  1. 建立oracle运行环境(包括init或sp文件)

  2. 文件方式恢复controlfile到init文件指定的位置

  3. startup mount

  4. rman,恢复datafile

  5. alter database open resetlogs

catalog:需要创建单独的备份数据库、恢复目录和备份表空间,是将备份信息直接记录到备份数据库中,

  1. 建立oracle运行环境(包括init或sp文件)

  2. rman ,restore controfile

  3. alter database mount

  4. rman, restore datafile

  5. alter database open resetlogs

2、备份原理

备份进程:主进程 影子进程 通道进程

rman是集成在oracle数据库内部的免安装工具,是采用调用sys.DBMS_RCVMAN和sys.DBMS_BACKUP_RESTORE两个数据包来完成工作,由于这两个数据表不需要oracle数据库的支撑,所以数据库在nomount状态就可以启动RMAN。

RMAN备份原理:

当rman target /登录,首先会检测ORACLE_SID变量中的实例名,并在实例中生成一个RMAN服务器进程(通道进程)和主进程,影子进程。该通道进程会在pga(有时在sga)中分配内存,在内存中每个通道进程都会构建缓冲区(输入,输出),先将备份文件读入输入缓冲区,一个输入缓冲区写满会使用另一个输入缓冲区,然后RMAN确认备份的数据块并进行校验之后推入输出缓冲区,当输出缓冲区被填满,会将来自不同数据文件的数据混在一起写入磁盘或磁带。为通道进程工作提供内存;

然后RMAN主进程调动sys.DBMS_RCVMAN数据包用来访问控制文件,并在任何操作前设置TIME运算符和校验数据文件头的检查点信息,将此类信息返回给RMAN主进程;并且RMAN 在构建实际备份/还原命令之前自动执行负载均衡(load-balancing)算法和性能增强(performance-enhancing)算法。

然后RMAN主进程通过sys.DBMS_BACKUP_RESTORE数据包校验sys.DBMS_RCVMAN数据包传回来的控制文件和必须的一些信息,并将这些信息传回RMAN服务器进程(通道进程);

RMAN服务器进程(通道进程)会基于recover.sql文件的代码创建一个PL/SQL块来调用sys.DBMS_BACKUP_RESTORE数据包(备份的动力)备份数据文件,影子进程在通道之间进行轮询扫描并将信息返回给RMAN服务器进程(通道进程),RMAN主进程并在通道之间基于负载均衡算法分配进程工作。

RMAN进程内存原理:

RMAN登录产生通道进程,通道进程在pga中(有时在sga中)分配内存,在内存中每个通道进程都会构建缓冲区(输入,输出),先将备份文件读入输入缓冲区,一个输入缓冲区写满会使用另一个输入缓冲区,然后RMAN确认备份的数据块并进行校验之后推入输出缓冲区,当输出缓冲区被填满,会将来自不同数据文件的数据混在一起写入磁盘或磁带。

磁盘备份会使用PGA作为备份缓冲区用于通道进程内存分配。若OS没配置本地异步I/O,则可利用DBWR_IO_SLAVES参数使用I/O从属来填充内存的输入缓冲。

若DBWR_IO_SLAVES参数设置为非零,则RMAN会自动分配4个I/O从属来协调输入缓冲区数据加载。此时用于磁盘备份的内存缓冲区就会被退出共享池,若存在大池也会被推入大池。

如果没有使用磁带从属,则会在PGA中分配用于磁带输出缓冲区的内存。

为了保持合理范围的内存分配,根据一起备份的文件数,分配内存缓冲大小需要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值