DM8物理备份和逻辑备份基础参数使用介绍

一、备份方式适用场景 

二、物理备份原理

        物理备份则直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备份集中。物理备份过程中,不关心数据页的具体内容是什么,也不关心数据页属于哪一张表,只是简单的根据数据库文件系统的描述,来挑选有效的数据页。

       物理备份分为数据备份Redo log备份。

(1)数据备份:物理备份数据备份过程中,根据 DM 数据文件系统的描述信息,准确判断每一个数据页是否被分配、使用,将未使用的数据页剔除,仅保留有效数据页进行备份。

(2)redo log 备份:将数据备份过程中所产生的redo log拷贝下来。

1、完全备份

执行完全备份,备份程序会扫描数据文件,拷贝所有被分配、使用的数据页,写入到备份片文件中。库备份会扫描整个数据库的所有数据文件,表空间备份则只扫描表空间内的数据文件。数据文件备份结束后,BEGIN_LSN 之前修改的所有数据页都被备份下来。

注:库备份不会备份TMP表空间里的数据文件。

 

 1.1. 节点 BEGIN_LSN

        为了保证备份的完整性和有效性,必须包含的归档日志起始 LSN 值。BEGIN_LSN = 备份开始时检查点偏移前一个 RLOG_PKG max_lsn。(即有固定的起始点)

1.2. 节点 END_LSN

        为了保证备份的完整性和有效性,必须包含归档日志结束 LSN 值。END_LSN = 备份结束时 FILE_LSN。(即一直拷贝到最后一次redo log刷盘)

        为了简化还原过程,增量备份时要求 BEGIN_LSN 必须大于等于基准备份的 END_LSN,如果不满足条件,则强制生成检查点,直到 BEGIN_LSN 满足条件为止。

问:如果增备的BEGIN_LSN不大于基备份的END_LSN,会发生什么?

答:会做很多次日志重做,例如有一次全备、三次增备,如果每次增备都是BEGIN_LSN不大于基备份的END_LSN进行的,那么恢复时都要重做每次备份的redo日志,即四次,反之,则仅需要重做最后一次增备的redo log即可恢复所有的数据。

2、增量备份

      执行增量备份,备份程序会扫描数据文件,拷贝所有基备份结束以后被修改的数据页,写入到备份片文件中。为了简化增量备份的还原过程,避免还原过程中重做基备份集对应的归档日志,DM 要求执行增量备份时,<=基备份 END_LSN 的所有数据页已经写入磁盘。由于基备份过程中,基备份 BEGIN_LSN END_LSN 之间的数据页可能被修改,导致数据库中的数据与备份文件中的数据不一致,所以增量备份会拷贝 LSN >基备份 BEGIN_LSN 的数据页写入备份片文件中(如图 2.中第三根横轴所示),LSN <= 基备份 BEGIN_LSN 的数据页不需要写入到备份片文件中。

2.1 差异增备

        在最近一次备份(全备或增备)基础上进行增量备份。

2.2 累计增备

        在最近一次全备基础上进行增量备份。

3、表空间备份

        表空间备份只拷贝指定表空间的数据页,因此,相对于数据库备份而言,表空间备份的速度会更快,生成的备份集会更小。对一些包含关键数据的用户表空间,我们可以使用表空间备份功能,进一步保障数据安全。表空间备份支持完全备份和增量备份,但只能在联机状态下执行。不支持 temp 表空间备份还原。

4、表备份

        表备份主要包括数据备份和元信息备份两部分。与库备份和表空间备份不同,表备份不是直接扫描数据文件,而是从 BUFFER 中加载数据页,拷贝到备份片文件中。表备份的元信息则包括建表语句、重建约束语句、重建索引语句,以及其他相关属性信息。表备份不需要配置归档就可以执行,并且不支持增量表备份。

三、逻辑备份原理

        逻辑备份是指利用 dexp 导出工具,将指定对象(库级、模式级、表级)的数据导出到文件的备份方式。逻辑备份针对的是数据内容,并不关心这些数据物理存储在什么位置。

四、物理备份语法详解(以库级备份为例)

4.1 语法

BACKUP DATABASE [ [ [FULL] [DDL_CLONE] ] | INCREMENT [CUMULATIVE][WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}]|[BASE ON BACKUPSET '<基备份目录>']][TO <备份名>][BACKUPSET '<备份集路径>']

4.2 基础参数应用场景及解释

(1)确定备份类型:全备 or 差异增备 or 累计增备

  • FULL:备份类型。FULL 表示完全备份,可不指定,默认为完全备份。
  • INCREMENT:备份类型。INCREMENT 表示增量备份,若要执行增量备份必须指定该参数。
  • CUMULATIVE:用于增量备份中,指明为累积增量备份类型,若不指定则缺省为差异增量备份类型。 【两者差异体现在基备份的基础上】
    • 差异增量备份:差异增量备份的基备份既可以是一个完全备份集,也可以是一个增量备份集。
    • 累计增量备份:累积增量备份的基备份只能是完全备份集。

(2) 确定联机数据库备份路径:BACKUPSET

        该参数用于指定备份集的输出路径,若指定为相对路径,则在默认备份路径下生成相对路径名称的目录,该目录下生成备份集。若不指定,则在默认备份路径中按约定规则,生成默认备份集目录。库级备份默认备份集目录名生成规则 : DB_ 库 名 _ 备份类型 _ 备份时间,如DB_DAMENG_FULL_20180518_143057_123456。表明该备份集为 2018 年 5 月 18 日备份与还原14 时 30 分 57 秒 123456 毫秒时生成的库名为 DAMENG 的数据库完全备份集。

