1)手工搭建一主一备数据守护集群;
2)连接集群进行增删改查基本操作;
3)监视器查看集群状态;
1 准备工作
目录规划:(在对应服务器上创建目录owner为dmdba组为dinstall)
数据库软件安装目录 /home/dmdba/dmdbms
实例安装目录 /dmdata/
归档日志存放目录 /dmdata/arch
备份文件存放目录 /dmdata/dmbak/
IP规划:
类别 | IP地址 | 实例名 | 实例端口号 |
---|---|---|---|
主库A | 10.137.88.59 | dw1 | 5236 |
备库B | 10.137.88.61 | dw2 | 5237 |
监视器 | 10.137.88.58 |
【说明】这里将监视器配在独立的服务器上,三台服务器都要事先安装好dm8
端口规划:
实例名 | 实例端口 | MAL 系统监听 TCP 连接的端口 | 实例本地的守护进程监听 TCP 连接的端口 | 实例监听守护进程 TCP 连接的端口 |
---|---|---|---|---|
dw1 | 5236 | 7336 | 7436 | 7536 |
dw2 | 5236 | 7336 | 7436 | 7536 |
2 主备集群配置
2.1 初始化实例
2个节点完成实例初始化
执行以下命令
bash
./dminit path=/home/dmdba/dm8/dmdbms/data db_name=dmdb instance_name=dw1 page_size=32 extent_size=32 log_size=2048 SYSDBA_PWD=Password1 SYSAUDITOR_PWD=Password1 PORT_NUM=5236
【注意】后面实例名需跟此处保持一致,端口号默认为5236(可以不写端口号),密码长度在闭区间[8,48]内,且需要包含大小写和数字。如果有特殊符号的话需要加引号,没有则不用。
常用参数说明
参数 | 说明 | 示例值 |
---|---|---|
PATH | 数据文件路径 | /dm8/data |
DB_NAME | 数据库名 | DAMENG |
INSTANCE_NAME | 实例名 | DMSERVER |
PORT_NUM | 服务端口 | 5236 |
SYSDBA_PWD | SYSDBA密码 | Dameng123 |
PAGE_SIZE | 页大小 | 8,16,32(默认8K) |
CASE_SENSITIVE | 大小写敏感 | 0(不敏感)/1(敏感) |
CHARSET | 字符集 | 0(GB18030)/1(UTF-8)/2(EUC-KR) |
完整参数查看:
bash
./dminit HELP
常用端口对照表
端口类型 | 默认端口 | 配置文件参数 |
---|---|---|
数据库服务端口 | 5236 | PORT_NUM |
MAL通信端口 | 61141 | MAL_PORT |
守护进程端口 | 52141 | DW_PORT |
归档端口 | 5237 | ARCH_PORT |
主库:

备库:
bash
./dminit path=/home/dmdba/dm8/dmdbms/data db_name=dmdb instance_name=dw1 page_size=32 extent_size=32 log_size=2048 SYSDBA_PWD=Password1 SYSAUDITOR_PWD=Password1 PORT_NUM=5236

2.2 启动实例
以主机dmdb01为主库,启动一次实例(启动一次后即可关停)
bash
dmserver /dmdata/dmdb/dm.ini

如图,出现system is ready后输入exit停止数据库。
2.3 备库还原
传输备份文件
【说明】这里利用的是两台服务器,所以需要利用scp命令传输备份文件
ruby
# 主库
scp -r /home/dmdba/bakfull dmdba@10.137.88.61:/home/dmdba/
# 备库
scp -r dmdba@10.137.88.59:/home/dmdba/bakfull /home/dmdba/
backup 全库
在主机dmdb01上执行以下命令,确认主库 dmap 服务已启动:
perl
ps -ef|grep dmap
已启动:

bash
dmdba用户 启动dmrman工具:
./dmrman use_ap=2
执行 backup 全库:
backup database '/dmdata/dmdb/dm.ini' backupset '/home/dmdba/bakfull';


