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

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

相关推荐
yy_xzz2 小时前
【Linux开发】I/O 复用:select 模型
linux·c++·select
Leo.yuan2 小时前
经营分析如何联动业务与财务?4步打通业财经营分析指标
数据库·数据分析·经营分析
Yana.nice2 小时前
MySQL 事务的四大特性(ACID)
数据库·mysql·oracle
小肝一下2 小时前
每日两道力扣,day6
数据结构·c++·算法·leetcode·双指针·hot100
coder阿龙2 小时前
基于SpringAI+Qdrant+Ollama本地模型和向量数据库开发问答和RAG检索
java·数据库·spring boot·ai·数据库开发
ambition202422 小时前
【算法详解】飞机降落问题:DFS剪枝解决调度问题
c语言·数据结构·c++·算法·深度优先·图搜索算法
小小程序员.¥2 小时前
oracle--视图、序列、索引
服务器·数据库·oracle
I Promise342 小时前
C++ 基础数据结构与 STL 容器详解
开发语言·数据结构·c++