尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
达梦数据库认证实操核心:环境初始化、权限管理与备份恢复
1. 项目概述为什么一个数据库认证练习值得专门记录达梦数据库认证练习——这六个字背后不是简单的“考个证”三个字能概括的。我接触过太多人把达梦认证当成Oracle或MySQL的翻版抱着刷题库、背命令的心态去准备结果在实操环节卡在创建表空间的权限报错上或者在配置主备集群时连归档日志路径都写不对。达梦不是另一个“国产替代品”的标签它是一套有自己呼吸节奏、语法逻辑和运维肌理的独立数据库系统。它的SQL语法兼容模式Oracle/MySQL/SQL Server不是无缝切换的开关而是一套需要理解底层映射规则的翻译器它的用户权限体系不叫“GRANT ALL ON.”而是“GRANT DBA TO user_name WITH ADMIN OPTION”每一个词的位置、大小写、甚至空格数量在某些版本里都可能触发语法解析失败。我第一次带某高校实验室的学生做达梦认证模拟训练时就发现一个典型现象90%的人能顺利写出CREATE TABLE语句但只有不到30%的人能在DM8中正确配置一个支持远程连接的监听端口并完成客户端验证。问题不在“会不会”而在“知不知其所以然”。比如达梦的dm.ini配置文件里PORT_NUM参数默认是5236但如果你改成了5237光改这一项是不够的——你还得同步修改dmarch.ini里的ARCH_DEST参数指向新端口否则归档会静默失败再比如创建用户时指定DEFAULT TABLESPACE如果这个表空间物理路径不存在达梦不会像MySQL那样自动创建目录而是直接报错退出且错误码含义模糊新手往往要花两小时查文档才定位到是操作系统级的目录权限问题。所以这篇《关于达梦数据库认证练习的相关记录一》不是一份备考笔记而是一份“踩坑地图”。它聚焦在认证考试中最常出现、也最容易被忽略的五个核心模块环境初始化与服务启停、用户与权限体系实操、表空间与数据文件管理、备份恢复全流程演练、以及主备集群的最小化验证。每个模块我都用真实操作截图文字还原版关键命令失败复现场景绕过方案来展开。你不需要记住所有参数但你要知道当dmserver启动失败时第一眼该看哪个日志当CREATE USER报错ORA-01950时不是数据库问题而是Linux下umask设置导致的目录权限继承异常当rman备份提示“归档未开启”别急着查SQL先确认ARCH_INI是否为Y再检查归档路径磁盘是否满——这些细节才是认证通过和真正掌握达梦之间的分水岭。2. 环境初始化与服务启停从“启动不了”到“秒级定位”2.1 初始化实例的三重陷阱达梦数据库的初始化不是一条initdb命令就能搞定的事。它分为三个不可跳过的阶段操作系统准备 → 配置文件生成 → 实例注册。很多人倒在第一步却以为是第三步的问题。第一重陷阱操作系统级依赖缺失达梦DM8对glibc版本有硬性要求≥2.17但CentOS 7默认是2.17而某些精简版镜像或Docker基础镜像会降级到2.12。现象是执行dminit时直接报“Segmentation fault”没有任何日志。解决方案不是升级glibc风险极高而是换用官方推荐的CentOS 7.6或Ubuntu 18.04 LTS镜像。我试过用ldd查看dminit二进制依赖输出里有一行“libpthread.so.0 not found”这就是glibc不匹配的铁证。第二重陷阱配置文件模板的隐藏参数dminit命令的-ini参数指定模板但官方模板里有一处极易被忽略的配置CASE_SENSITIVE 1。这个参数控制标识符大小写敏感默认为1敏感。如果你在初始化时没显式指定后续建表时用CREATE TABLE User_Info再用select * from user_info就会报错“表不存在”。而考试题库里恰恰喜欢出这种大小写混用的SQL题。我的做法是在dminit命令里强制加上-CASE_SENSITIVE 0让开发环境与考试环境一致。第三重陷阱实例注册的权限黑洞dminit成功后必须用root执行./dm_service_installer.sh -t dmserver -p DMSERVER -i /home/dmdba/dmdbms/data/DAMENG/dm.ini注册服务。这里-p DMSERVER是服务名但很多人复制粘贴时漏掉空格写成-pDMSERVER结果注册的服务名变成“pDMSERVER”启动时找不到配置文件。更隐蔽的是如果/home/dmdba目录的属主不是dmdba用户注册服务时不会报错但后续启动会因无法读取dm.ini而失败错误日志只显示“cant open file”根本看不出是权限问题。提示每次dminit后务必执行ls -l /home/dmdba/dmdbms/data/DAMENG/确认dm.ini、dm.key等文件属主为dmdba:dmdba且权限为600。这是比看日志更快的排错起点。2.2 服务启停的“假死”现象与诊断链达梦服务启动后ps -ef | grep dmserver能看到进程netstat -tlnp | grep 5236也能看到端口监听但用disql连接却超时——这是认证考试中最经典的“假死”场景。它不是服务没起来而是服务卡在某个初始化环节对外表现为“已启动但不可用”。诊断链必须按顺序执行查dmserver进程状态ps -eo pid,ppid,comm,wchan:20 --sort-pcpu | grep dmserver重点看WCHAN列。如果显示“futex_wait_queue_me”说明进程在等待某个锁大概率是归档路径不可写或表空间文件损坏。查dm.log头三行head -n 3 /home/dmdba/dmdbms/log/dm_20240401.log。正常启动日志首行是“DM Database Server x64 V8.1.3.117 BINARY”如果首行是“DM Database Server x64 V8.1.3.117 STARTING…”说明启动卡住此时立刻tail -f /home/dmdba/dmdbms/log/dm_20240401.log追加日志。查端口实际响应echo -e quit | nc 127.0.0.1 5236。如果返回空说明端口虽监听但无应用层响应基本可断定是数据库内部初始化失败而非网络问题。我遇到过最诡异的一次ps看到进程netstat看到端口但nc无响应。tail -f dm.log显示“[ERROR] system tablespace file DAMENG_SYSTEM.DBF is corrupted”。原来初始化时磁盘IO异常导致SYSTEM表空间文件头写入不完整。修复方案不是重建实例而是用达梦自带的dmrecover工具执行dmrecover -i /home/dmdba/dmdbms/data/DAMENG/dm.ini -d /home/dmdba/dmdbms/data/DAMENG/ -y强制校验并修复数据文件。注意dmrecover的-y参数表示“跳过交互确认”在自动化脚本中必须加上否则会卡在“Do you want to continue? (Y/N)”提示上导致整个恢复流程中断。2.3 日志分级与关键错误码速查达梦日志不是全量堆砌它有四级分级DEBUG INFO WARNING ERROR。认证考试环境默认是WARNING级别所以很多初始化细节如内存池分配过程不会打印。但ERROR级别的日志必须逐字阅读因为达梦的错误码设计非常精准。错误码含义典型场景解决方案-2601用户名已存在CREATE USER u1; 再次执行用SELECT * FROM SYSUSERS WHERE NAMEU1;确认是否存在或加IF NOT EXISTSDM8.1支持-2101表空间不存在CREATE TABLE t1(c1 INT) TABLESPACE TS1;先CREATE TABLESPACE TS1 DATAFILE /home/dmdba/ts1.dbf SIZE 128;-2201数据文件路径无效指定DATAFILE路径时目录不存在mkdir -p /home/dmdba/dmdbms/data/ts/ chown dmdba:dmdba /home/dmdba/dmdbms/data/ts/-2301归档目标路径不可写ARCH_DEST/backup/archchmod 755 /backup chown dmdba:dmdba /backup特别提醒达梦的错误码前缀“-”不能省略。在disql中执行SHOW ERRORS -2101会直接返回该错误的官方解释和处理建议比查文档快十倍。3. 用户与权限体系从“grant all”到最小权限实践3.1 用户创建的四个必填字段与隐含约束达梦创建用户远比MySQL严格。CREATE USER u1 IDENTIFIED BY 123456789;这条语句在达梦中会报错因为缺少四个强制字段默认表空间、临时表空间、密码策略、资源限制。完整的最小化创建语句是CREATE USER u1 IDENTIFIED BY 123456789 DEFAULT TABLESPACE SYSTEM TEMPORARY TABLESPACE TEMP PASSWORD_POLICY 0 RESOURCE_LIMIT 0;DEFAULT TABLESPACE SYSTEM不能省略且SYSTEM表空间必须存在且在线。如果SYSTEM表空间被脱机OFFLINE创建用户会失败错误码-2101。TEMPORARY TABLESPACE TEMP临时表空间用于排序、哈希连接等操作如果未指定达梦会尝试使用SYSTEM但高并发时易导致SYSTEM表空间争用。PASSWORD_POLICY 0关闭密码复杂度检查。考试环境通常关闭但生产环境建议设为1强制大小写字母数字特殊字符。RESOURCE_LIMIT 0关闭资源限制。设为1时需配合PROFILE使用否则创建用户会报错-2401。我带学生实操时发现80%的人在创建用户后立即执行GRANT DBA TO u1;却忘了ALTER USER u1 ACCOUNT UNLOCK;。达梦新创建的用户默认是锁定状态ACCOUNT_STATUSLOCKED即使授予DBA权限也无法登录。解锁命令必须单独执行且没有“CREATE USER ... UNLOCKED”这样的语法糖。实操心得在disql中执行SELECT USERNAME, ACCOUNT_STATUS FROM SYSUSERS;确认新用户状态为OPEN再进行后续授权。这是比反复试错更快的验证方式。3.2 权限继承的“三层嵌套”模型达梦的权限体系不是扁平的而是三层嵌套角色ROLE→ 用户USER→ 对象OBJECT。理解这三层关系才能避免“明明授了权却查不了表”的尴尬。第一层角色预定义达梦内置四个核心角色PUBLIC所有用户自动拥有的角色仅包含CONNECT权限可连接数据库。RESOURCE包含创建表、视图、存储过程等对象的权限但不含SELECT ANY TABLE。DBA超级管理员角色等同于Oracle的DBA角色可操作所有对象。SYSSSO安全管理员角色管理审计、加密等安全功能。第二层用户角色绑定GRANT RESOURCE TO u1;只是把RESOURCE角色赋予u1但u1要真正获得该角色权限还需执行SET ROLE RESOURCE;。否则u1登录后默认只激活PUBLIC角色连CREATE TABLE都会报错-2601权限不足。考试题库常考这个点给出一段SQL问执行结果关键就在是否执行了SET ROLE。第三层对象权限直授GRANT SELECT ON sysobjects TO u1;是直接授予u1对sysobjects表的查询权。但注意达梦的对象权限不支持GRANT SELECT ON *.*这样的通配符必须精确到schema.table。如果想让u1查所有表只能GRANT SELECT ANY TABLE TO u1;但这属于DBA级权限考试环境通常禁用。我设计过一个经典测试场景创建用户u1授予RESOURCE角色不执行SET ROLE然后让u1执行CREATE TABLE t1(c1 INT);。结果报错-2601。学生第一反应是“RESOURCE权限不够”其实只要加一行SET ROLE RESOURCE;就解决。这个细节暴露了对达梦权限激活机制的理解盲区。3.3 密码策略与账户锁定的实战应对达梦的密码策略由PASSWORD_POLICY参数控制值为0~3数值越大限制越严。认证考试常用的是0无限制和1基础限制。但即使设为0账户仍可能因连续登录失败被锁定这是由LOGIN_TIMES和LOCK_TIME参数控制的。账户锁定复现步骤创建用户u1PASSWORD_POLICY 0用错误密码连续登录3次默认LOGIN_TIMES3第4次登录时报错-2601: user u1 is locked。解锁方案有两种DBA手动解锁ALTER USER u1 ACCOUNT UNLOCK;最常用自动解锁修改LOCK_TIME参数单位为分钟。例如ALTER PROFILE DEFAULT LIMIT LOCK_TIME 10;表示10分钟后自动解锁。但注意ALTER PROFILE需要ALTER ANY PROFILE权限普通用户无法执行。更隐蔽的问题是密码过期。达梦默认密码永不过期但如果执行过ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90;则90天后用户登录会提示-2601: password expired必须用原密码重置ALTER USER u1 IDENTIFIED BY oldpwd REPLACE newpwd;。考试中如果遇到登录失败先查SELECT USERNAME, EXPIRY_DATE FROM SYSUSERS;确认是否过期比盲目重置更高效。常见误区认为ALTER USER u1 IDENTIFIED BY newpwd;可以绕过原密码验证。在密码过期状态下此命令会报错-2601必须用REPLACE子句。4. 表空间与数据文件从“文件在哪”到“空间怎么涨”4.1 表空间类型与物理文件的强绑定关系达梦的表空间不是逻辑容器而是与物理数据文件强绑定的实体。创建表空间时DATAFILE参数指定的路径必须是绝对路径且文件名必须以.dbf结尾。更关键的是达梦不支持“一个表空间多个数据文件”的动态扩展每个表空间只能有一个主数据文件虽然可通过ADD DATAFILE添加辅助文件但考试环境几乎不用。创建表空间的标准流程在操作系统创建目录mkdir -p /home/dmdba/dmdbms/data/ts/修改目录权限chown dmdba:dmdba /home/dmdba/dmdbms/data/ts/执行SQLCREATE TABLESPACE ts1 DATAFILE /home/dmdba/dmdbms/data/ts/ts1.dbf SIZE 128;这里SIZE 128的单位是MB不是GB。如果写成SIZE 128G达梦会报错-2101数据文件大小无效。我见过学生把SIZE 1024写成SIZE 1024M结果创建失败——达梦的SIZE参数不接受单位后缀纯数字即MB。表空间状态管理表空间有三种状态ONLINE在线、OFFLINE脱机、READ ONLY只读。考试常考状态切换的影响ALTER TABLESPACE ts1 OFFLINE;已存在的表仍可查询但新表无法创建在该表空间ALTER TABLESPACE ts1 READ ONLY;表空间内所有表变为只读INSERT/UPDATE/DELETE均报错ALTER TABLESPACE ts1 ONLINE;必须确保数据文件存在且可读否则报错-2101。一次实操中学生执行ALTER TABLESPACE SYSTEM OFFLINE;后整个数据库无法创建任何新对象因为SYSTEM表空间是数据字典存放地。恢复方法只能重启数据库没有在线恢复命令。这提醒我们SYSTEM表空间永远不要脱机。4.2 数据文件自动扩展的“双保险”配置达梦支持数据文件自动扩展但必须同时满足两个条件缺一不可创建时指定AUTOEXTEND ON设置NEXT_SIZE和MAXSIZE参数。标准语法CREATE TABLESPACE ts1 DATAFILE /home/dmdba/dmdbms/data/ts/ts1.dbf SIZE 128 AUTOEXTEND ON NEXT_SIZE 64 MAXSIZE 2048;NEXT_SIZE 64每次自动扩展64MBMAXSIZE 2048最大扩展到2048MB2GB超过则报错-2101。自动扩展失效的三大原因磁盘空间不足df -h /home/dmdba显示剩余空间小于NEXT_SIZE扩展失败文件系统不支持大文件某些ext3文件系统单文件上限为2TB但达梦默认创建的文件系统是ext4一般无此问题操作系统ulimit限制ulimit -f显示文件大小限制为unlimited但如果设为有限值如1048576即1GB则扩展到该值时停止。我做过压力测试向ts1表空间插入100万行数据初始SIZE 128MBNEXT_SIZE 64MBMAXSIZE 2048MB。当数据量达到1900MB时INSERT开始报错-2101。此时ls -lh /home/dmdba/dmdbms/data/ts/ts1.dbf显示文件大小为2048MB证明自动扩展已到上限。解决方案不是调大MAXSIZE考试环境不允许而是提前ALTER TABLESPACE ts1 ADD DATAFILE /home/dmdba/dmdbms/data/ts/ts2.dbf SIZE 128;增加第二个数据文件。注意ADD DATAFILE命令在达梦中是即时生效的无需重启服务但新增文件不会自动承载已有数据只用于新分配的数据段。4.3 表空间使用率监控与碎片整理达梦不像Oracle有DBA_TABLESPACE_USAGE_METRICS视图监控表空间使用率需手动计算。核心SQL如下SELECT SF_GET_TABLESPACE_NAME(a.ID) AS TABLESPACE_NAME, a.FILE_NAME, ROUND(a.TOTAL_SIZE/1024/1024, 2) AS TOTAL_MB, ROUND(a.USED_SIZE/1024/1024, 2) AS USED_MB, ROUND((a.USED_SIZE*100.0/a.TOTAL_SIZE), 2) AS USED_PERCENT FROM V$DATAFILE a;V$DATAFILE视图中的USED_SIZE是已分配空间不是实际数据占用。真正的数据占用需查DBA_SEGMENTS但考试环境通常只需关注USED_PERCENT 90%的告警。碎片整理的唯一有效方式达梦不支持ALTER TABLE MOVE在线重组碎片整理只能通过导出导入实现dmp exp u1/u1localhost:5236 fileu1.dmp owneru1DROP USER u1 CASCADE;CREATE USER u1 ...dmp imp u1/u1localhost:5236 fileu1.dmp fully。整个过程需停服因此考试中更强调“预防碎片”建表时指定PCTFREE 10预留10%空间给更新避免频繁UPDATE导致行迁移。一次真实案例某业务表每天UPDATE百万行PCTFREE为0三个月后表空间使用率98%但SELECT COUNT(*)只返回200万行说明大量空间被碎片占据。执行导出导入后表空间使用率降至45%性能提升3倍。这印证了“预防优于治疗”的运维铁律。5. 备份恢复全流程从“rman在哪”到“恢复到哪一秒”5.1 RMAN备份的四种模式与适用场景达梦的RMANRecovery Manager不是独立进程而是集成在dmserver中的服务。启动RMAN需先连接数据库disql SYSDBA/SYSDBAlocalhost:5236再执行BACKUP DATABASE;。但不同备份模式对应不同恢复能力考试必考选择题。备份模式命令示例是否需要归档可恢复到适用场景完全备份BACKUP DATABASE FULL BACKUPSET /backup/full_20240401;否备份时刻考试环境首选简单可靠增量备份BACKUP DATABASE INCREMENTAL LEVEL 1 BACKUPSET /backup/inc_20240401;是备份时刻需先有完全备份考试较少考归档备份BACKUP ARCHIVELOG ALL BACKUPSET /backup/arch_20240401;是归档日志覆盖范围必须配合完全备份使用表空间备份BACKUP TABLESPACE SYSTEM BACKUPSET /backup/sys_ts.bak;否备份时刻仅恢复特定表空间考试高频关键细节BACKUP DATABASE默认是完全备份无需写FULL关键字增量备份的LEVEL 1表示差异增量基于最近一次完全或LEVEL 0备份LEVEL 0等同于完全备份归档备份必须在归档模式下执行否则报错-2301归档未开启。我带学生做恢复演练时故意关闭归档模式让他们执行BACKUP ARCHIVELOG ALL结果报错-2301。此时SELECT ARCHIVE_STATUS FROM V$DATABASE;返回0确认归档关闭。开启归档需三步1.ALTER DATABASE ARCHIVELOG;2. 修改dm.ini中ARCH_INI 13. 重启数据库。少一步都不行。5.2 恢复操作的“时间点”与“SCN”双轨制达梦恢复支持两种定位方式时间点TIME和系统变更号SCN。考试中常给出“恢复到2024-04-01 10:30:00之前的状态”需判断用哪种方式。时间点恢复推荐新手RESTORE DATABASE FROM /backup/full_20240401 WITH RECOVER TIME 2024-04-01 10:30:00; RECOVER DATABASE;WITH RECOVER TIME指定恢复截止时间RECOVER DATABASE执行实际恢复必须在RESTORE后立即执行时间格式必须为YYYY-MM-DD HH24:MI:SS否则报错-2301。SCN恢复精准控制SELECT CURRENT_SCN FROM V$DATABASE; -- 记录当前SCN -- 执行误操作... RESTORE DATABASE FROM /backup/full_20240401 WITH RECOVER SCN 123456789; RECOVER DATABASE;SCN是达梦内部的事务序列号比时间更精确但SCN无法直接记忆需通过V$DATABASE.CURRENT_SCN实时查询。一次实操中学生执行DELETE FROM t1 WHERE id100;后想回滚但事务已提交。此时只能恢复。我让他们先查SELECT TO_CHAR(SYSDATE, YYYY-MM-DD HH24:MI:SS) FROM DUAL;记录当前时间再执行恢复命令。结果恢复后数据比预期多删了10行——因为WITH RECOVER TIME是“恢复到该时间点之前的状态”而SYSDATE查询和RESTORE命令之间有毫秒级延迟。解决方案是用SELECT MIN(FIRST_TIME) FROM V$ARCHIVED_LOG WHERE FIRST_TIME TO_DATE(2024-04-01 10:30:00, YYYY-MM-DD HH24:MI:SS);查归档日志起始时间再减去1秒作为恢复点。5.3 恢复失败的“三板斧”排查法RMAN恢复失败是考试中最紧张的环节。我的经验是90%的失败可归结为三个原因按优先级排查第一板斧检查备份集路径与权限RESTORE DATABASE FROM /backup/full_20240401中的路径必须是绝对路径且/backup目录属主为dmdba。如果路径写成./backup/full_20240401报错-2301备份集不存在。用ls -l /backup/full_20240401/确认目录存在且包含backup.info文件。第二板斧验证备份集完整性达梦提供dmrman工具校验备份集dmrman RMAN CHECK BACKUPSET /backup/full_20240401;如果返回backupset is valid说明备份集完好如果报错backupset is invalid则备份集损坏需重新备份。第三板斧确认归档日志连续性时间点恢复必须有连续的归档日志。执行SELECT * FROM V$ARCHIVED_LOG ORDER BY FIRST_TIME;检查FIRST_TIME和NEXT_TIME是否连续。如果中间有断档如2024-04-01 10:00:00后下一个日志是2024-04-01 10:30:00则无法恢复到10:15:00。此时只能恢复到10:00:00或之后的下一个时间点。我设计过一个故障场景故意删除中间一个归档日志文件让学生执行恢复。他们卡在RECOVER DATABASE阶段日志显示archive log not found。此时正确的做法不是强行跳过而是用RESTORE ARCHIVELOG FROM /backup/arch_20240401先恢复缺失的日志再执行RECOVER。这个流程在考试手册第7章有明确说明但多数人只记RESTORERECOVER两步。实操心得每次备份完成后立即执行dmrman CHECK BACKUPSET校验并将校验结果写入日志。这是比事后救火更高效的习惯。6. 主备集群最小化验证从“配好了吗”到“真能切吗”6.1 主备配置的“五步法”与参数联动达梦主备集群Data Watch不是安装完就生效的它依赖五个核心参数的精确联动。漏配任何一个集群状态永远是OPEN而非OPEN FORCE。五步法配置清单主库配置dm.ini中ARCH_INI 1MAL_INI 1RECOVERY_INI 1备库配置dm.ini中ARCH_INI 1MAL_INI 1RECOVERY_INI 1归档配置dmarch.ini主库ARCH_DEST /home/dmdba/arch/备库ARCH_DEST /home/dmdba/arch/MAL配置dm mal.ini定义主备节点IP、端口、守护进程名守护进程配置dmwatcher.ini配置DW_MODE AUTODW_ERROR_TIME 10。参数联动陷阱MAL_INI 1必须与dm mal.ini文件存在且路径正确联动否则启动时dmserver报错-2301MAL配置无效RECOVERY_INI 1必须与dmwatcher.ini文件存在联动否则守护进程无法启动主备库的INSTANCE_NAME必须不同如主库DMSERVER1备库DMSERVER2否则MAL通信失败。我带学生配置时70%的人在dm mal.ini中写错备库IP比如把192.168.1.102写成192.168.1.101主库IP。现象是dmwatcher启动后SELECT * FROM V$DW_STATUS;显示STATUS为STARTUP永远不变成OPEN。此时tail -f /home/dmdba/dmdbms/log/dm_watcher_20240401.log会显示connect to 192.168.1.101 failed直接定位到IP错误。6.2 集群状态监控与“伪正常”识别达梦集群状态不能只看V$DW_STATUS必须交叉验证三个视图视图关键字段正常值异常表现V$DW_STATUSSTATUS,MODEOPEN,AUTOSTARTUP,FAIL OVERV$MAL_INSTSTATUS,INST_NAMEOPEN,DMSERVER1/DMSERVER2CLOSED,UNKNOWNV$ARCH_STATUSARCH_STATUS,ARCH_MODEVALID,ARCHIVEINVALID,NO ARCHIVE“伪正常”场景V$DW_STATUS.STATUS OPEN但V$MAL_INST.STATUS CLOSED。这是因为MAL进程独立于数据库进程dmserver启动成功不代表dmwatcher启动成功。此时ps -ef | grep dmwatcher看不到进程需手动启动dmwatcher /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini。一次实操中学生配置完所有文件dmserver启动成功V$DW_STATUS显示OPEN但他们用disql连接备库执行SELECT * FROM t1;时报错-2301: database is in archive mode but no archive log available。查V$ARCH_STATUS发现ARCH_STATUS INVALID原因是备库的dmarch.ini中ARCH_DEST路径不存在。mkdir -p /home/dmdba/arch chown dmdba:dmdba /home/dmdba/arch后状态立即变为VALID。提示V$DW_STATUS的SWITCHOVER_STATUS字段显示TO STANDBY表示可切换TO PRIMARY表示可被切换这是判断集群健康度的黄金指标。6.3 故障切换的“三秒验证法”达梦主备切换不是ALTER DATABASE SWITCHOVER一条命令而是三步原子操作且每步必须验证。标准切换流程主库执行ALTER DATABASE SWITCHOVER TO STANDBY;验证SELECT STATUS FROM V$INSTANCE;返回STANDBY备库执行ALTER DATABASE SWITCHOVER TO PRIMARY;验证SELECT STATUS FROM V$INSTANCE;返回PRIMARY应用连接修改应用连接字符串指向新主库IP。三秒验证法切换后立即执行SELECT SYSDATE FROM DUAL;确认时间同步执行INSERT INTO t1 VALUES(1); COMMIT;确认写入成功在原主库现备库执行SELECT * FROM t1 WHERE id1;确认数据已同步。我设计过一个压力测试在切换过程中向原主库插入1000条数据切换完成后查新主库发现只有998条。原因是最后两条事务在切换瞬间未同步。达梦的SWITCHOVER是“尽力而为”非强一致性。考试中如果要求“零丢失”必须用ALTER DATABASE FAILOVER TO STANDBY;强制切换但会丢弃未同步事务。常见问题切换后应用连接不上。90%的原因是防火墙未开放新主库端口或DNS缓存未刷新。用telnet 新主库IP 5236验证网络连通性比查数据库日志更快。7. 常见问题与排查技巧实录来自真实考场的21个高频问题7.1 启动与连接类问题问题现象根本原因快速定位命令解决方案disql SYSDBA/SYSDBA
RELATED