备份还原备库
将备份的文件/home/dmdba/bakfull拷贝到备库服务器上。
在主机dmdb02上使用 dmrman 工具还原备库,dmdba 用户执行:
sql
./dmrman use_ap=2
restore database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';
recover database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';
recover database '/dmdata/dmdb/dm.ini' update db_magic;
【说明】./dmrman use_ap=2这一步很关键,只输./dmrman,在接下来的步骤中会报一堆错
备库:

【说明】图中报错[603]显示为备份期间没有日志产生,可忽略
2.4 修改参数
如何修改去搜vim编辑器的用法
i 修改
esc + / 查找
esc + wq 保存并退出
esc +wq!强制保存并退出
esc + q 退出不保存
修改参数去安装数据库的目录下修改。
2.4.1 修改dm.ini参数
所有节点都要修改
执行以下命令:
bash
vi /dmdata/dmdb/dm.ini
主库dmdb01上修改以下参数值:
ini
INSTANCE_NAME = dw1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
备库dmdb02上修改以下参数值:
ini
INSTANCE_NAME = dw2
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
2.4.2 配置归档配置文件 dmarch.ini
在实例目录下新建文件 dmarch.ini,执行以下命令:
bash
vi /dmdata/dmdb/dmarch.ini
主库dmdb01上添加以下内容:
ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = dw2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
【说明】如果后续ARCH_DEST这里报错的话,可以:
把配置文件改成:
ARCH_DEST = /dmarch
然后输入以下命令:
bash
su - root
sudo mkdir -p /dmarch
sudo chown -R dmdba:dinstall /dmarch
sudo chmod -R 755 /dmarch
exit
touch /dmarch/test_file && echo "权限设置成功"||echo"仍有问题"
rm -f/dmarch/test_file

备库Dmdb02上添加以下内容:
ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = dw1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
2.4.3 配置MAL系统配置文件 dmmal.ini
在实例目录下新建文件 dmmal.ini,执行以下命令。
vi /dmdata/dmdb/dmmal.ini
主备库2个节点文件内容要相同。
ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 15
[MAL_INST1]
MAL_INST_NAME = dw1
MAL_HOST = 10.137.88.59
MAL_PORT = 7336
MAL_INST_HOST = 10.137.88.59
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
[MAL_INST2]
MAL_INST_NAME = dw2
MAL_HOST = 10.137.88.61
MAL_PORT = 7336
MAL_INST_HOST = 10.137.88.59
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
2.4.4 配置守护进程配置文件 dmwatcher.ini
在实例目录下新建文件 dmwatcher.ini,执行以下命令:
bash
vi /dmdata/dmdb/dmwatcher.ini
主备库2节点文件内容要相同。
ini
[GRP_DW]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 30
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 20
INST_OGUID = 453331
INST_INI = /dmdata/dmdb/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDW start

2.5注册服务
以上启动为前台方式启动,仅用户搭建过程中验证配置。配置没问题后需要将实例,守护进程和确认监视器注册为系统服务。
使用 root 用户,到数据库安装目录的script/root下。
注册守护进程服务(主备库都执行)。
bash
./dm_service_installer.sh -t dmwatcher -p DW -watcher_ini /dmdata/dmdb/dmwatcher.ini
注册数据库实例服务(主备库都执行):
bash
./dm_service_installer.sh -t dmserver -p DW -dm_ini /dmdata/dmdb/dm.ini

2.6 Mount状态启动集群
以 mount 方式启动数据库实例
使用 dmdba 用户,执行以下命令(主备库都执行):
bash
su - dmdba
cd /home/dmdba/dmdbms/bin
./dmserver /dmdata/dmdb/dm.ini mount

主备库都要是ready状态,表示成功

