Oracle基于 RAMN 的0级备份

发布于 2020-02-19  21 次阅读


oracle 所谓增量备份,顾名思义即是每次备份操作那些发生了“变化”的数据块。在 RMAN 增量备份中有两种:Differential(差异备份)和Cumulative(增量备份)方式。由于需求这里用到的备份方式则是差异增量备份。

差异增量备份概念:

是备份低级别或者同级别备份以来的所有数据块,也就是要备份前期备份以来的差异数据块。在实际的备份中必须存在基础备份也就是0级备份,若没有0级备份则没有比较的对象文件,从而无法实现增量备份,而0级备份便是数据库的全备份。(在Oracle10g之前的版本中,增量备份可以有n多个级别,从0级、1级…….这样的顺序直到n级,n为小于等于4的整数。而10g之后包括10g,Oracle的官方文档明确指出增量备份只有0和1两种级别,设置太多的级别没有太大的意义,不过在实际执行增量操作时,仍能能够指定多个级别,最大能够支持4级的增量备份)

    备份原则:

(1)     若前面同时有n-1级别和同级别,则备份相同级别以来变化的数据;

(2)     若前面没有同级别的备份,则备份n-x级别以来变化的数据;

 总的一点,差异增量触发的条件是:小于等于当前级别

实验平台: Centos7 + Oracle 11g

源库信息:

ORACLE_BASE: /home/oracle/app/oracle
ORACLE_HOME: /home/oracle/app/oracle/product/11.2.0/dbhome_1
ORACLE_SID:orcl
IP: 192.168.1.132

目标库信息

ORACLE_BASE: /home/oracle/app/oracle
ORACLE_HOME: /home/oracle/app/oracle/product/11.2.0/dbhome_1
ORACLE_SID:orcl
IP: 192.168.1.133

我们以实例名相同的为例,实例名不同也一样,在pfile里修改对应参数就可以了。

步骤如下:

  • 源库中使用 RMAN 创建0级备份
  • 将备份文件发送至目标库
  • 目标库删除spfile
  • 使用源库spfile和controlfile恢复数据
  • 还原数据库

1、创建0级备份

1.1 进入 rman

rman target /
进入 RMAN

1.2 创建0级备份

backup incremental level=0 database format='/home/oracle/app/oradata/back/%u';
利用 RMAN 创建0及备份

运行命令后,会在formar中产生两个文件,一个文件为数据文件,一个为spfile和control file。

1.3 通过命令查看spfile、Control file和datafiles

List backup;   #后续需要使用这几个文件恢复数据

2、将备份文件发送至目标数据库服务器

cd /home/oracle/app/oradata/back
scp * 192.168.184.133/home/oracle/app/oradata/back

3、删除目标库spfile文件

cd $ORACLE_HOME/dbs
rm -f spfileorcl.ora

4、在目标数据库服务器,恢复数据库

 4.1 设置dbid

注:确保数据库是关闭的状态

rman target /
set dbid 1560395236   #dbid为源库中的dbis,通过rman target / 命令后,在输出信息中包含了

启动数据库到nomount状态

startup nomount

注意:在rman下即使没有参数文件,默认也会启动一个DUMMY实例,以便能够恢复参数文件。

4.2 恢复spfile文件

restore spfile to '$ORACLE_HOME/dbs/spfileorcl.ora'from '/home/oracle/app/oradata/back/02uougoi'; 

4.3 startup force nomount

startup force nomount

4.4 恢复控制文件

restore controlfile from '/home/oracle/app/oradata/back/02uougoi';     

4.5 启动数据库到加载状态

alter database mount;

5、恢复整个库

注意:确保数据库状态为mount,否则会报错

5.1 restore database;

restore database;

5.2 recover database;

recover database;

5.3 打开数据库

alter database open resetlogs;

总结:到此,库已经恢复完成。


个人博客,用于记录工作日常的问题。