达梦数据库管理备份

一、概述

        管理备份一个重要的目的是删除不再需要的备份,DM 没有提供自动删除过期备份的功 能,删除备份需要手动执行。

备份管理相关系统过程与函数总结如下:

 SF_BAKSET_BACKUP_DIR_ADD:添加备份目录。

 SF_BAKSET_BACKUP_DIR_REMOVE:指定删除内存中的备份目录。

 SF_BAKSET_BACKUP_DIR_REMOVE_ALL:删除内存中全部的备份目录。

 SF_BAKSET_CHECK:对备份集进行校验。

 SF_BAKSET_REMOVE:删除指定设备类型和指定备份集目录的备份集。

 SF_BAKSET_REMOVE_BATCH:批量删除满足指定条件的所有备份集。

 SP_DB_BAKSET_REMOVE_BATCH:批量删除指定时间之前的数据库备份集。

 SP_TS_BAKSET_REMOVE_BATCH:批量删除指定表空间对象及指定时间之前的表 空间备份集。

 SP_TAB_BAKSET_REMOVE_BATCH:批量删除指定表对象及指定时间之前的表备 份集

 SP_ARCH_BAKSET_REMOVE_BATCH:批量删除指定条件的归档备份集。 备份管理相关动态视图总结如下:

 V$BACKUPSET:显示备份集基本信息。

 V$BACKUPSET_DBINFO:显示备份集的数据库相关信息。

 V$BACKUPSET_DBF:显示备份集中数据文件的相关信息。

 V$BACKUPSET_ARCH:显示备份集的归档信息。

 V$BACKUPSET_BKP:显示备份集的备份片信息。

 V$BACKUPSET_SEARCH_DIRS:显示备份集搜索目录。

 V$BACKUPSET_TABLE:显示表备份集中备份表信息。

 V$BACKUPSET_SUBS:显示并行备份中生成的子备份集信息。

注意: SF_BAKSET_BACKUP_DIR_ADD 添加备份目录仅对当前会话有效。调用删除 备份等函数或查看动态视图时要先调用 SF_BAKSET_BACKUP_DIR_ADD 添 加备份目录,否则仅搜索默认备份路径下的备份集。

二、备份目录管理

这里的备份目录是指备份集搜索目录,这些目录被记录在内存中,当执行动态视图

或批量删除备份集时,均会从这些指定目录中先搜索所有备 份集信息

 SF_BAKSET_BACKUP_DIR_ADD

 SF_BAKSET_BACKUP_DIR_REMOVE

 SF_BAKSET_BACKUP_DIR_REMOVE_ALL

 SF_BAKSET_BACKUP_DIR_ADD 函数

添加备份目录。若添加目录已经存在或者为库默认备份路径,则认为已经存在,不添加, 但也不报错。

定义:

INT SF_BAKSET_BACKUP_DIR_ADD( device_type varchar,backup_dir varchar(256))

参数说明: device_type:待添加的备份目录对应存储介质类型,DISK 或者 TAPE。目前,无论 指定介质类型为 DISK 或者 TAPE,都会同时搜索两种类型的备份集。

backup_dir:待添加的备份目录。

返回值: 1:目录添加成功;其它情况下报错。

举例说明: SQL>SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

执行结果 1

 SF_BAKSET_BACKUP_DIR_REMOVE 函数

删除备份目录。若删除目录为库默认备份路径,不进行删除,认为删除失败。若指定目 录存在于记录的合法目录中,则删除;不存在或者为空则跳过,正常返回。

INT SF_BAKSET_BACKUP_DIR_REMOVE ( device_type varchar, backup_dir varchar(256) )

参数说明: device_type:待删除的备份目录对应存储介质类型。待删除的备份目录对应存储介 质类型,DISK 或者 TAPE。 backup_dir:待删除的备份目录。

返回值: 1:目录删除成功、目录不存在或者目录为空;

0:目录为库默认备份路径;其他情况 报错。 举例说明

SQL>SELECT SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/home/dm_bak');

执行结果 1

 SF_BAKSET_BACKUP_DIR_REMOVE_ALL 函数

清理全部备份目录,默认备份目录除外

定义:

INT SF_BAKSET_BACKUP_DIR_REMOVE_ALL ()

