首页 > 数据库技术 > 详细

OracleDBA职责—1—备份与恢复技术2

时间:2020-07-12 19:21:31      阅读:97      评论:0      收藏:0      [点我收藏+]

RMAN备份

1. 什么是RMAN?

官方定义RMAN:
技术分享图片

首先RMAN是一个与Oracle数据库集成的程序相当于数据库的一个功能不需要被单独安装。
技术分享图片
RMAN的最小单位是文件,也就是说他是针对文件进行备份而不可以是某个表。


RMAN的连接方式:
1)本地连接:

[oracle@server1 app]$ echo $ORACLE_SID
proe
[oracle@server1 app]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Tue Jul 7 16:48:27 2020
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: PROE (DBID=485315595)

RMAN> 

2)网络连接:

[oracle@server1 ~]$ rman target sys/oracle@192.168.0.50:1521/server1

3)服务名连接:

[oracle@server1 ~]$ rman target sys/oracle@proe
RMAN备份的几种类别:

1)backupset:备份集,只针对数据进行备份。
-compress buckupset,压缩备份集,只将备份目标文件中的数据部分抽取出来,不包含数据的地方跳过。
备份集:备份集是逻辑上的,它是所有备份片的集合,备份片才是物理上的,piece handle。
2)image copy:镜像拷贝,和原数据完全一样包括结构,可以让备份文件直接代替原文件。
测试这几种类别最终的大小:

镜像拷贝:
RMAN> backup as copy tablespace example format ‘/u01/app/backup/example_copy_%T‘;

Starting backup at 07-JUL-20
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=/u01/app/oracle/oradata/proe/example01.dbf
output file name=/u01/app/backup/example_copy_20200707 tag=TAG20200707T171203 RECID=3 STAMP=1045156330
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
Finished backup at 07-JUL-20

备份集:
RMAN> backup as backupset tablespace example format ‘/u01/app/backup/example_bs_%T‘;

Starting backup at 07-JUL-20
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=00005 name=/u01/app/oracle/oradata/proe/example01.dbf
channel ORA_DISK_1: starting piece 1 at 07-JUL-20
channel ORA_DISK_1: finished piece 1 at 07-JUL-20
piece handle=/u01/app/backup/example_bs_20200707 tag=TAG20200707T171524 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 07-JUL-20
不加 as backupset也可以,默认就是这个。

压缩备份集:
RMAN> backup as compressed backupset tablespace example format ‘/u01/app/backup/example_c_bs_%T‘;

Starting backup at 07-JUL-20
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=/u01/app/oracle/oradata/proe/example01.dbf
channel ORA_DISK_1: starting piece 1 at 07-JUL-20
channel ORA_DISK_1: finished piece 1 at 07-JUL-20
piece handle=/u01/app/backup/example_c_bs_20200707 tag=TAG20200707T171834 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 07-JUL-20

查看一下这3个备份的大小:
技术分享图片
还是有一些差距的。
查看备份:
备份集:
技术分享图片
镜像备份:
技术分享图片
注意:如果这个备份文件已经在系统层面删除了,在这里还是会存在。
技术分享图片
这样再查看就不会存在了:
技术分享图片

RMAN支持哪些文件备份:
SYS@proe>select * from v$rman_backup_type;

    WEIGHT INPUT_TYPE
---------- -------------
         1 BACKUPSET    备份集
         2 SPFILE    spfile
         3 CONTROLFILE    控制文件
         4 ARCHIVELOG    归档日志文件
         5 DATAFILE INCR    数据文件增量备份
         6 DATAFILE FULL    数据文件全量备份
         7 DB INCR    整库增量备份
         8 RECVR AREA    闪回区备份
         9 DB FULL    数据库全备(0级)