默认备份目录:默认的备份路径为 dm.ini 中 BAK_PATH 配置的路径,通常默认是实例安装目录下的bak目录,如/dmdata/DM01/bak。

实例1:不指定backupset

backup DATABASE full;

实例2:指明相对路径

backup database full BACKUPSET 'BAK02';

 实例3:指明绝对路径

backup database full BACKUPSET '/dmdata/DM01/BAK03';

 

⭐⭐⭐补充说明:一个目录一个备份集,不能单目录备份多个文件!

[执行语句1]:(在实例3的基础上)

backup database full to BAK01 BACKUPSET '/dmdata/DM01/BAK03';

执行失败(语句1)

-8055: 备份目录冲突

 (3)增量备份指定基备份集路径 WITH BACKUPDIR 和BASE ON BACKUPSET

        WITH BACKUPDIR:用于增量备份中,指定基备份的搜索目录,最大长度为 256 个字节。若不指定,自动在默认备份目录和当前备份目录下搜索基备份。如果基备份不在默认的备份目录或当前备份目录下,增量备份必须指定该参数。

        BASE ON BACKUPSET:用于增量备份中,指定基备份集路径。

        基备份集的搜索目录包含四种:默认备份目录、WITH BACKUPDIR子句指定的目录、还原时备份集所在的上级目录、增量备份时基备份集所在的上级目录。当使用WITH BACKUPDIR指定一个有效路径时,dm都会从该路径中辨识出搜索目录,在这个路径中找到合适的基备份集。例如是差异增备,则会找到最近一次的备份集(全备或增备)作为基备份集,如果是累计增备,则会找到最近一次的全备集作为基备份集。(对应实例1)

实例1:

创建测试环境:做三次全备,名称分别为bak01.bak、bak02.bak、bak03.bak。

SQL> backup database full backupset '/dmdata/DM01/bak/BAK01';
SQL> backup database full backupset '/dmdata/DM01/bak/BAK02';
SQL> backup database full backupset '/dmdata/DM01/bak/BAK03';

分别指定不同路径做增备,查看增备的基备份情况:

(1)指定'/dmdata/DM01/bak'(该路径下有三个全备路径)作为搜索目录。

backup DATABASE INCREMENT WITH BACKUPDIR '/dmdata/DM01/bak' to incr01 ;

(2)指定'/dmdata/DM01/bak/BAK01'(该路径下有一个全备路径)作为搜索目录。

backup DATABASE INCREMENT WITH BACKUPDIR '/dmdata/DM01/bak/BAK01' to incr02 ;

(3)指定'/dmdata/DM01/bak/BAK01'(该路径下有一个全备路径)作为基备份集路径。

backup DATABASE INCREMENT BASE ON BACKUPSET '/dmdata/DM01/bak/BAK01' to incr03 ;

(4)指定'/dmdata/DM01/bak/'(该路径下有三个全备路径)作为基备份集路径。

backup DATABASE INCREMENT base ON BACKUPSET '/dmdata/DM01/bak/' to incr06 ;

执行失败(语句1)

-10001: [错误码:-127]无效的备份集目录[/dmdata/DM01/bak]

执行情况:

select backup_name,base_name from SYS."V$BACKUPSET";

 结果分析:增备incr01会在搜索目录中找到最近一次的备份集作为基备份集;增备incr02虽然指定的路径下只有一个全备集,但其会自动往上一级去搜索最近一次的备份集作为基备份集(即incr01);

(4)指定备份集的逻辑名称

        指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:DB_库名_备份类型_备份时间。其中,备份时间为开始备份时的系统时间。

注:DM中备份名分为两种类型,一是物理名称,一是逻辑名称。

物理名称指的是从系统路径查看的文件名,该名称不由用户指定,该名称同其所在目录名称相同。

逻辑名称指的是经过TO命名后的名称,可通过select * from SYS."V$BACKUPSET" 查看。

例如:在默认备份路径下执行备份

backup DATABASE full to BAK03;

(视图查询)

(系统路径查看)

五、逻辑备份语法详解

dexp PARAMETER=<value> { PARAMETER=<value> }

5.1 基础参数介绍

(1)USERID:数据库的连接信息(必选)
(2)FILE:确认备份的文件名,默认是dexp.dimp
(3)DIRECTORY:导出文件所在目录
(4)备份的级别选择:
  • 库级:FULL,使用方式为FULL = y
  • 模式级:SCHEMAS(默认),使用方式schemas=schema1,schema2...
  • 用户级:OWNER,使用方式OWNER=user1,user2,user3...
  • 表级别:TABLES,使用方式TABLES=table1,table2,table3...

(5)LOG:指明日志名称,默认是dexp.log

5.2 实例1:全库备份

./dexp SYSDBA/SYSDBA@192.168.0.248:5236 FILE=dexp01.dmp LOG=dexp01.log DIRECTORY=/emc_2/data/dexp FULL=Y 

5.3 实例2:表备份

./dexp SYSDBA/SYSDBA@192.168.0.248:5236 FILE=dexp03.dmp LOG=dexp03.log DIRECTORY=/emc_2/data/dexp tables=test01,test02

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值