返回值: 1:目录全部清理成功;其它情况下报错。 举例说明:

SQL>SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();

执行结果 1

三、备份集校验与删除

单个备份集删除时并行 备份中地子备份集不允许单独删除;

在给定备份集搜集目录中发现存在引用删除备份集作为 基备份的需要执行级联删除,默认报错。

批量删除备份集时,跳过收集到的单独的子备份集。

备份目录要写到最里层。

例如备份文件的目录是G:\dmdbms\bak\db_bak_02,添加备份目录要用如下命令

 SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', 'G:\dmdbms\bak\db_bak_02');

不能用 SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', 'G:\dmdbms\bak');

 SF_BAKSET_CHECK

 SF_BAKSET_REMOVE

 SF_BAKSET_REMOVE_BATCH

 SP_DB_BAKSET_REMOVE_BATCH

 SP_TS_BAKSET_REMOVE_BATCH

 SP_TAB_BAKSET_REMOVE_BATCH

 SP_ARCH_BAKSET_REMOVE_BATCH

 SF_BAKSET_CHECK 函数

对备份集进行校验。 定义

INT SF_BAKSET_CHECK( device_type varchar, bakset_pathvarchar(256) )

参数说明: device_type:设备类型,disk 或 tape。 bakset_path:待校验的备份集目录。 返回值: 1:备份集目录存在且合法;否则报错。

举例说明:

SQL>BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_check';

SQL> SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/db_bak_for_check'); 执行结果 1

 SF_BAKSET_REMOVE 函数

删除指定设备类型和指定备份集目录的备份集。

一次只检查一个合法.meta 文件,然 后删除对应备份集;若存在非法或非正常备份的.meta 文件,则报错或直接返回,不会接 着检查下一个.meta 文件;若同一个备份集下还存在其它备份文件或备份集,则只删除备份文件,不会删除整个备份集

定义:

INT SF_BAKSET_REMOVE ( device_type varchar, backsetpath varchar(256), option integer )

参数说明:

device_type:设备类型,disk 或 tape。

backsetpath:待删除的备份集目录。

Option:删除备份集选项,0 默认删除,1 级联删除。可选参数。并行备份集中子备份集不允许单独删除。目标备份集被其他备份集引用为基备份的,默认删除,报错;级联删除 情况下,会递归将相关的增量备份也删除。

返回值: 1:备份集目录删除成功,其它情况下报错。

举例说明:

SQL>BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_remove'; SQL>BACKUP DATABASE INCREMENT BACKUPSET '/home/dm_bak/db_bak_for_remove_incr';

SQL> SELECT SF_BAKSET_REMOVE('DISK','/home/dm_bak/db_bak_for_remove');

SQL> SELECT SF_BAKSET_REMOVE('DISK','/home/dm_bak/db_bak_for_remove',1);

执行结果 1

 SF_BAKSET_REMOVE_BATCH 函数

批量删除满足指定条件的所有备份集。

定义:

INT SF_BAKSET_REMOVE_BATCH (

        device_type varchar,

        end_time datetime,

        range int,

        obj_name varchar(257) )

参数说明:

device_type:设备类型,disk 或 tape。指定 NULL,则忽略存储设备的区分。

end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指 定。

range:指定删除备份的级别。1 代表库级,2 代表表空间级,3 代表表级,4 代表归 档备份。若指定 NULL,则忽略备份集备份级别的区分

obj_name:待删除备份集中备份对象的名称,仅表空间级和表级有效。若为表级备份 删除,则需指定完整的表名(模式.表名),否则,将认为删除会话当前模式下的表备份。 若指定为 NULL,则忽略备份集中备份对象名称区分。

返回值:

1:备份集目录删除成功,其它情况下报错。

举例说明:

SQL>BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_remove'; SQL>BACKUP TABLESPACEMAIN FULL BACKUPSET '/home/dm_bak/ts_bak_for_remove'; SQL>SELECT SF_BAKSET_REMOVE_BATCH ('DISK', now(), NULL, NULL);

执行结果 1

 SP_DB_BAKSET_REMOVE_BATCH 过程

批量删除指定时间之前的数据库备份集。使用该方法前,需要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除默认备份路径下 的备份集。

定义:

