本文主要介绍在达梦8中如何删除库级别的备份。
文章内容概览:

第一部分:使用dmrman工具
1 删除指定备份集
使用dmrman工具执行脱机备份
1.1 关闭数据库服务
[dmdba@enmoedu1 ~]$ DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]

1.2 执行备份
调用dmrman
[dmdba@enmoedu1 ~]$ dmrman
dmrman V8
RMAN>
执行备份,将备份存放到/home/dmdba/rman_bak目录下:
backup database '/opt/dm8/data/DAMENG/dm.ini' backupset '/home/dmdba/rman_bak';

操作系统层面查看:
[dmdba@enmoedu1 rman_bak]$ cd /home/dmdba/rman_bak/
[dmdba@enmoedu1 rman_bak]$ ll
总用量 7492
-rw-r--r-- 1 dmdba dinstall 7584256 8月 25 09:30 rman_bak.bak
-rw-r--r-- 1 dmdba dinstall 82432 8月 25 09:30 rman_bak.meta
1.3 删除备份集
remove backupset '/home/dmdba/rman_bak';

操作系统层面查看:

2 批量删除备份集
2.1 执行备份
操作系统层面创建存放备份的目录:
$mkdir /home/dmdba/backup
RMAN>backup database '/opt/dm8/data/DAMENG/dm.ini' backupset '/home/dmdba/backup/full01';
RMAN>backup database '/opt/dm8/data/DAMENG/dm.ini' backupset '/home/dmdba/backup/full02';


操作系统层面查看:
[dmdba@enmoedu1 ~]$ ll /home/dmdba/backup
总用量 0
drwxr-xr-x 2 dmdba dinstall 43 8月 25 09:46 full01
drwxr-xr-x 2 dmdba dinstall 43 8月 25 09:46 full02

###2.2 批量删除
RMAN> remove backupsets with backupdir '/home/dmdba/backup';

操作系统层查看:
[dmdba@enmoedu1 ~]$ ll /home/dmdba/backup
总用量 0
3 指定时间点的批量删除备份
3.1 执行备份
backup database '/opt/dm8/data/DAMENG/dm.ini' backupset '/home/dmdba/backup/full01';

操作系统层查看:
[dmdba@enmoedu1 ~]$ ll /home/dmdba/backup
总用量 0
drwxr-xr-x 2 dmdba dinstall 43 8月 25 09:56 full01
3.2 指定时间删除
remove backupsets with backupdir '/home/dmdba/backup/' until time '2020-08-25 09:58:00';

操作系统层查看:
[dmdba@enmoedu1 ~]$ ll /home/dmdba/backup
总用量 0
第二部分:在disql中使用函数删除备份集
1 可以使用如下过程或函数来校验和删除
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
服务准备:
启动服务并且登陆
[dmdba@enmoedu1 ~]$ DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]
[dmdba@enmoedu1 ~]$ disql sysdba/dmdba123
1.1 SF_BAKSET_CHECK
1.1.1 执行联机备份
提前配置归档模式,可以使用manager工具快速配置。
SQL> backup database full backupset '/home/dmdba/backup/full01';
1.1.2 校验备份集
SQL> select SF_BAKSET_CHECK('DISK','/home/dmdba/backup/full01');
行号 SF_BAKSET_CHECK('DISK','/home/dmdba/backup/full01')
---------- ---------------------------------------------------
1 1
1.1.3 删除备份集
select SF_BAKSET_REMOVE('DISK','/home/dmdba/backup/full01');
操作系统层验证:
[dmdba@enmoedu1 backup]$ ll /home/dmdba/backup/
总用量 0
1.2 SF_BAKSET_REMOVE_BATCH
批量删除
INT SF_BAKSET_REMOVE_BATCH (
device_type varchar,
end_time datetime,
range int,
obj_name varchar(257)
)
range:指定删除备份的级别。1 代表库级,2 代表表空间级,3 代表表级,4 代表归
档备份。若指定 NULL,则忽略备份集备份级别的区分
obj_name:待删除备份集中备份对象的名称,仅表空间级和表级有效。若为表级备份
删除,则需指定完整的表名(模式.表名),否则,将认为删除会话当前模式下的表备份。
若指定为 NULL,则忽略备份集中备份对象名称区分。
注:通过这种方式删除,删除的是在v$backupset中可以查询到的备份。
1.2.1 disql中执行备份:
backup database full backupset '/home/dmdba/backup/full01';
backup tablespace main full backupset '/home/dmdba/backup/full02';
操作系统层查看:
[dmdba@enmoedu1 hot_bak]$ ll /home/dmdba/backup/
总用量 0
drwxr-xr-x 2 dmdba dinstall 63 8月 25 10:46 full01
drwxr-xr-x 2 dmdba dinstall 43 8月 25 10:47 full02
1.2.2 查询备份信息并且执行批量删除
SQL> select backup_name,BACKUP_PATH from v$backupset;
未选定行
1.2.3 添加存放备份集的目录
SQL> select sf_bakset_backup_dir_add('DISK','/home/dmdba/backup');
1.2.4 执行批量删除之前的备份:
SQL> SELECT SF_BAKSET_REMOVE_BATCH ('DISK', now(), NULL, NULL);
行号 SF_BAKSET_REMOVE_BATCH('DISK',NOW(),NULL,NULL)
---------- ----------------------------------------------
1 1
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




