达梦数据库在Linux备份报错 -8003: 缺少本地或者远程归档 解决方案

目录

1.背景

2.错误原因深度分析

3.具体分析

4.补充排查与备选方案


1.背景

今天在ubuntu上调试达梦数据库备份的时候报错了,具体错误如下:

2.错误原因深度分析

核心原因 详细说明
未开启归档模式 达梦的联机(热)备份(数据库运行中备份)强制要求开启归档,未开启时直接触发该报错
归档路径配置无效 已开启归档,但归档目录不存在、权限不足、路径错误,导致归档服务不可用
dmarch.ini 配置错误 配置文件中归档参数错误,或归档目录无读写权限
次要原因 备份目录权限不足、磁盘空间不足、同名备份集冲突等

3.具体分析

1.检查当前归档状态

disqlSYSDBA身份登录数据库,执行以下命令验证归档状态:

cpp 复制代码
-- 查看归档配置与状态
SELECT ARCH_DEST, ARCH_STATUS FROM V$ARCH_DEST;
-- 查看归档是否开启
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME = 'arch_mode';
  • VALUE0:表示归档未开启,需执行步骤 2 配置归档
  • ARCH_STATUS不为VALID:表示归档路径配置无效,需修正路径 / 权限

2.开启归档并配置有效归档路径

注意:此操作需要SYSDBA权限,会短暂切换数据库状态,建议业务低峰期执行

cpp 复制代码
-- 1. 切换数据库到MOUNT状态(暂停业务读写,仅允许管理员操作)
ALTER DATABASE MOUNT;

-- 2. 提前在系统中创建归档目录并授权(Linux命令,以dmdba用户执行)
mkdir -p /home/tearshark/dmarch
chown dmdba:dinstall /home/tearshark/dmarch
chmod 755 /home/tearshark/dmarch

-- 3. 添加本地归档(替换为你实际的归档路径)
ALTER DATABASE ADD ARCHIVELOG 'TYPE=LOCAL, DEST=/home/tearshark/dmarch, FILE_SIZE=1024, SPACE_LIMIT=0';
-- 参数说明:
-- TYPE=LOCAL:本地归档(必选)
-- DEST:归档日志存储目录(必须提前创建,且dmdba用户有读写权限)
-- FILE_SIZE:单个归档文件大小(单位MB,示例1GB)
-- SPACE_LIMIT=0:不限制归档目录总空间(可根据需求设置上限,单位MB)

-- 4. 开启归档模式
ALTER DATABASE ARCHIVELOG;

-- 5. 切回OPEN状态,恢复业务
ALTER DATABASE OPEN;

3.验证归档配置生效

重新执行步骤 1 的查询,确认:

  • arch_modeVALUE1(归档已开启)
  • ARCH_STATUSVALID(归档路径正常)

4.重新执行备份命令

确保备份目录/home/tearshark/backup/2026-04-08_174650/已提前创建,且dmdba用户有读写权限,然后执行备份:

cpp 复制代码
BACKUP DATABASE FULL TO test11 BACKUPSET '/home/tearshark/backup/2026-04-08_174650/test11' COMPRESSED LEVEL 3;

4.补充排查与备选方案

1.权限与目录检查

  • 归档目录、备份目录的所有者必须为dmdba:dinstall,权限不低于755
  • 执行以下命令验证权限:
cpp 复制代码
ls -ld /home/tearshark/dmarch /home/tearshark/backup/2026-04-08_174650/
  • df -h检查磁盘空间,确保归档、备份目录所在分区空间充足

2.冷备份备选(无需开归档)

如果业务不允许开启归档,可使用冷备份(数据库完全关闭状态下备份):

cpp 复制代码
# 1. 停止达梦数据库服务
systemctl stop DmServiceDMSERVER
# 2. 使用dmrman执行冷备份(替换为实际dm.ini路径和备份路径)
dmrman CTLSTMT="BACKUP DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FULL TO test11 BACKUPSET '/home/tearshark/backup/2026-04-08_174650/test11' COMPRESSED LEVEL 3;"
# 3. 启动数据库服务
systemctl start DmServiceDMSERVER

3.dmarch.ini 配置检查(手动配置方式)

若通过配置文件dmarch.ini管理归档,需确保参数正确:

cpp 复制代码
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/tearshark/dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0

修改后需重启数据库生效,同时确保目录权限正确。

相关推荐
王维同学29 分钟前
[自学][Windows C++]RunOnceEx 注册表分组键的安全遍历
c++·windows·安全·开源
笃行3501 小时前
国产化落地避坑 · 干货向|Oracle 迁金仓 KES,我把外连接消除排在隐性陷阱第一位
数据库
Scott9999HH1 小时前
告别流量波动玄学!从法拉第电磁定律到底层 C/C++ 流量累积算法,深度解密工业级电磁流量计选型与开发
c语言·c++·算法
老纪的技术唠嗑局2 小时前
花一年时间整理出的:AI 数据库混合搜索入门实践
数据库
脱胎换骨-军哥2 小时前
C++/Rust无缝互操作:混合系统新常态
开发语言·c++·rust
川石课堂软件测试2 小时前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
笃行3503 小时前
国产化落地避坑 · 干货向|迁移后那条「测试能过、一上生产就查空」的 SQL,多半栽在 WHERE 函数顺序上
数据库
蓝田~3 小时前
MySQL慢查询怎么优化?B+Tree索引原理+MVCC读不阻塞写+EXPLAIN执行计划,从5秒到0.05秒
数据库·mysql
sunxunyong4 小时前
doris用户资源组配置
数据库
Cloud云卷云舒4 小时前
云卷云舒:HaishanDB的AI原生能力主要应用场景
数据库·人工智能·ai-native·haishandb·移动云长期记忆