SP_DB_BAKSET_REMOVE_BATCH ( device_type varchar, end_time datetime )

参数说明:

device_type:设备类型,disk 或 tape。指定 NULL,则忽略存储设备的区分。

end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指 定。

举例说明:

SQL>BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_batch_del'; SQL>SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

SQL>CALL SP_DB_BAKSET_REMOVE_BATCH('DISK', NOW());

 SP_TS_BAKSET_REMOVE_BATCH 过程

批量删除指定表空间对象及指定时间之前的表空间备份集。使用该方法前,需要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除默认备份路径下 的备份集。

定义:

SP_TS_BAKSET_REMOVE_BATCH (

device_type varchar,

end_time datetime,

ts_name varchar(128) )

参数说明: device_type:设备类型,disk 或 tape。指定 NULL,则忽略存储设备的区分。 end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指 定。 ts_name:表空间名,若未指定,则认为删除所有满足条件的表空间备份集。

举例说明:

SQL>BACKUP TABLESPACE MAIN BACKUPSET '/home/dm_bak/ts_bak_for_batch_del'; SQL>SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

SQL>CALL SP_TS_BAKSET_REMOVE_BATCH('DISK',NOW(),'MAIN');

 SP_TAB_BAKSET_REMOVE_BATCH 过程

批量删除指定表对象及指定时间之前的表备份集。使用该方法前,需要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除默认备份路径下 的备份集。

定义:

SP_TAB_BAKSET_REMOVE_BATCH (

device_type varchar,

end_time datetime,

sch_name varchar(128),

tab_name varchar(128) )

参数说明: device_type:设备类型,disk 或 tape。指定 NULL,则忽略存储设备的区分。 end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指 定。 sch_name:表所属的模式名。

tab_name:表名,只要模式名和表名有一个指定,就认为需要匹配目标;若均指定为 NULL,则认为删除满足条件的所有表备份。

举例说明:

SQL>CREATE TABLE TAB_FOR_BATCH_DEL(C1 INT);

SQL>BACKUP TABLE TAB_FOR_BATCH_DEL BACKUPSET'/home/dm_bak/tab_bak_for_batch_del';

SQL> SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

SQL> CALL SP_TAB_BAKSET_REMOVE_BATCH('DISK',NOW(),'SYSDBA','TAB_FOR_BATCH_DEL');

 SP_ARCH_BAKSET_REMOVE_BATCH 过程

批量删除指定时间之前的归档备份集。使用该方法前,需要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除默认备份路径下 的备份集。

定义: SP_ARCH_BAKSET_REMOVE_BATCH ( device_type varchar, end_time datetime )

参数说明:

device_type:设备类型,disk 或 tape。指定 NULL,则忽略存储设备的区分。

end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指 定。

举例说明: SQL>BACKUP ARCHIVELOG BACKUPSET '/home/dm_bak/arch_bak_for_batch_del';

SQL>SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

SQL>CALL SP_ARCH_BAKSET_REMOVE_BATCH('DISK', NOW());

四、备份信息查看

DM 提供了一系列动态视图供用户查看备份集相关信息,在查看之前应先使用 SF_BAKSET_BACKUP_DIR_ADD 添加备份集目录,否则只显示默认备份路径下的备份集信 息,使用方法如下例所示:

SQL>SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', '/home/dm_bak');

 V$BACKUPSET

V$BACKUPSET 显示备份集基本信息。

 V$BACKUPSET_DBINFO

V$BACKUPSET_DBINFO 显示备份集的数据库相关信息。

 V$BACKUPSET_DBF

显示备份集中数据文件的相关信息,表备份时无效。

 V$BACKUPSET_ARCH

显示备份集中归档文件的信息,且仅归档备份才会有数据。

 V$BACKUPSET_BKP

显示备份集的备份片信息。

 V$BACKUPSET_SEARCH_DIRS

显示备份集搜索目录。

 V$BACKUPSET_TABLE

显示表备份集中备份表信息,仅表备份有效。

 V$BACKUPSET_SUBS

显示并行备份中生成的子备份集信息。

五、我认为最重要的脚本

SELECT SF_BAKSET_REMOVE_BATCH ('DISK', now(), NULL, NULL);  --批量删除满足指定条件的所有备份集。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值