一、前言
数据备份永远是摆在第一位的,一个有效的备份,DBA睡觉都香;
可以应对各种情况,比如:
1、数据库中勒索病毒被锁死,需要从备份集进行恢复;
2、数据库宕机,遭到破坏,DB坏块;
3、误删相关数据,需要从备份进行恢复回来;
4、开发人员突然想拿回之前的数据等等。
这里我们探讨下数据库层面的备份也就是说基于数据库RMAN工具进行备份操作的2种备份位置方式,to disk和to sbt_tape;在12c版本后统一叫sbt,可能以前用途都是在tape磁带上,故叫sbt_tape;
当然也有其他非数据库RMAN本身的备份手段,CDP(continual data protection)这种算是磁盘级别的备份技术,针对I/O进行部署,持续对数据块进行监控。CDP备份技术算是在传统的备份技术上的一个跃升了,传统备份技术是对接数据库备份工具接口进行备份,存放为固定的备份集格式,在备份技术再一次发展引申出更高效、非入侵式的备份技术CDM(Copy Data Management)这种也是直接对接数据库备份接口,跟传统备份一样也是应用层接口的备份,CDM的备份特点为原生的数据文件格式,有众多的优势。CDP和CDM备份技术这里先不详细展开。
这里先主要梳理下Oracle的备份设备类型,to disk和to sbt_tape;
方式一:to disk备份规划
其实这种备份方式大家也比较熟悉,就是我们常规的备份在本地磁盘某个目录下;当然在我们规划一些小型的备份场景可以用到此方式,结合网络共享NAS进行备份规划,这样也实现将数据备份到远程服务器。往往一个合理的备份都是备份到远程的服务器的,不会还有人讲备份放在本地的吧。
对于这种网络挂载NAS过来的备份方式,就考虑DBA的技术水平了,只要你备份shell脚本编写的的好,一样轻松,不需要每套数据库编写一份备份脚本,当然也可以利用catalog资料库也可以实现统一管理。
不过这样NAS网络共享利用NFS/SMB(CIFS)/iscsi等挂载方式,其实也是不算太稳定的长期挂着网络连接在数据库操作系统层面,网络出现波动容易掉盘hang住等问题,对带宽要求高,容易占满带宽,并发多效率就会出现低下。
方式二:to sbt_tape(SBT)备份规划
SBT全称System Backup to Tape.
此方式为主流的备份方式,也就是各大备份厂商采用的方式,例如(NBU、CV、NetWorker、OSB、ZDLRA、国内一些备份产品)等这些备份软件,基于流式备份,无需进行远端磁盘挂载在数据库服务器进行备份。
基于SBT备份方式,实现备份介质类型有多种,可以是带库,虚拟带库,远端服务器的磁盘,对于ZDLAR Oracle的零数据丢失一体机更能将数据备份在表空间当中。
SBT方式无法安装庞大的客户端程序,只需开发一个SBT动态共享库文件存着数据库环境中利用RMAN进行链接即可;当然DBA实力够强悍的话,也可以利用C/C++开发出一个 SBT API实现备份到远端服务器的磁盘中,并且也需要在远端服务器开发出介质管理器;在自行开发的sbt共享库文件当中可以传很多的参数进行,例如路径信息、文件大小、并发等等相关自行开发的参数
此备份方式效率比较高,安全性也高,sbt客户端(MM)跟介质管理器端(MML)进行数据流的传输,带宽要求小,在传输的过程中可以实现压缩、加密;大型备份环境中首选,管理方便。
当然Oracle本身也自带了SBT共享库文件(oracle.disksbt),只不过只能备份在本地路径。
自带SBT示例:
RMAN> run {
allocate channel ch1 type 'sbt_tape' maxpiecesize=3072M PARMS="SBT_LIBRARY=oracle.disksbt,ENV=(BACKUP_DIR=/home/oracle/backup)";
backup datafile 1 format ='%U';
}2> 3> 4>
using target database control file instead of recovery catalog
allocated channel: ch1
channel ch1: SID=190 device type=SBT_TAPE
channel ch1: WARNING: Oracle Test Disk API
Starting backup at 06-APR-22
channel ch1: starting full datafile backup set
channel ch1: specifying datafile(s) in backup set
input datafile file number=00001 name=/oracle/app/oracle/oradata/testdb/system01.dbf
channel ch1: starting piece 1 at 06-APR-22
channel ch1: finished piece 1 at 06-APR-22
piece handle=030q7qkh_1_1 tag=TAG20220406T015737 comment=API Version 2.0,MMS Version 8.1.3.0
channel ch1: backup set complete, elapsed time: 00:00:07
channel ch1: starting full datafile backup set
channel ch1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ch1: starting piece 1 at 06-APR-22
channel ch1: finished piece 1 at 06-APR-22
piece handle=040q7qko_1_1 tag=TAG20220406T015737 comment=API Version 2.0,MMS Version 8.1.3.0
channel ch1: backup set complete, elapsed time: 00:00:01
Finished backup at 06-APR-22
released channel: ch1
RMAN>
Note:通过日志可以看到本身的API接口为2.0,介质管理器版本为8.1.3.0,也可以看到备份片只有handle句柄信息,并没有显示出路径。




