DATABASE ENTERPRISE MANAGER
监控、告警、巡检、备份、主备、SQL治理与数据迁移
| 文档属性 | 说明 |
|---|---|
| 适用范围 | DEM9.0.1及相近版本;小版本菜单以实际界面为准 |
| 发布日期 | 2026年8月 |
| 信息安全 | 网络地址、账号、口令、路径及业务对象均已脱敏 |
本文是一份DEM基本操作指南。内容按照“先接入、再监控、后处置”的实际工作顺序组织,覆盖dmagent部署、主机与数据库监控、告警闭环、进程管理、在线巡检、远程启停、备份验证、主备集群、SQL治理、数据生成与迁移等常用能力。
本文不是功能学习记录,也不以复述界面为目标。每项操作均尽量给出使用场景、前置条件、菜单路径、执行步骤、成功判定、风险提示和常见问题,便于读者在没有原作者陪同的情况下独立完成操作。
版本说明|示例界面来自DEM9.0.1环境。不同补丁版本可能调整菜单名称、按钮位置或字段标签,但操作对象、权限边界和验证思路基本一致。遇到界面差异时,应以当前环境和官方手册为准。
文档中的截图保留原始彩色界面,仅对可能暴露环境信息的位置进行局部遮盖;正文统一使用占位符。实际执行时必须替换为本环境的真实值,禁止直接复制示例中的地址、账号或目录。
| 占位符 | 含义 | 示例用途 |
|---|---|---|
| <DEM_URL> | DEM访问地址 | 浏览器登录入口 |
| <DMAGENT_HOME> | dmagent安装目录 | 执行service.sh或start.sh |
| <主机A_IP>/<主机B_IP> | 被监控主机地址 | 主机、数据库、主备接入 |
| <数据库端口> | 数据库监听端口 | 连通性检查与实例接入 |
| <代理通信端口> | dmagent通信端口 | 主机与DEM服务端通信 |
| <备份目录> | 备份集存放目录 | 全量、增量备份及校验 |
| <模式名>/<表名> | 业务数据库对象 | 统计信息、SQL调优与迁移 |
保密|生产截图、日志和报告发布前,应再次检查并脱敏IP、主机名、账号、口令、数据库名、业务对象、路径、证书和令牌;无法判断时按敏感信息处理。
DEM是面向达梦数据库的集中式Web管理与运维平台。典型部署由DEM服务端、DEM仓库数据库、被监控数据库、被监控主机以及部署在主机侧的dmagent组成。浏览器负责操作入口,DEM服务端负责统一管理与任务编排,仓库数据库保存配置、监控数据和告警记录,dmagent负责采集主机与进程信息并执行经授权的运维动作。
从工作流看,DEM把分散的命令行检查集中为可观测、可追踪、可复用的操作链:采集产生指标,指标命中规则形成告警,告警触发人工或自动处置,处置后继续采集并确认恢复。巡检、备份、SQL审核和迁移任务则形成独立的任务记录与结果报告。
| 组成 | 主要职责 | 关键依赖 |
|---|---|---|
| DEM服务端 | 提供Web界面、任务编排、权限控制、告警与报表 | 应用服务、仓库数据库、网络连通 |
| DEM仓库数据库 | 保存监控历史、配置、任务与审计数据 | 容量规划、备份、稳定运行 |
| dmagent | 采集主机与进程信息,执行文件传输及远程运维 | 正确的agent.ini、运行账号、端口与权限 |
| 被监控数据库 | 提供数据库运行指标并接受经授权的操作 | 监听正常、监控账号、最小必要权限 |
| 浏览器客户端 | 提供操作与审计入口 | 受支持浏览器、访问控制、统一认证策略 |
资源监控:统一查看主机、数据库、进程、集群的当前状态和历史趋势。
告警管理:按对象、指标和阈值配置规则,区分严重、一般、轻微等级,并跟踪恢复。
运维执行:支持批量SQL、脚本、SSH以及数据库启停、进程拉起等授权操作。
在线巡检:按模板检查主机、数据库、表空间、归档、备份、会话、对象与运行状态。
备份管理:执行全量或增量备份,并通过备份集检查确认介质可读。
高可用管理:部署和监控数据守护集群,查看角色与同步状态并实施受控切换。
SQL治理:执行SQL审核、调优、索引建议与统计信息维护。
数据工具:执行数据生成、数据库迁移、兼容性评估、对象比较和SQL转换。
DEM能够降低重复操作成本,但不能替代变更审批、容量规划、备份恢复演练和故障根因分析。所有会改变数据库状态、数据内容、主备角色或访问路径的操作,都应先获得授权,并准备回退方案。界面显示“成功”也不能代替业务验证:例如主备切换后还必须检查应用重连、读写能力和复制状态。
高风险操作|远程启停、自动拉起、批量脚本、备份目录变更、索引应用、数据迁移以及主备切换均可能影响业务。生产环境必须执行双人复核或等效审批,并保留任务记录。
确认对象:核对环境、主机、实例、端口、集群名称和业务归属。
确认权限:使用最小必要权限账号,避免共享高权限口令。
确认影响:判断操作是只读、可逆还是高风险变更,并确认维护窗口。
执行操作:按步骤保存任务编号、时间、执行人和关键参数。
技术验证:检查服务、端口、数据库状态、告警状态、日志和任务结果。
业务验证:由业务方或应用监控确认连接、读写和关键交易正常。
闭环留痕:记录结果、异常、回退动作和后续改进项。
正式接入前先建立资源清单。资源清单既是配置输入,也是后续告警归属、权限分配和故障排查的依据。生产、测试、开发环境应使用明确标签,避免同名实例导致误操作。
| 类别 | 必须收集的信息 | 检查要点 |
|---|---|---|
| DEM平台 | 访问地址、版本、仓库容量、管理员与审计角色 | 确认HTTPS、时间同步、备份与访问来源限制 |
| 主机 | IP、操作系统、主机名、时区、CPU、内存、磁盘 | 确认主机名唯一、时间一致、采集端口可达 |
| 数据库 | 实例名、监听端口、版本、字符集、运行账号 | 确认账号权限、监听地址、实例归属 |
| dmagent | 安装目录、运行账号、通信端口、文件传输端口 | 确认目录权限、agent.ini、服务自启动 |
| 业务 | 系统名称、负责人、维护窗口、告警联系人 | 确认告警分派、变更审批和升级路径 |
| 备份 | 备份目录、保留周期、介质容量、恢复目标 | 确认目录可写、空间、跨主机可见性和恢复演练 |
网络策略应以实际部署架构和agent.ini为准。不要根据截图中的端口直接开通。至少需要验证浏览器到DEM服务端、DEM服务端到仓库数据库、DEM服务端到dmagent、dmagent到被监控数据库等链路。若使用文件分发、集群部署或批量SSH,还要检查对应的文件传输与远程登录通道。
# 在源端验证目标端口,命令按环境选择
nc -vz <目标IP> <目标端口>
telnet <目标IP> <目标端口>
curl -kI https://<DEM服务端>:<HTTPS端口>/
ss -lntp | grep '<端口>'
检查|网络连通只表示TCP链路可建立,不代表认证、协议或权限正确。端口通过后仍需执行DEM中的“连接测试”,并观察至少两个采集周期。
平台账号按角色分离:平台管理员负责对象与权限,运维人员负责监控与处置,审计人员负责查看记录。
数据库监控账号仅授予读取必要动态视图和指标的权限;需要启停、备份或DDL时,再为对应任务配置受控权限。
dmagent运行账号应具备读取主机指标、访问数据库安装目录和执行授权命令的权限,不应默认使用root长期运行。
集群部署或注册系统服务可能需要root权限,应在安装阶段临时使用并保留审计记录。
口令不得写入知识库、脚本明文或截图。优先使用平台的凭据管理能力,并设置轮换周期。
主机、DEM服务端、仓库数据库和数据库服务器的时间偏差会导致采集点错位、告警恢复延迟、任务记录难以对齐,甚至出现主机状态“未知”。接入前应确认NTP或chrony状态,且时区配置一致。
timedatectl status
chronyc tracking
date '+%F %T %z'
建议采用“环境-系统-节点-角色”的命名方式,例如<生产>-<订单>-<节点01>-<主库>。名称应可唯一定位对象,但不应包含密码、真实客户名称或其他不必要的敏感信息。
| 检查项 | 通过标准 | 未通过处理 |
|---|---|---|
| 版本兼容 | DEM、数据库、dmagent处于支持组合 | 查阅当前版本手册与补丁说明 |
| 主机时间 | 时区一致且时间偏差在组织标准内 | 修复NTP或chrony后再接入 |
| 网络 | 所需链路双向或单向按架构可达 | 修正路由、防火墙或安全组 |
| 账号 | 连接测试成功且权限符合最小化原则 | 补授权或更换专用账号 |
| 容量 | 仓库、日志、备份目录空间满足保留策略 | 扩容、调整保留或迁移目录 |
| 审批 | 生产操作具备变更单、窗口和回退方案 | 暂停实施,补齐审批 |
dmagent是DEM与被监控主机之间的执行与采集组件。主机CPU、内存、网络、磁盘I/O、文件系统和进程等数据主要依赖dmagent上报;远程启停、自动拉起、文件传输和部分集群部署能力也依赖它。dmagent未运行或端口不可达时,主机可能显示离线或未知,相关运维动作也会失败。
1、确认安装包与DEM版本匹配,并核对<DMAGENT_HOME>目录归属。
2、检查agent.ini中的服务端地址、通信端口、文件传输端口和节点标识。
3、确认运行账号对安装目录、日志目录和需要管理的数据库目录具有必要权限。
4、确认主机时间同步正常,防火墙允许所需链路。
5、若计划注册系统服务,准备临时root权限和回退步骤。
在测试环境或排查阶段,可以直接使用start.sh启动。该方式便于快速观察日志,但需要额外考虑会话退出后的进程保活。正式环境更适合注册为系统服务。
cd <DMAGENT_HOME>
./start.sh <DMAGENT_HOME>/agent.ini
ps -ef | grep -v grep | grep dmagent
ss -lntp | egrep ':<代理通信端口>|:<文件传输端口>'
service.sh可用于安装、启动或重启dmagent服务。安装系统服务通常需要root权限,后续日常运行可使用指定服务账号。实际服务名称以脚本安装结果为准。
cd <DMAGENT_HOME>
./service.sh install
systemctl daemon-reload
./service.sh start
systemctl enable DmAgentService.service
systemctl status DmAgentService.service --no-pager -l
服务状态应显示active(running),并且dmagent所需端口处于监听状态。若服务名不同,应使用安装脚本输出的真实名称,不要机械复制示例。
图1 主机AAAA上的dmagent服务启动并处于运行状态
菜单通常位于“监控→主机→添加主机”。填写主机地址、dmagent通信参数和认证信息后先执行连接测试,再保存。主机首次接入后不要立即以单个采集点判断成功,应等待至少两个采集周期。
1、进入“监控→主机”,选择“添加主机”。
2、填写主机名称、<主机A_IP>、代理通信端口和必要认证信息。
3、执行“连接测试”,确认返回成功。
4、保存配置并进入主机详情页。
5、连续观察CPU、内存、Swap、磁盘、网络和文件系统数据至少两个采集周期。
6、检查主机状态不再显示未知或离线,并确认最近采集时间持续更新。
图2 DEM已识别主机AAAA并持续采集负载信息
如果需要接入第二台主机,重复相同步骤并使用唯一节点名称。完成后应比较两个节点的采集时间和资源曲线,确保不是仅保存了静态配置。
图3 主机BBBB上的dmagent服务启动并处于运行状态
| 层次 | 判定标准 | 建议观察 |
|---|---|---|
| 进程 | dmagent进程持续存在且无频繁重启 | systemctl状态、进程启动时间 |
| 端口 | 配置的通信或传输端口正确监听 | ss或netstat输出 |
| 连接 | DEM连接测试成功 | 连接测试结果与服务端日志 |
| 采集 | 最近采集时间持续更新 | 至少两个采集周期 |
| 指标 | CPU、内存、磁盘、网络等曲线有合理数据 | 无长期固定值、空值或异常跳变 |
| 现象 | 优先原因 | 处理建议 |
|---|---|---|
| 主机状态未知 | 时间不同步、dmagent停止、网络中断、配置错误 | 按时间→进程→端口→网络→agent.ini顺序检查 |
| 连接测试失败 | 地址或端口错误、防火墙阻断、服务未监听 | 在DEM服务端验证目标端口并查看dmagent日志 |
| 有状态无指标 | 采集权限不足、系统命令不可用、采集周期未到 | 等待两个周期后检查账号权限与日志 |
| 服务反复重启 | 端口冲突、配置错误、目录权限或资源不足 | 查看journalctl和dmagent日志,修复后再启动 |
| 自启动未生效 | 服务未enable或单元文件未刷新 | daemon-reload后enable并重启主机验证 |
数据库接入应在对应主机已经稳定采集之后进行。这样可以同时观察主机层与数据库层指标,并在告警时判断问题位于网络、主机、进程还是数据库内部。准备数据库地址、监听端口、实例名、监控账号和密码,确认监听正常且监控账号具备读取必要动态视图的权限。
# 主机侧检查监听
ss -lntp | grep ':<数据库端口>'
# 数据库内检查实例状态
SELECT INSTANCE_NAME, STATUS$ FROM V$INSTANCE;
菜单通常位于“监控→数据库→添加数据库”。建议将数据库对象绑定到已接入的主机,便于DEM关联展示主机负载、数据库状态和进程信息。
1、进入“监控→数据库”,选择“添加数据库”。
2、填写对象名称、<主机A_IP>、<数据库端口>、数据库类型和版本信息。
3、选择专用监控账号并填写认证信息,避免在名称或备注中记录口令。
4、执行连接测试,确认认证与网络均正常。
5、保存后进入数据库详情页,检查实例状态、会话、表空间、归档和性能指标。
6、等待至少两个采集周期,确认最近采集时间持续更新。
图4 DEM已接入并管理AAAA_DMSERVER数据库
多节点环境应逐一接入并校验。不要因为其中一个节点接入成功就批量假定其他节点配置正确,尤其要核对IP、端口、实例名和主备角色。
图5 DEM已接入并管理AAAA与BBBB节点数据库
告警阈值不能只使用通用默认值。建议先采集一个完整业务周期,区分工作日、批处理窗口和低峰时段,再建立符合本系统的基线。对于刚上线的系统,可先使用较宽阈值观察趋势,待数据稳定后逐步收紧。
| 监控域 | 重点指标 | 解读要点 |
|---|---|---|
| 主机资源 | CPU、内存、Swap、磁盘I/O、文件系统、网络 | 关注持续高负载、抖动、队列和空间增长趋势 |
| 实例状态 | 运行状态、监听、启动时间、角色 | 状态变化应与变更记录一致 |
| 连接与会话 | 当前会话、活动会话、连接增长、长事务 | 结合连接池上限和业务峰值判断 |
| 存储 | 表空间使用率、数据文件、归档空间 | 同时关注百分比和剩余绝对容量 |
| 性能 | 慢SQL、锁等待、吞吐、缓存与I/O | 用趋势和业务时段对比,避免单点误判 |
| 可恢复性 | 最近备份、备份状态、归档连续性 | 成功任务不等于可恢复,必须定期校验与演练 |
先看对象总览:确认状态、角色、版本、最近采集时间是否可信。
再看时间范围:突发故障使用分钟级窗口,容量趋势使用天或周级窗口。
对齐主机与数据库曲线:CPU上升是否伴随活动会话、I/O或特定SQL增加。
检查同集群节点:主库异常时,备库同步延迟、归档和网络是否同步变化。
保存证据:记录时间范围、筛选条件、指标值和关联任务编号,不只保存局部截图。
| 验收项 | 通过条件 |
|---|---|
| 对象唯一性 | 主机名、实例名、环境标签可唯一定位,不与其他环境混淆 |
| 连接与采集 | 连接测试成功,连续两个采集周期有数据 |
| 状态一致 | DEM状态与数据库查询、服务状态一致 |
| 指标完整 | 主机、实例、会话、表空间、归档、备份等核心页面可查看 |
| 权限可控 | 监控账号为专用账号,权限和口令保管符合组织要求 |
| 告警归属 | 对象已关联负责人、通知策略和升级路径 |
有效告警应当具备明确对象、可执行含义、合理阈值、持续时间、等级、接收人和恢复条件。只配置“超过阈值就报警”容易造成瞬时抖动和告警风暴;只看百分比也可能忽略小容量设备的绝对剩余空间。
| 要素 | 建议 |
|---|---|
| 对象 | 明确到主机、数据库、进程、表空间或自定义SQL对象 |
| 指标 | 选择能直接反映风险且可执行处置的指标 |
| 阈值 | 结合历史基线、容量和业务峰值设置 |
| 持续时间 | 过滤短暂尖峰,但不能掩盖真正故障 |
| 等级 | 严重、一般、轻微应对应不同响应时限 |
| 通知 | 绑定值班人、系统负责人和升级路径 |
| 恢复 | 恢复阈值与触发阈值保持适当回差,防止反复抖动 |
连接失败告警用于发现DEM无法访问数据库的情况。该告警不等同于数据库一定宕机,还可能由网络、防火墙、监听、服务、认证或资源耗尽引起。
1、在告警配置中选择数据库对象和连接状态类指标。
2、设置告警等级、触发条件、持续时间和接收人。
3、在非生产或已获批窗口中验证规则,避免直接制造生产故障。
4、确认告警页面生成记录,通知链路能够送达。
5、恢复连接后继续观察,确认系统自动生成恢复状态或关闭记录。
图6 数据库连接失败后生成告警记录
图7 连接恢复后告警进入恢复或清除状态
连接类告警建议按“网络→端口→服务→认证→资源→数据库内部”的顺序排查。该顺序从外到内,能够减少无效登录和误启停。
1、网络:从DEM服务端或dmagent所在主机验证目标IP可达和路由正确。
2、端口:确认数据库监听端口处于LISTEN,防火墙没有新增拦截。
3、服务:检查数据库服务与进程是否运行,启动时间是否发生变化。
4、认证:确认账号未锁定、口令未过期、权限未被回收。
5、资源:检查CPU、内存、Swap、磁盘空间、文件句柄和连接上限。
6、内部:查看数据库日志、归档、恢复状态、锁与异常会话。
7、验证:修复后等待下一个采集周期,确认告警恢复并执行应用侧验证。
| 字段 | 记录内容 |
|---|---|
| 告警标识 | 告警编号、对象、指标、首次与最后发生时间 |
| 影响 | 受影响系统、功能、用户范围和业务时段 |
| 诊断 | 网络、端口、服务、认证、资源和数据库日志证据 |
| 处置 | 执行命令、任务编号、变更单和操作人 |
| 恢复 | 技术状态、采集恢复、告警恢复、业务验证 |
| 复盘 | 根因、预防措施、阈值调整和责任人 |
不要过早关闭|告警页面消失或恢复只代表当前指标回到正常范围。涉及数据库连接、主备切换或存储空间的事件,还必须完成应用验证和持续观察。
进程监控用于识别数据库服务、监听、代理或其他关键进程的运行状态。DEM可展示进程类型、连接信息、运行时长、启动命令、告警和实时负载;在完成权限与风险评估后,还可配置自动拉起。自动拉起适合启动逻辑稳定、依赖关系清晰、重复启动风险可控的进程,不适合需要人工确认数据一致性或可能发生脑裂的角色进程。
1、进入“监控→进程”,选择添加或配置进程。
2、选择所属主机,填写进程名称、匹配方式、进程类型和显示标签。
3、配置启动命令、运行用户、工作目录和必要环境变量。
4、使用“测试”确认DEM能够识别现有进程,并且匹配条件不会命中多个无关进程。
5、保存后观察运行状态、启动时间、CPU和内存等实时负载。
6、如需告警,配置停止、资源异常或运行时长等规则并验证通知。
图8 进程监控已识别AAAA_DMSERVER运行状态
自动拉起前必须验证启动命令能够在无交互条件下执行,所用账号具备权限,环境变量完整,并且重复执行不会产生多个实例。建议先在测试环境模拟停止,再观察DEM识别、拉起和恢复告警的完整链路。
1、确认该进程允许自动恢复,并完成业务负责人审批。
2、在进程配置中填写经过验证的启动命令和运行用户。
3、设置合理的检测周期、确认次数和拉起次数上限,避免无限循环。
4、配置拉起失败告警和人工升级路径。
5、在维护窗口中停止目标进程,确认DEM先识别停止,再执行拉起。
6、检查新进程PID、启动时间、端口、数据库状态和应用连接。
图9 自动拉起机制恢复数据库进程后的状态
适用限制|主备集群的主库、仲裁或监视器进程不应仅根据“进程不存在”盲目自动拉起。必须先确认角色、同步状态和故障隔离,防止双主或脑裂。
| 检查项 | 成功标准 | 防抖建议 |
|---|---|---|
| 进程识别 | 匹配到唯一目标进程 | 使用完整路径、端口或参数组合,避免只匹配短名称 |
| 启动命令 | 无交互执行且返回码正确 | 固定工作目录和环境变量 |
| 服务状态 | 进程、端口、实例状态一致 | 拉起后等待健康检查,不只看PID |
| 次数控制 | 失败后停止继续拉起并告警 | 设置最大次数和冷却时间 |
| 审计 | 每次拉起均有任务与日志记录 | 关联事件编号和变更单 |
识别不到进程:检查匹配条件、运行用户、dmagent权限和进程命令行是否发生变化。
识别多个进程:增加安装路径、端口或配置文件参数,缩小匹配范围。
拉起失败:以配置的运行账号手工执行命令,检查环境变量、目录权限和日志。
拉起后仍告警:检查健康状态、监听端口和采集周期,避免只确认进程存在。
频繁拉起:立即停用自动拉起,保留日志并排查进程自身故障或资源不足。
在线巡检通过模板对多个对象执行一致性检查,并输出可追踪报告。巡检报告通常包含总体概览、数据库维度、检查项维度和dmini参数等内容,检查范围可覆盖健康状态、主机资源、数据库状态、性能、表空间、归档、备份、会话、对象和运行信息。
巡检不是故障发生后的临时查看,而是定期识别趋势、配置漂移和潜在风险的制度化手段。建议将日常巡检、变更前巡检、变更后巡检和专项巡检使用不同模板,避免同一模板既过度冗长又遗漏关键项。
1、进入在线巡检模块,选择新建巡检任务。
2、选择目标数据库或集群,核对环境与业务归属。
3、选择巡检模板;生产环境优先使用经过评审的标准模板。
4、设置执行时间和通知对象。高负载检查应避开业务峰值。
5、执行任务并等待报告生成,记录任务编号。
6、按严重程度、对象和建议分类处理问题,不只查看总体健康分。
图10 在线巡检报告展示数据库健康结果与检查项
| 检查域 | 重点问题 | 建议动作 |
|---|---|---|
| 健康与状态 | 实例、服务、角色、启动时间异常 | 对照变更记录与服务状态 |
| 主机资源 | 持续高CPU、内存压力、Swap、磁盘队列 | 结合业务时段与历史趋势分析 |
| 表空间 | 使用率高、剩余容量不足、增长异常 | 评估增长速度并制定扩容或清理计划 |
| 归档 | 归档失败、空间不足、连续性异常 | 检查归档目标、磁盘和主备传输 |
| 备份 | 缺少近期成功备份或校验 | 补做备份并执行备份集检查 |
| 会话与锁 | 异常连接增长、长事务、阻塞链 | 定位来源SQL并评估终止风险 |
| 对象与参数 | 失效对象、统计信息陈旧、参数漂移 | 在评审后修复并记录变更 |
会话页面用于判断连接规模、活动状态、来源、登录用户和持续时间。出现连接数增长时,应先区分连接池正常扩容、批处理、长事务和连接泄漏,再决定是否终止会话。终止会话可能触发事务回滚并放大I/O,必须先评估。
图11 数据库当前会话列表及连接状态
优先筛选活动时间长、事务持续时间长或阻塞其他会话的连接。
核对客户端地址、应用账号和模块标签,定位真实来源。
保存会话标识、SQL和时间证据后再联系应用负责人。
必须终止时,先确认回滚规模和业务影响,并在窗口内执行。
表空间检查不能只看使用率。需要同时关注总容量、已用容量、剩余绝对容量、自动扩展配置、底层文件系统空间和增长速度。使用率较高但增长缓慢的表空间,风险可能低于使用率中等但每日快速增长的表空间。
图12 表空间使用情况与容量分布
| 信号 | 含义 | 处理 |
|---|---|---|
| 使用率持续上升 | 业务数据或临时数据稳定增长 | 评估增长率、保留策略和扩容时间 |
| 短时突增 | 批量导入、临时排序、异常SQL | 定位任务和SQL,确认是否会自动释放 |
| 文件系统空间不足 | 即使数据文件可扩展也可能失败 | 优先扩展或清理底层存储 |
| 单文件接近上限 | 表空间总量仍有余量但单文件受限 | 新增数据文件或调整扩展策略 |
1、将问题按严重、一般、建议三类分级。
2、为每个问题指定责任人、完成时间和验证标准。
3、涉及参数、索引、扩容或清理的事项走变更流程。
4、修复后重新执行相同模板,保留前后报告。
5、将重复问题转化为告警规则、自动化检查或容量计划。
DEM的批量运维能力可面向多个对象执行SQL、SCRIPT或SSH任务,常用于统一状态检查、配置核对和窗口内的受控操作。批量能力提高效率,也放大配置错误的影响,因此目标选择、并发度、超时、失败策略和回滚必须明确。
先小范围验证|任何批量任务都应先对单个非关键对象验证命令、权限、返回码和输出解析,再扩大到同一批次。目标列表必须在提交前二次核对。
菜单通常位于“运维→批量”。选择SQL类型后添加AAAA、BBBB等目标数据库,执行实例状态查询,并比较返回结果。
SELECT INSTANCE_NAME, STATUS$ FROM V$INSTANCE;
1、新建批量任务并选择SQL任务类型。
2、选择目标数据库,逐一核对实例名、IP、端口和环境标签。
3、输入只读状态查询,设置合理超时。
4、先对单个目标试运行,确认返回列和权限。
5、扩大目标范围并执行,保存任务编号与结果。
6、对失败节点单独重试,不要反复对全部节点重复执行。
图13 批量查询AAAA与BBBB数据库运行状态
远程启停应视为生产高风险操作。执行前必须确认实例、端口、主机、主备角色、业务窗口和当前连接。停止前检查长事务、备份、归档、迁移和批处理任务;启动后检查进程、监听、实例状态、DEM采集和应用连接。
1、确认变更审批、维护窗口、目标实例和回退方案。
2、检查当前角色、会话、长事务、备份、迁移与主备同步状态。
3、进入数据库启停或批量运维页面,只勾选目标对象。
4、执行停止并等待任务结束,确认进程与监听按预期退出。
5、执行启动,确认进程、监听端口和实例状态正常。
6、等待DEM下一个采集周期,确认告警恢复和指标更新。
7、执行应用连接与关键交易验证,记录停机和恢复时间。
图14 通过DEM对BBBB数据库执行远程启停
| 阶段 | 数据库侧 | 主机侧 | DEM侧 | 业务侧 |
|---|---|---|---|---|
| 停止前 | 角色、会话、事务、任务 | 资源、磁盘、进程 | 告警与采集正常 | 窗口已确认 |
| 停止后 | 无法建立新连接或处于预期状态 | 进程与端口退出 | 状态在采集后更新 | 流量已切走 |
| 启动后 | 实例OPEN且角色正确 | 进程稳定、端口监听 | 指标持续更新、告警恢复 | 连接与交易正常 |
1、任务无响应:先查看任务状态和主机负载,不要重复点击导致并发启停。
2、停止失败:检查当前会话、权限、服务管理方式和数据库日志。
3、启动失败:检查目录权限、参数文件、端口占用、磁盘空间和上次异常退出。
4、DEM显示与实际不一致:等待采集周期,并使用系统服务、进程、端口和数据库查询交叉验证。
5、应用无法恢复:检查连接池、DNS或VIP、账号状态和主备角色,不要只在DEM中反复重启。
备份的目标是可恢复,不是产生一个显示“成功”的任务。备份设计必须同时考虑恢复点目标、恢复时间目标、保留周期、存储隔离、加密、校验和恢复演练。增量备份必须建立在可用的全量备份基础上,并且恢复链所需的备份集与归档完整可用。
| 检查项 | 要求 |
|---|---|
| 备份策略 | 明确全量、增量、归档、保留周期和异地副本 |
| 目录 | <备份目录>存在、可写、空间充足且不与数据文件同故障域 |
| 账号 | 使用授权数据库账号或安装用户,权限满足备份要求 |
| 资源 | 评估CPU、I/O、网络和业务峰值,必要时限速或错峰 |
| 并发任务 | 确认没有冲突的备份、恢复、迁移或维护任务 |
| 恢复链 | 增量备份能够定位对应全量备份和必要归档 |
可以通过DEM的备份任务、SQL窗口或受控的远程执行方式发起备份。以下语句仅展示命令结构,目录必须替换为经审批的实际路径。
-- 全量备份
BACKUP DATABASE FULL BACKUPSET '<全量备份集目录>';
-- 增量备份,需存在可用全量备份
BACKUP DATABASE INCREMENT
WITH BACKUPDIR '<全量备份父目录>'
BACKUPSET '<增量备份集目录>';
1、确认备份目录和保留策略,记录当前可用空间。
2、选择目标BBBB数据库并核对实例角色。
3、先执行全量备份或确认基线全量备份可用。
4、执行增量备份,观察任务日志和返回状态。
5、检查备份集目录、文件数量、大小和修改时间。
6、使用DMRMAN执行备份集校验,并将结果纳入任务记录。
图15 通过DEM远程执行BBBB数据库增量备份
任务成功后,应通过DMRMAN的CHECK BACKUPSET验证备份集结构和可读性。校验不等于完整恢复演练,但能提前发现路径、介质或备份集损坏问题。
dmrman
CHECK BACKUPSET '<全量备份集目录>';
CHECK BACKUPSET '<增量备份集目录>';
图16 全量与增量备份集检查均返回成功
恢复演练应在隔离环境中定期执行,不能只停留在备份集校验。演练目标包括确认介质可访问、恢复链完整、恢复时长满足目标、数据库能够打开、对象与关键数据可验证,并形成可复用的恢复步骤。
1、选择与生产隔离、容量足够的恢复环境。
2、获取全量、增量和所需归档,核对时间点与校验结果。
3、按正式恢复方案执行还原与恢复,记录每个阶段耗时。
4、启动数据库并检查实例状态、对象有效性和关键数据。
5、由业务或测试方执行抽样验证,确认恢复点满足要求。
6、销毁或妥善保护演练数据,更新恢复手册和实际RTO。
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 目录不可写 | 权限、挂载或安全策略错误 | 以实际执行账号验证写权限并检查挂载 |
| 空间不足 | 保留策略失效或估算不足 | 停止任务,扩容或按策略清理,禁止随意删除恢复链 |
| 增量找不到基线 | BACKUPDIR错误、全量被移动或清理 | 恢复基线目录或重新执行全量备份 |
| 校验失败 | 文件缺失、损坏、复制不完整 | 保留证据,切换副本或重新备份 |
| 备份成功但恢复失败 | 缺少归档、参数或版本不匹配 | 通过完整演练修正恢复清单 |
当内置指标不能直接反映业务或数据库特定状态时,可以配置自定义SQL监控,例如会话数量、特定对象状态、任务积压、逻辑健康值或业务对账结果。自定义SQL应优先使用只读、低成本、返回结构稳定的语句,并明确执行频率和超时。
| 要求 | 说明 |
|---|---|
| 只读 | 禁止在监控SQL中执行DML、DDL、提交或调用有副作用的过程 |
| 轻量 | 避免全表扫描、大排序、跨库查询和长时间锁等待 |
| 稳定 | 返回列名、类型和行数应稳定,便于规则解析 |
| 最小权限 | 使用专用监控账号,仅授予所需对象查询权限 |
| 可解释 | 每个阈值都要能说明业务含义和处置动作 |
| 可验证 | 上线前在目标版本与数据规模上测量执行时间 |
进入自定义SQL配置页面,新建SQL并选择应用对象。部分版本只使用最后一条SQL的结果触发或展示告警,因此一个监控项建议只保留一个明确结果集,并在当前版本验证实际行为。
SELECT COUNT(*) AS SESSION_COUNT FROM V$SESSIONS;
1、新建自定义SQL,填写名称、用途和责任人。
2、选择目标数据库或对象范围。
3、输入只读SQL,执行测试并确认返回列和耗时。
4、设置采集周期、超时和失败处理,避免高频执行。
5、保存并观察多个采集周期,确认历史数据连续。
图17 自定义SQL监控返回当前会话数量
为SESSION_COUNT等结果配置阈值时,应结合连接池上限、历史峰值和业务批处理窗口。建议设置触发持续时间和恢复回差,例如达到阈值持续多个周期才报警,回落到较低阈值才恢复。
1、选择自定义SQL输出列作为告警指标。
2、配置严重、一般、轻微阈值及持续时间。
3、配置恢复条件和通知对象。
4、在安全环境中验证触发与恢复流程。
5、确认告警内容包含对象、当前值、阈值和处置说明。
图18 基于自定义SQL结果生成会话数量告警
用执行计划或实际耗时证明SQL对生产影响可接受。
确认没有敏感字段被写入监控历史或通知消息。
确认空结果、NULL、超时和连接失败时的行为。
确认目标对象变化后不会误报,例如新增实例或切换角色。
为每个告警绑定明确负责人和处置手册。
DEM可用于部署和监控实时主备等数据守护集群。该类操作涉及数据库角色、归档传输、监视器和应用访问路径,风险显著高于单实例接入。正式部署前必须确认版本与授权、主备主机资源、网络时延、端口、存储、时间同步、备份基线、dmagent状态以及业务切换方案。
高可用不等于自动安全|自动故障切换必须建立在可靠的故障检测、仲裁和网络隔离基础上。任何无法确认主库状态的场景,都不应通过简单拉起或强制切换恢复服务。
| 域 | 检查内容 |
|---|---|
| 节点 | AAAA、BBBB主机资源、操作系统、时间、主机名和dmagent状态 |
| 数据库 | 版本、实例参数、数据一致性基线、数据库端口和安装目录 |
| 网络 | 主备复制、监视器、DEM与dmagent所需链路稳定可达 |
| 存储 | 数据、归档、日志、备份空间充足,目录权限一致 |
| 安全 | 部署账号、服务账号和数据库账号最小授权,口令受控 |
| 业务 | VIP或连接串、切换窗口、回切条件和应用验证脚本 |
1、确认AAAA与BBBB主机均已接入DEM,dmagent稳定运行。
2、进入集群部署或数据守护部署页面,选择实时主备类型。
3、添加主库、备库和监视器节点,填写各自地址、端口、目录与运行账号。
4、核对主库与备库角色规划,确认不会覆盖已有业务数据。
5、执行配置检查,处理网络、权限、目录和参数问题。
6、启动部署任务并观察每一步日志;任一步失败时先查根因,不要直接重复整批部署。
7、部署完成后使用监视器与DEM交叉验证角色、同步状态和归档传输。
图19 在AAAA与BBBB节点间部署实时主备环境
监视器输出用于确认各节点角色、实例状态、归档类型和同步状态。正常实时主备环境应能够明确识别一个主库和一个实时备库,节点处于可用状态,实时归档链路有效。字段名称随版本可能不同,但必须能够回答“谁是主库、谁是备库、是否OPEN、是否同步、是否存在积压”。
图20 dmonitor显示EP01为主库、EP02为实时备库
| 验证问题 | 期望结果 |
|---|---|
| 角色是否唯一 | 只有一个PRIMARY,其他节点为预期备库角色 |
| 实例是否可用 | 主库和备库处于预期OPEN或有效状态 |
| 归档是否有效 | 实时归档类型正确,状态有效,无持续积压 |
| 监视器是否在线 | 监视器能够获取最新状态并持续刷新 |
| 应用访问是否正确 | 连接目标、VIP或服务名指向当前主库 |
部署完成后,在集群监控页面确认组、节点、角色、状态和同步指标。集群对象应与单实例对象建立清晰关联,并配置复制延迟、节点离线、角色变化、归档异常和监视器异常等告警。
图21 DEM统一展示数据守护集群节点与运行状态
计划内切换用于维护主库、验证容灾或迁移负载。切换前必须确认主备同步、备库可接管、应用连接方式支持切换,并停止或控制可能影响一致性的批处理。
1、发起变更并确认业务窗口、切换目标、回切条件和责任人。
2、检查主备角色、实时同步、归档积压、备库状态和网络稳定性。
3、确认备库资源、监听、账号和应用连接配置能够承接业务。
4、在DEM中选择正确集群和目标节点,执行计划内切换。
5、观察任务日志和监视器输出,确认新主库角色为PRIMARY且旧主库转为预期备库。
6、验证新主库读写、应用重连、关键交易、备库同步和告警状态。
7、持续观察一个业务周期或组织规定窗口,再关闭变更。
图22 DEM完成数据守护集群主备角色切换
| 层次 | 必须满足的条件 |
|---|---|
| 角色 | 新主库显示PRIMARY,旧主库处于预期备库角色,无双主 |
| 数据库 | 新主库可读写,实例状态正常,日志无持续异常 |
| 复制 | 旧主库作为备库重新建立实时同步,延迟回到基线 |
| 网络 | VIP、服务名或连接串正确指向新主库 |
| 应用 | 连接池恢复,关键交易、查询和写入通过 |
| 监控 | DEM与监视器状态一致,告警恢复且采集持续 |
角色不明确:停止继续操作,隔离可能的旧主库写入路径,使用监视器和日志确认。
同步延迟大:不要立即切换,先分析网络、归档和备库应用速度。
切换后应用不通:优先检查VIP、DNS、连接串和连接池缓存,不要盲目回切。
旧主库无法转备:保留现场,评估重加入或重建备库,避免直接强制启动。
DEM与监视器不一致:以数据库和监视器实时状态交叉验证,并检查DEM采集延迟。
SQL审核用于在执行前识别不符合规则的SQL,例如缺少过滤条件的更新或删除、可能影响大量数据的语句、对象命名问题、全表访问风险等。审核结果是风险提示,不是绝对结论;是否执行仍需结合数据量、执行计划、事务范围、回滚能力和维护窗口评审。
1、进入SQL审核模块,新建审核任务。
2、选择目标数据库或规则集,粘贴待审核SQL。
3、确认SQL中不包含口令、令牌或不必要的敏感数据。
4、执行审核并按严重程度查看命中规则、位置和建议。
5、修改SQL后重新审核,保留前后版本与审批记录。
6、高风险SQL在执行前还应进行执行计划、影响行数和回滚评估。
图23 SQL审核识别潜在风险语句并给出规则提示
SQL调优可结合统计信息、执行计划和索引建议分析语句。建议先在只读分析模式下获取建议,再由数据库管理员判断是否适合实际数据分布和业务负载。自动建议不应未经评审直接应用到生产。
1、选择目标数据库并输入代表性SQL与绑定变量。
2、确认测试环境数据分布与生产具有可比性。
3、执行调优分析,查看统计信息、索引和语句改写建议。
4、比较优化前后的执行计划、逻辑读、物理读、返回行数和耗时。
5、评估新增索引对写入、存储、备份和维护的影响。
6、在变更窗口应用并监控,若收益不符合预期则按方案回退。
图24 SQL调优模块输出统计信息与索引建议
新增索引应解决明确的访问路径问题。索引过多会增加DML成本、存储占用和统计信息维护压力。应用建议前应检查现有相似索引、列选择性、组合列顺序、覆盖范围和查询频率。
图25 应用建议索引并重新检查查询效果
| 评估点 | 问题 |
|---|---|
| 重复性 | 是否已有前导列相同或可覆盖的索引 |
| 选择性 | 过滤列是否能够显著缩小数据范围 |
| 写入成本 | 新增索引会给INSERT、UPDATE、DELETE增加多少开销 |
| 空间 | 索引大小、增长速度和表空间是否可承受 |
| 稳定性 | 绑定变量、数据倾斜和统计信息变化是否导致计划波动 |
| 回退 | 能否在影响出现时安全删除或禁用相关索引 |
优化器依赖统计信息估算行数和成本。数据大量装载、删除、分区交换或分布明显变化后,应评估是否需要更新统计信息。不要把“定期全库高频收集”当成通用方案,应根据对象变化、业务窗口和收集成本制定策略。
CALL DBMS_STATS.GATHER_TABLE_STATS('<模式名>','<表名>');
图26 更新并检查目标对象统计信息
收集前记录现有统计信息时间和关键SQL执行计划。
对大表评估采样、并行度和业务I/O影响。
收集后检查关键SQL计划是否变化,不以“收集成功”作为唯一标准。
若出现性能回退,按既定方案恢复统计信息或执行计划。
发现:从慢SQL、告警、巡检或业务反馈确定问题语句。
复现:固定SQL文本、绑定变量、数据量、并发和时间范围。
诊断:分析执行计划、统计信息、索引、锁和资源等待。
评审:比较改写、索引、参数和数据模型方案的收益与副作用。
变更:在窗口内实施,保留脚本和回退方案。
验证:比较技术指标和业务指标,持续观察计划稳定性。
数据生成功能可向数据库或文件生成测试数据,用于功能测试、容量验证和演示。生成规则必须避免复制生产敏感数据;涉及真实结构时,应确认字段含义、约束、关联关系和数据分布,防止生成大量无效或不可清理的数据。
1、明确生成目标、数据量、字段规则和清理方式。
2、选择目标数据库或文件,确认环境为非生产或已获批准。
3、为主键、外键、日期、枚举和关联字段配置有效规则。
4、先生成小批量样本,检查约束、字符集和业务可用性。
5、扩大数据量并监控空间、日志和执行时间。
6、查看任务报告,记录成功、失败和生成行数。
图27 数据生成任务完成并输出执行报告
迁移不是简单复制数据。完整迁移应覆盖范围确认、兼容评估、对象转换、全量迁移、增量同步或停机窗口、校验、切换和回退。源端与目标端的版本、字符集、大小写规则、数据类型、约束、索引、序列、存储过程、权限和时区都可能影响结果。
| 阶段 | 主要产出 |
|---|---|
| 盘点 | 数据库规模、对象清单、依赖、数据增长和停机要求 |
| 评估 | 兼容性问题、改造量、不可转换对象和风险等级 |
| 设计 | 迁移方式、并行度、批次、校验、切换和回退方案 |
| 演练 | 真实规模下的耗时、吞吐、问题清单和修复脚本 |
| 正式迁移 | 任务日志、失败重试、全量与增量状态 |
| 验证 | 对象、行数、校验值、权限、性能和业务结果 |
| 切换 | 连接变更、停写窗口、最终增量和业务确认 |
同构迁移适合版本升级、环境复制或主机迁移。即使源端与目标端均为DM,也要核对版本、字符集、页大小、对象所有者、权限和目标端已有对象。静态迁移通常要求源端在最终一致性窗口内停止写入,或配合增量同步机制完成切换。
1、新建数据库迁移任务,选择DM源端与DM目标端。
2、填写脱敏后的连接配置并执行源、目标连接测试。
3、选择模式和对象,明确表结构、数据、索引、约束和权限范围。
4、设置并行度、批次、失败策略和目标端同名对象处理方式。
5、先执行小范围演练,修复失败对象后再运行正式任务。
6、迁移完成后执行对象数量、行数、关键字段和业务抽样校验。
图28 DM源库到DM目标库的静态迁移任务
对象比较用于识别源端与目标端在表、列、索引、约束、视图、存储过程等方面的差异。差异报告需要分类处理:预期差异应在方案中说明,非预期差异应在切换前修复或取得豁免。
图29 DM源库与目标库的数据库对象比较
结构相同不代表数据相同,应另做行数与内容校验。
目标端性能优化产生的索引可能是预期差异,不应机械覆盖。
存储过程和视图要检查编译状态及依赖对象。
权限、同义词和序列当前值容易遗漏,应单独核对。
异构迁移需要重点处理数据类型、字符集、大小写、默认值、自增列、时间语义、保留字、函数和SQL方言。建议先执行兼容性评估,再选择对象与数据迁移,最后处理业务SQL和存储逻辑。
1、盘点MySQL版本、字符集、排序规则、对象数量和数据量。
2、执行兼容性评估并按阻断、需改造、提示分类问题。
3、定义MySQL到DM的数据类型、默认值和函数映射。
4、创建静态迁移任务,测试源端与目标端连接。
5、先迁移结构并处理失败对象,再迁移数据、索引和约束。
6、执行数据校验、SQL转换、性能测试和业务验收。
图30 MySQL源库到DM目标库的静态迁移任务
兼容性评估应尽早进行,并纳入应用代码、数据库对象和运维脚本。报告中的问题需要对应负责人、修复方式和验证用例。对于工具无法静态判断的动态SQL、框架生成SQL和边界数据类型,应通过运行时测试补充。
图31 MySQL到DM迁移前的兼容性评估结果
| 问题类型 | 示例 | 验证方法 |
|---|---|---|
| 数据类型 | UNSIGNED、ENUM、JSON、时间精度 | 边界值、NULL、默认值和排序测试 |
| SQL语法 | LIMIT、反引号、函数、分页 | 转换后语法检查与结果集对比 |
| 大小写 | 表名、列名、别名和引用方式 | 在目标环境编译并执行应用用例 |
| 自增与序列 | AUTO_INCREMENT与序列映射 | 并发插入、回滚和重启后验证 |
| 存储逻辑 | 过程、触发器、事件和异常处理 | 编译、单元测试和事务验证 |
SQL转换用于将MySQL方言转换为DM可执行或更接近DM语法的语句。转换结果必须经过人工审查和测试,尤其要关注NULL语义、隐式类型转换、日期函数、字符串拼接、分页、锁语义和事务边界。
图32 MySQL_SQL转换为DM_SQL的结果
1、输入或导入源SQL,避免包含真实口令与敏感字面量。
2、执行转换并逐条查看无法转换或需要人工确认的位置。
3、在隔离目标库中执行语法验证。
4、使用相同输入数据对比源端与目标端结果集。
5、比较执行计划与性能,必要时按DM特性重写。
6、将验证通过的SQL纳入应用版本和回归测试。
| 维度 | 验收内容 |
|---|---|
| 对象 | 表、列、索引、约束、视图、过程、触发器、序列和权限完整 |
| 数据 | 行数、聚合值、校验值、NULL、字符和边界值一致 |
| 功能 | 关键业务流程、事务、并发、批处理和报表通过 |
| 性能 | 关键SQL与批量任务达到目标,资源使用可接受 |
| 运维 | 备份、监控、告警、巡检、账号和审计已接入 |
| 切换 | 停写、最终同步、连接变更、验证与回退路径明确 |
cd <DMAGENT_HOME>
./start.sh <DMAGENT_HOME>/agent.ini
./service.sh start
./service.sh restart
systemctl status DmAgentService.service --no-pager -l
journalctl -u DmAgentService.service --since '30 min ago'
ps -ef | grep -v grep | grep dmagent
ss -lntp | egrep ':<代理通信端口>|:<文件传输端口>|:<数据库端口>'
timedatectl status
SELECT INSTANCE_NAME, STATUS$ FROM V$INSTANCE;
SELECT COUNT(*) AS SESSION_COUNT FROM V$SESSIONS;
CALL DBMS_STATS.GATHER_TABLE_STATS('<模式名>','<表名>');
BACKUP DATABASE FULL BACKUPSET '<全量备份集目录>';
BACKUP DATABASE INCREMENT WITH BACKUPDIR '<全量备份父目录>'
BACKUPSET '<增量备份集目录>';
CHECK BACKUPSET '<全量备份集目录>';
CHECK BACKUPSET '<增量备份集目录>';
使用提醒|以上命令仅作为结构示例。执行前应核对当前版本语法、运行账号、目录、对象和权限,并在非生产或获批窗口中验证。
文章
阅读量
获赞