9 rows selected
数据库各类文件备份操作:
  • 参数文件的备份与恢复:
    Oracle中参数文件按照是否可以直接修改分为了动态参数文件和静态参数文件,动态参数文件是二进制的无法直接修改也就是spfile是可以通过RMAN进行备份的,静态参数文件pfile只能通过物理备份copy的形式来做。
    技术分享图片
    如上,命令和最终备份片的位置。
    模拟参数文件丢失场景:
    将spfile文件修改名字模拟spfile损坏(pfile,spfile有一个就可以启动数据库所以都要改一下):
    技术分享图片
    然后启动就会报错,
    技术分享图片
    通过RMAN进行恢复:
    启动伪实例(仅用于参数文件恢复)
    技术分享图片
    技术分享图片
    再重新查看发现文件已经生成:
    技术分享图片
  • 控制文件备份与恢复:
    控制文件进行备份:
    技术分享图片
    查看关于控制文件的备份信息:
    技术分享图片
    整体恢复方式和参数文件恢复类似,但是由于控制文件中记录着数据库的变化所以在恢复之前一定要更新SCN号,使用recover。
RMAN> alter database open resetlogs;
 使用resetlogs的原因是recover命令只能修复控制文件中数据库物理结构信息,而无法修改控制文件中的当前重做日志的
 序列号等信息,recover命令执行完毕后,控制文件中当前在线日志序列号仍然是陈旧的。虽然使用了resetlogs,但是因
 为recover database命令成功执行已提交的事务不会丢失,resetlogs仅仅是为了照顾还原的控制文件,与不完全恢复的
 resetlogs是不同的。
  • 数据文件的备份与恢复:
    需要使用rman备份的时候数据库必须是归档模式
    备份数据文件的类型:文件级别,表空间级别,整库级别

1)备份系统表空间system:
技术分享图片
对system表空间下的表做一些操作:
技术分享图片
切换几次日志:
技术分享图片
模拟系统表空间文件损坏:
技术分享图片
此时系统出现问题崩溃:
技术分享图片
从下面的图片来看,系统表空间文件是关键性的系统数据文件,一旦损坏数据库可以启动到mount状态但是无法打开。也就是说这个时候元数据信息是可以看到的因为已经mount数据库了。
技术分享图片

接下来进行RMAN恢复。
查看关于系统表空间的备份信息:
技术分享图片
还原system表空间:
技术分享图片
修复system表空间:
技术分享图片
启动即可:
技术分享图片
再次查看表信息:
技术分享图片
备份后删除的表不存在了,说明表空间恢复并不涉及表空间下的表。表仍需单独备份。
查看数据文件信息:
技术分享图片
已经恢复。

2)非关键性数据文件:
模拟普通数据文件损坏如何通过RMAN备份进行恢复。
首先创建模拟需要的表:testtable,testtable2并相应的插入一些数据。
技术分享图片
可以看到在TEST_1这个表空间下存在两个测试用的表。
对这个表空间进行RMAN备份
技术分享图片
查看RMAN备份信息可以看到备份已经成功。
技术分享图片
备份已经完成,接下来对这个表空间里面的表进行一些操作使其内容发生一些变化。我们插入一些数据。
技术分享图片
然后我们需要将这个表空间的表的数据文件进行破坏掉。
首先查找这个表空间的数据文件在哪里。
技术分享图片
确定文件位置后进行模拟删除。建议使用cp复制模拟删除。
技术分享图片
数据文件模拟删除后,需要把数据库缓存刷新掉,把内存缓冲区数据写回到数据文件,然后ckpt进程就会发现错误,实例从而崩溃。
技术分享图片
此时查看数据库的状态:
技术分享图片
为打开状态未崩溃,说明此时数据文件已经同步想要从数据文件读数据到缓冲区时才发现文件错误,并不会导致实例崩溃。

进入RMAN恢复阶段
此时实例未崩溃所以需要将这个表空间先做离线处理。注意immediate直接离线避免脏块写入。
技术分享图片
进行表空间还原操作:
技术分享图片
而后进行表空间修复:
技术分享图片
最后将表空间置于在线即可。
技术分享图片
查看表数据可以看到后期插入的数据也已经还原。
技术分享图片

另外一种情况就是,当数据文件损坏时实例直接崩溃,失去连接。重新连接并启动,只能将数据库启动到mount状态。这个时候直接进入RMAN进行上述表空间还原操作和表空间修复操作即可。然后将数据库open。





OracleDBA职责—1—备份与恢复技术2

原文:https://www.cnblogs.com/plutozzl/p/13289393.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!