2.7 修改数据库模式
在新的终端使用 disql 工具连接数据库:
bash
./disql SYSDBA/Password1
主备库都修改 oguid,执行以下命令:
scss
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
系统通过OGUID值确定一个守护进程组,由用户保证OGUID值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID值。
主库dmdb01上修改数据库模式为 primary,执行以下命令:
scss
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); //第1步
SQL>alter database primary; //第2步
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); //第3步
主库:

备库dmdb02上修改数据库模式为 standby,执行以下命令:
如果当前数据库不是 Normal 模式,需要先修改 dm.ini 中 ALTER_MODE_STATUS 值为 1,允许修改数据库模式,修改 Standby 模式成功后再改回为 0。如果是 Normal 模式,请忽略下面的第 1 步和第 3 步。
scss
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); //第1步
SQL>alter database standby; //第2步
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); //第3步
备库:

2.8 启动守护进程
dmdba 用户下,到数据库安装目录的 bin 下执行以下命令(主备库都执行):
bash
./dmwatcher /dmdata/dmdb/dmwatcher.ini
守护进程启动后,会将 Mount 的实例 Open。这里是前台启动的方式,因为我们前面注册了服务名称,所以就没必要前台启动,直接配好主从的主备关系后crtl+C退出两个实例的前台mount启动,然后调整实例启动服务脚本里的启动状态,依次按顺序启动主、备库实例、然后再主、备库的守护DmWatcher服务。

2.9 配置监视器
启动监视器(可以在任意节点配置)
守护进程配置为自动切换时,必须配置确认监视器。在主备服务器以外的服务器上(需安装有 DM 数据库软件,且与主备心跳网络端口开放)。
设置权限
bash
# 查看当前权限
ls -l dmmonitor.ini
# 设置权限(使用分步法避免错误)
sudo chown dmdba dmmonitor.ini
sudo chgrp dinstall dmmonitor.ini
sudo chmod 640 dmmonitor.ini
新建确认监视器配置文件 dmmonitor.ini,执行以下命令:
bash
vi /dmdata/dmdb/dmmonitor.ini

添加以下内容:
ini
MON_DW_CONFIRM = 0
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 200
MON_LOG_SPACE_LIMIT = 1024
[GRP_DW]
MON_INST_OGUID = 453331
MON_DW_IP = 10.137.88.59:7436
MON_DW_IP = 10.137.88.61:7436
执行以下命令,启动监视器。
bash
su - dmdba
cd /home/dmdba/dmdbms/bin
./dmmonitor /dmdata/dmdb/dmmonitor.ini


启动后输入 show 命令查看集群状态。

其中守护进程状态 WSTATUS 为 OPEN,实例状态 ISTATUS 为 OPEN,归档类型 RTYPE 为 TIMELY,归档状态 RSTAT 为VALID。
2.10 disql 客户端验证
使用 disql 客户端登录主库,创建测试表,插入数据,执行以下命令:
bash
./disql SYSDBA/Password1@10.137.88.59:5236
SQL 提示符下执行以下命令:
sql
create table test(id int);
insert into test values (1);
commit;

用 disql 客户端登录备库,查询测试表验证,执行以下命令:
bash
./disql SYSDBA/Password1@10.137.88.61:5236
sql:
csharp
select * from test;

