达梦数据库在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

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

相关推荐
6Hzlia19 小时前
【Hot 100 刷题计划】 LeetCode 148. 排序链表 | C++ 归并排序自顶向下
c++·leetcode·链表
TDengine (老段)19 小时前
工业软件的未来:构建在工业数据底座之上的 AI Agent
大数据·数据库·人工智能·时序数据库·tdengine
qq_3493174819 小时前
Tailwind CSS如何自定义间距数值_配置theme spacing扩展CSS边距
jvm·数据库·python
coderlin_19 小时前
Langgraph项目三 agent搭建
java·数据库·redis
xyx-3v19 小时前
信号量(二进制/计数)
java·linux·数据库
是个西兰花20 小时前
C++:异常
开发语言·c++·异常
u01102251220 小时前
HTML5多媒体资源动态替换Source标签的刷新机制
jvm·数据库·python
cpp_250120 小时前
P1873 [COCI 2011/2012 #5] EKO / 砍树
数据结构·c++·算法·题解·二分答案·洛谷·csp
AbandonForce20 小时前
Map类:pair键值对|map的基本操作|operator[]
开发语言·c++·算法·leetcode
云祺vinchin20 小时前
“十五五”引领灾备升级,数字化安全建设如何合规落地?
网络·数据库·安全·kubernetes·数据安全·容灾备份