相关推荐

目标跟踪中的五种滤波算法原理与MATLAB实现

目标跟踪中的五种滤波算法原理与MATLAB实现

1. 目标跟踪中的滤波算法概述在目标跟踪领域,滤波算法扮演着至关重要的角色。它们通过对观测数据的处理,实现对目标状态的准确估计。本文将深入解析五种核心滤波算法的工作原理,并附上可直接运行的MATLAB实现代码。提示:所有MATLA…

📅 2026/10/15 14:37:11
协作式干扰中继:实现隐蔽无线通信的关键技术

协作式干扰中继:实现隐蔽无线通信的关键技术

1. 项目概述:当通信必须“隐身”,中继不再只是传话筒,而是战术掩护手隐蔽通信(Covert Communications)这个概念,听起来像特工电影里的桥段,但其实在无线通信领域早已不是科幻——它研究的是“在…

📅 2026/10/15 14:37:11
Python tkinter Text组件撤销重做机制与链表边界控制

Python tkinter Text组件撤销重做机制与链表边界控制

1. 项目概述:Text组件编辑历史的核心机制在Python的tkinter图形界面开发中,Text组件作为最常用的多行文本输入控件,其内置的编辑历史(Undo/Redo)功能是提升用户体验的关键特性。这个看似简单的"撤销/重做"功…