如图,验证成功
3 可能遇到的问题
无法访问/dm8/data/
- 达梦数据库未正确安装或安装路径不正确
- /dm8/data/目录尚未创建
- 当前用户没有访问该目录的权限
- 环境变量配置不正确
解决方案
1. 确认达梦数据库安装情况
首先检查达梦数据库是否已正确安装:
perl
ps -ef | grep dmserver
如果未找到相关进程,可能需要重新安装达梦数据库。
2. 检查目录是否存在
bash
ls -ld /dm8/data/
如果目录不存在,需要创建:
bash
sudo mkdir -p /dm8/data/
sudo chown -R dmdba:dinstall /dm8/
3. 检查权限问题
确保当前用户(通常是dmdba)有访问权限:
bash
sudo chown -R dmdba:dinstall /dm8/data/
sudo chmod -R 755 /dm8/data/
4. 检查环境变量
确保已设置达梦数据库的环境变量:
bash
cat ~/.bash_profile
应该包含类似以下内容:
bash
export DM_HOME=/dm8
export PATH=$DM_HOME/bin:$PATH
export LD_LIBRARY_PATH=$DM_HOME/bin:$LD_LIBRARY_PATH
5. 初始化数据库实例
如果/data目录是空的,可能需要初始化数据库:
bash
cd /dm8/bin
./dminit path=/dm8/data
解决达梦数据库归档目录权限不足问题
您在执行 touch /dmarch/test_file
时遇到权限不足的问题,这表明 dmdba
用户对 /dmarch
目录没有足够的权限。以下是完整的解决方案:
1. 检查当前权限状态
bash
ls -ld /dmarch
正常应该显示:
bash
drwxr-xr-x 2 dmdba dinstall 4096 Jan 1 10:00 /dmarch
2. 授予dmdba用户完整权限
bash
# 使用root用户执行
sudo chown -R dmdba:dinstall /dmarch
sudo chmod -R 775 /dmarch # 给属主和属组读写执行权限
# 如果存在SELinux限制
sudo chcon -R -t dm_db_data_t /dmarch
3. 验证权限修复
bash
# 切换回dmdba用户
su - dmdba
# 再次测试
touch /dmarch/test_file && echo "权限设置成功" || echo "仍有问题"
rm -f /dmarch/test_file
4. 特殊情况处理
情况1:目录被其他进程占用
bash
sudo lsof /dmarch
# 如果有进程占用,先停止相关服务
sudo systemctl stop DmServiceDMSERVER
情况2:文件系统只读
bash
mount | grep "/dmarch"
# 如果是ro,重新挂载
sudo mount -o remount,rw /dmarch
情况3:磁盘空间满
bash
df -h /dmarch
# 清理空间或扩展存储
5. 生产环境推荐权限设置
对象 | 推荐权限 | 命令示例 |
---|---|---|
归档目录 | 775 | chmod 775 /dmarch |
归档文件 | 664 | find /dmarch -type f -exec chmod 664 {} ; |
归档子目录 | 775 | find /dmarch -type d -exec chmod 775 {} ; |
6. 永久生效配置
bash
# 设置默认umask(添加到/etc/profile)
echo "umask 002" | sudo tee -a /etc/profile
source /etc/profile
# 设置开机自动修复权限(可选)
echo "chown -R dmdba:dinstall /dmarch" | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local
7. 验证达梦归档功能
sql
# 启动数据库到mount模式
./dmserver /dmdata/dmdb/dm.ini mount
# 在disql中验证
./disql SYSDBA/SYSDBA
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
SQL> SELECT * FROM V$ARCHIVED_LOG;
如果仍有问题,请检查:
- 用户组是否正确:
id dmdba
应显示属于dinstall
组 - SELinux状态:
getenforce
如果是Enforcing模式需要调整策略 - 磁盘inode是否耗尽:
df -i /dmarch
验证达梦数据库归档路径(ARCH_DEST)正确性的完整指南
1. 基础路径验证方法
检查路径是否存在
bash
# 检查目录是否存在
ls -ld /dmarch
- 有效输出 :显示目录详细信息(如
drwxr-xr-x 2 dmdba dinstall 4096 Jan 1 10:00 /dmarch
) - 无效输出 :
ls: cannot access '/dmarch': No such file or directory
测试路径可写性(使用dmdba用户)
bash
su - dmdba
test -w /dmarch && echo "可写" || echo "不可写"
2. 高级验证方法
创建测试文件
bash
# 测试文件创建/删除
touch /dmarch/test_file && rm /dmarch/test_file && echo "测试成功" || echo "测试失败"
检查磁盘空间
bash
df -h /dmarch # 查看挂载点和可用空间
验证文件系统类型
shell
mount | grep "/dmarch"
# 应显示rw(读写)权限,如:/dev/sdb1 on /dmarch type xfs (rw,relatime)
3. 达梦专用验证命令
在数据库内验证归档配置
sql
-- 查看归档参数
SELECT PARA_NAME, PARA_VALUE FROM V$DM_INI WHERE PARA_NAME LIKE '%ARCH%';
-- 查看归档日志记录
SELECT COUNT(*) FROM V$ARCHIVED_LOG;
强制生成归档日志测试
sql
ALTER SYSTEM ARCHIVE LOG CURRENT;
4. 自动化验证脚本
bash
#!/bin/bash
ARCH_PATH="/dmarch"
echo "===== 基础检查 ====="
[ -d "$ARCH_PATH" ] && echo "目录存在" || echo "目录不存在"
[ -w "$ARCH_PATH" ] && echo "目录可写" || echo "目录不可写"
df -h $ARCH_PATH
echo -e "\n===== 达梦归档测试 ====="
./disql SYSDBA/SYSDBA <<EOF
ALTER SYSTEM ARCHIVE LOG CURRENT;
SELECT DEST_NAME, DEST_PATH, STATUS FROM V$DM_ARCH_DEST WHERE DEST_PATH='$ARCH_PATH';
EOF
5. 常见问题排查
问题现象 | 解决方案 |
---|---|
目录不存在 | sudo mkdir -p /dmarch && chown dmdba:dinstall /dmarch |
权限不足 | sudo chmod -R 775 /dmarch |
磁盘空间满 | 清理空间或扩展存储 |
SELinux限制 | sudo chcon -t dm_db_data_t /dmarch |
路径拼写错误 | 检查大小写和特殊字符 |
6. 生产环境建议
- 使用独立存储:归档目录最好放在独立磁盘
bash
mkfs.xfs /dev/sdb1 && mount /dev/sdb1 /dmarch
- 设置监控:检测归档目录空间
bash
echo "/dmarch 90%" >> /etc/monit/conf.d/space.conf
- 定期维护:设置归档清理策略
sql
ALTER SYSTEM SET ARCHIVE_DELETE_POLICY='TIME,7' SCOPE=BOTH;
通过以上方法,您可以全面验证归档路径的正确性。如果仍有问题,建议检查 /dmdata/dmdb/dm_DMSERVER.log
获取详细错误信息。
达梦数据库归档路径(ARCH_DEST)配置
在达梦数据库的dmarch.ini
配置文件中,ARCH_DEST
参数指定归档日志的存储路径,关于"不需要以/arch结尾"的原因如下:
1. 技术本质原因
- 路径解析机制:
-
- 达梦数据库的归档模块会自动处理路径结尾
- 系统内部会标准化路径格式(自动处理末尾斜杠)
- 文件生成规则:
-
- 归档文件实际存储在
/dmarch/arch_XXX.log
这样的子路径中 - 数据库自动创建必要的子目录结构
- 归档文件实际存储在
2. 实际配置建议
正确配置示例
ini
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch # 简洁形式(推荐)
# ARCH_DEST = /dmarch/ # 带斜杠也可工作但不必要
应避免的配置
ini
ARCH_DEST = /dmarch/arch # 冗余路径(不推荐)
3. 路径验证方法
sql
# 查看实际归档文件存储位置
ls -l /dmarch/arch_*
# 在数据库内验证
./disql SYSDBA/SYSDBA <<EOF
SELECT DEST_PATH, ARCHIVED_SEQ FROM V$ARCHIVED_LOG
WHERE DEST_PATH LIKE '%/dmarch%' FETCH FIRST 1 ROW ONLY;
EOF
4. 生产环境最佳实践
- 独立挂载点:
bash
# 专为归档创建独立分区
mkfs.xfs /dev/sdb1
mount /dev/sdb1 /dmarch
- 权限设置:
bash
chown -R dmdba:dinstall /dmarch
chmod -R 775 /dmarch
- 监控配置:
bash
# 监控归档空间使用率
echo "/dmarch 85%" >> /etc/monit/conf.d/archive.conf
5. 技术原理图示
c
/dmarch/ ← ARCH_DEST指定的根目录
├── arch_0001.log ← 数据库自动生成
├── arch_0002.log
└── arch_XXXX.log
达梦数据库会自动在指定路径下创建归档文件,无需人工指定arch
子目录。这种设计使配置更简洁,同时降低因路径配置错误导致的问题风险。
实例(DM2)的归档信息在实例(DM1)中没有找到
错误诊断

