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

2.错误原因深度分析
| 核心原因 | 详细说明 |
|---|---|
| 未开启归档模式 | 达梦的联机(热)备份(数据库运行中备份)强制要求开启归档,未开启时直接触发该报错 |
| 归档路径配置无效 | 已开启归档,但归档目录不存在、权限不足、路径错误,导致归档服务不可用 |
| dmarch.ini 配置错误 | 配置文件中归档参数错误,或归档目录无读写权限 |
| 次要原因 | 备份目录权限不足、磁盘空间不足、同名备份集冲突等 |
3.具体分析
1.检查当前归档状态
用disql以SYSDBA身份登录数据库,执行以下命令验证归档状态:
cpp
-- 查看归档配置与状态
SELECT ARCH_DEST, ARCH_STATUS FROM V$ARCH_DEST;
-- 查看归档是否开启
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME = 'arch_mode';
- 若
VALUE为0:表示归档未开启,需执行步骤 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_mode的VALUE为1(归档已开启)ARCH_STATUS为VALID(归档路径正常)
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
修改后需重启数据库生效,同时确保目录权限正确。