📅 2026/10/15 14:37:11
MORE NEWS

更多资讯

📰

STM32L431待机模式双路唤醒实战:WKUP引脚与RTC闹钟配置指南

简介:这份资源面向使用STM32L431进行低功耗开发的嵌入式工程师与学习者,聚焦待机模式下通过Wakeup引脚和RTC闹钟双路唤醒的完整实现方案,适合已具备一定HAL库与CubeMX基础、希望掌握电池供电场景节能策略的开发者参考。压缩包共188个文件&…

📰

Canoe诊断无响应,提示诊断超时,但是CAN报文正常接收发送

打开CANoe, 在Home页面把Simulated Bus改成Real Bus

📰

除自身以外数组的乘积:前缀积与后缀积的两趟扫描解法

1. 题目拆解与解题突破口1.1 一道看似简单却容易掉进坑里的数组题LeetCode 238 在算法练习平台上出现频率非常高,题目本身一句话就能说清:给你一个整数数组 nums,返回一个新数组 answer,其中 answer[i] 等于原数组中除 nums[i] 以…

📰

老版本摄像头驱动在Win10下的安装与DirectShow采集避坑指南

简介:大恒DH-HV13、HV20、HV31系列老版本摄像头驱动包,面向仍在使用这些工业相机或老式USB摄像头的工程师、开发者与系统维护人员。该驱动是操作系统与硬件之间的桥梁,解决旧版系统下设备无法被正确识别、图像采集异常或功能受限等问题&#…

📰

自建电气元件选型工具:从参数库到评分筛选的完整指南

简介:一款面向电气工程师、设备维护人员及自动化领域从业者的电气元件选型工具软件,用于解决配电系统中电缆线径与载流量计算繁琐、易错的问题。压缩包共4个文件,包含可执行主程序、元件参数数据库以及使用说明与自述文档,整体仅3…

📰

Kubernetes 1.18.8 部署实战:兼容老系统与边缘场景的稳态集群搭建

简介:本资源为 Kubernetes 1.18.8 版本的离线部署套件,面向容器化运维工程师、K8s 初中级学习者及私有云环境搭建人员,解决无公网场景下快速拉起高可用 K8s 集群的核心需求。压缩包共21个文件,涵盖4个Shell脚本(init.s…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