关键错误信息是:
csharp
[monitor] 2025-08-18 15:12:20: 实例(DM2)的归档信息在实例(DM1)中没有找到
这表明备库(DM2)无法从主库(DM1)获取归档日志,导致数据同步中断。以下是详细分析:
错误原因
- 归档配置不完整
-
- 主库未正确配置归档到备库的路径
- 备库未正确配置从主库接收归档
- 网络连通性问题
-
- 主备库之间的MAL端口(7336)或守护端口(7436)不通
- 归档日志不连续
-
- 主库生成的归档日志未完整传输到备库
- 配置不一致
-
- 主备库的OGUID或归档参数不一致
解决方案
1. 检查主库归档配置
sql
-- 在主库执行
SELECT DEST_NAME, DEST_TYPE, DEST_PATH FROM V$DM_ARCH_DEST;
确保包含备库的归档配置:
ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DM2 # 备库实例名
ARCH_TRACE_FLAG = ALL
2. 验证网络连接
yaml
# 在备库测试连接主库端口
telnet 10.137.90.249 7336 # MAL端口
telnet 10.137.90.249 7436 # 守护端口
3. 修复归档中断问题
sql
-- 在备库执行(需停止守护进程)
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
-- 重新注册归档
ALTER DATABASE REGISTER ARCHIVELOG '/path/to/missing/archive.log';
-- 重新启动恢复
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
4. 检查关键配置一致性
配置项 | 主库(DM1) | 备库(DM2) |
---|---|---|
OGUID | 453331 | 453331 |
MAL_PORT | 7336 | 7336 |
DW_PORT | 7436 | 7436 |
ARCH_INI | 1 | 1 |
完整修复流程
- 停止集群服务
arduino
# 主备库都执行
systemctl stop DmWatcherServiceDW
systemctl stop DmServiceDMSERVER
- 修正主库归档配置
bash
vi /dmdata/dmdb/dmarch.ini
添加:
ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DM2
ARCH_TRACE_FLAG = ALL
- 启动服务(严格按顺序)
perl
# 1. 启动备库实例
systemctl start DmServiceDMSERVER@DM2
# 2. 启动主库实例
systemctl start DmServiceDMSERVER@DM1
# 3. 启动备库守护
systemctl start DmWatcherServiceDW@DM2
# 4. 启动主库守护
systemctl start DmWatcherServiceDW@DM1
验证修复结果
bash
dmmonitor /dmdata/dmdb/dmmonitor.ini
MON> SHOW DATABASE
正常输出应显示:
sql
Database Role Status OGUID 归档状态
---------- ------- --------- ------- --------
DM1 PRIMARY OPEN 453331 VALID
DM2 STANDBY MOUNT 453331 VALID
预防措施
- 设置归档监控
bash
# 监控归档间隔
echo "*/5 * * * * dmdba /dm8/bin/check_archive.sh" >> /var/spool/cron/dmdba
- 定期检查同步状态
sql
-- 在备库执行
SELECT ARCHIVED_SEQ, APPLIED_SEQ FROM V$ARCH_GAP;
- 配置告警规则
ini
# 在dmmonitor.ini中添加
[ALARM]
ARCHIVE_LAG = 5 # 允许的最大日志延迟数