达梦数据库备份还原技术探究

前言

这段时间学习了达梦数据库,我觉得在运维过程中备份还原是非常重要的一部分,如果实施不当,会造成严重的后果,所以简单记录下操作数据库备份还原的基本步骤。
【我主要记录了通过命令行方式进行操作,图形化界面的方式这边就略过;】


一、前提

达梦数据库默认使用DMAP进程。如果服务未开启,数据库备份报错
示例如下:
在这里插入图片描述


二、数据库冷备与还原

2.1使用dmrman进行脱机冷备

RMAN> backup database '/dm/data/DMTEST/dm.ini';
注:做数据库冷备时,数据库必须处于关闭状态,否则报错,截图如下:
在这里插入图片描述
关闭数据库后正常进行备份,截图如下:
在这里插入图片描述

2.2表空间还原恢复

注:DM8表空间的还原与恢复需要在关闭状态下操作.

1、删除普通表数据文件

  • 通过图示方式删除或直接删除物理文件rm -rf T_TBS*.DBF
    在这里插入图片描述
  • 数据库重启查看数据库状态,发现数据库处于mount状态
    在这里插入图片描述
  • 打开数据库后查看表空间状态,表空间状态为1显示脱机状态;
    在这里插入图片描述

2、表空间的还原与恢复

  • 数据库先关闭
    [dmdba@tdmdb DMTEST]$ DmServiceDMTESTSRV stop
    在这里插入图片描述
  • 查看备份集
    RMAN> show backupset '/dm/data/DMTEST/bak/DB_DAMENG_FULL_20261110_230542_629322'
    在这里插入图片描述
  • 还原表空间
    RMAN> restore database '/dm/data/DMTEST/dm.ini' tablespace t_tbs from backupset '/dm/data/DMTEST/bak/DB_DAMENG_FULL_20261110_230542_629322';
    在这里插入图片描述
  • 恢复表空间
    RMAN> recover database '/dm/data/DMTEST/dm.ini' tablespace t_tbs with archivedir '/dm/arch';
    在这里插入图片描述
  • 验证数据文件及其所属表数据是否恢复正常
    在这里插入图片描述

2.3库级还原恢复

1、删除系统表空间数据文件

  • 通过rm方式删除system.dbf文件
    rm SYSTEM.DBF
  • 数据库重启发现无法正常启动
    在这里插入图片描述

2、数据库的还原与恢复

  • 还原数据库
    RMAN> restore database '/dm/data/DMTEST/dm.ini' from backupset '/dm/data/DMTEST/bak/DB_DAMENG_FULL_20261110_230542_629322';
    在这里插入图片描述 -
  • 恢复数据库
    RMAN> recover database '/dm/data/DMTEST/dm.ini' with archivedir '/dm/arch';
    在这里插入图片描述
  • 更新数据库魔术
    RMAN> recover database '/dm/data/DMTEST/dm.ini' update db_magic
    在这里插入图片描述
  • 启动数据库并验证数据
    DmServiceDMTESTSRV start
    select count(*) from t2;
    注:此处表t2是我测试使用的表名

三、数据库联机备份与还原

3.1 备份数据库

注:在disql中执行即可
1.全量备份
SQL> backup database;
2.增量备份
SQL> backup database increment;
3.全量备份至指定目录
SQL> backup database full to fullbk1 backupset '/dm/backup/full/fullbk1';
4.基于全量备份做增量备份
SQL> backup database increment BASE ON BACKUPSET '/dm/backup/full/fullbk1' to incrbk1 backupset '/dm/backup/incr/incrbk1';
下图展示数据库全备及其增量备份操作截图:
在这里插入图片描述

3.2 备份集管理

  • 查看备份集
    SQL> select backup_name,backup_path,type,base_name from v$backupset;
  • 添加备份集目录
    SQL> select * from v$ifun t where t.name like '%BAKSET%';
    SQL> call SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm/backup/full/');
    SQL> call SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm/backup/incr/');
    SQL> select backup_name,backup_path,type,base_name from v$backupset;
    注:如果备份路径不在默认备份路径下,需要通过该函数添加到备份及目录,这样的话就可以通过v$backupset视图进行查询,否则查询不到其他路径的备份信息

3.3备份表空间

表空间全备和增量备份如下:
backup tablespace t_tbs;
backup tablespace t_tbs increment;


四、定期备份作业调度

1、创建代理环境,执行存储过程
sp_init_job_sys(1)

2、创建数据库全备作业

call SP_CREATE_JOB('full_backup',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('full_backup');
call SP_ADD_JOB_STEP('full_backup', 'fullbk1', 6, '00000000', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('full_backup', 'fullbk1', 1, 2, 1, 1, 0, '22:00:00', NULL, '2022-05-06 22:30:00', NULL, '');
call SP_JOB_CONFIG_COMMIT('full_backup');
注释:
SP_CREATE_JOB--------创建全量备份作业full_backup,并启用;
SP_JOB_CONFIG_START--进行作业配置;
SP_ADD_JOB_STEP------增加作业步骤fullbk1;
SP_ADD_JOB_SCHEDULE--增加作业调度:每周日22:00全备;
SP_JOB_CONFIG_COMMIT-结束作业配置

3、创建数据库增量备份作业

call SP_CREATE_JOB('incr_backup',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('incr_backup');
call SP_JOB_SET_EP_SEQNO('incr_backup', 0);
call SP_ADD_JOB_STEP('incr_backup', 'incrbk1', 6, '40000000/dm/backup/full', 0, 0, 0, 0, NULL, 0);
call SP_ALTER_JOB_SCHEDULE('incr_backup', 'incrbk1', 1, 2, 1, 126, 0, '23:00:00', NULL, '2026-11-10 20:56:17', NULL, '');
call SP_JOB_CONFIG_COMMIT('incr_backup');
注释:
SP_CREATE_JOB----------创建增量备份作业incr_backup;
SP_JOB_CONFIG_START----进行作业配置;
SP_JOB_SET_EP_SEQNO----添加作业步骤incrbk1;
SP_ALTER_JOB_SCHEDULE--增加作业调度:每周一二三四五累积增量备份;
SP_JOB_CONFIG_COMMIT---结束作业配置;

4、试调度作业

  • 查看job
    select * from sysjob.sysjobs;
  • 运行job
    dbms_job.run(1794308869);
  • 查看job运行日志
    select * from SYSJOB.SYSJOBHISTORIES2;

可能会出现的报错现象:
① 出现No local or remote archive log日志信息
在这里插入图片描述

原因:由于数据库没有开启归档,需要将数据库切换到mount模式下开启归档之后再进行作业重调度

② 收集到的归档日志不连续
解决:查看数据库的联机日志v r l o g 和 归 档 日 志 V rlog和归档日志V rlogVarch_file,发现归档日志比联机日志大,因为刚从异库恢复过来,数据库还没有经过做过检查点,此时通过checkpoint(100)命令执行完全检查点的方式后再进行作业调度。


总结

数据库的备份和还原就到这里,如有不足的地方,还希望大家指正。
另外,达梦的图形化界面对运维人员很友好,我也会继续学习达梦的一些其他性能和相关系统参数,更详细的去了解达梦的产品功能。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值