运维管理23 分钟阅读
达梦 运维命令 100 条
达梦数据库在国产数据库项目中的应用越来越广,但很多刚接触 DM8 的 DBA,仍然习惯按照 Oracle、MySQL 或 PostgreSQL 的运维方式处理问题。虽然达梦在 SQL 语法、数据字典和管理方式上与 Oracle 有不少相似之处,但在实例初始化、参数修改、备份恢复、动态性能视图和数据守护等方面,仍然有自己的工具体系。
2026年7月24日阅读—点赞—收藏—
dba100墨力计划达梦达梦数据库
在知识库中专注阅读,并随时返回相关工具与课程
达梦数据库在国产数据库项目中的应用越来越广,但很多刚接触 DM8 的 DBA,仍然习惯按照 Oracle、MySQL 或 PostgreSQL 的运维方式处理问题。虽然达梦在 SQL 语法、数据字典和管理方式上与 Oracle 有不少相似之处,但在实例初始化、参数修改、备份恢复、动态性能视图和数据守护等方面,仍然有自己的工具体系。
达梦数据库在国产数据库项目中的应用越来越广,但很多刚接触 DM8 的 DBA,仍然习惯按照 Oracle、MySQL 或 PostgreSQL 的运维方式处理问题。虽然达梦在 SQL 语法、数据字典和管理方式上与 Oracle 有不少相似之处,但在实例初始化、参数修改、备份恢复、动态性能视图和数据守护等方面,仍然有自己的工具体系。
这篇文章整理了达梦 DBA 日常工作中经常使用的 100 条命令,覆盖数据库安装初始化、实例管理、用户权限、表空间、对象管理、性能排查、锁阻塞、备份恢复、逻辑导入导出、作业调度和数据守护等场景。
本文以 DM8 Linux 环境为例,假设:
1DM_HOME=/opt/dmdbms2数据库目录=/dmdata/DAMENG3实例名=DMSERVER4监听端口=52365备份目录=/dmbackup达梦官方提供 DIsql、DMRMAN、dminit、dmserver、dexp 和 dimp 等命令行工具,其中 DIsql 主要用于联机管理和备份,DMRMAN 主要用于脱机备份、还原和恢复。
1export DM_HOME=/opt/dmdbms2export PATH=$DM_HOME/bin:$PATH3export LD_LIBRARY_PATH=$DM_HOME/bin:$LD_LIBRARY_PATH建议将环境变量写入 dmdba 用户的 .bash_profile,避免每次登录后重复配置。
1disql SYSDBA/'StrongPassword'@127.0.0.1:5236指定用户名、密码、服务器地址和端口连接数据库。
1disql APP/'AppPassword'@192.168.1.100:5236如果连接失败,应依次检查数据库服务、监听端口、防火墙、用户名密码和客户端网络。
1dminit HELP在正式建库前,建议先确认当前版本支持的初始化参数。
1dminit \2PATH=/dmdata \3DB_NAME=DAMENG \4INSTANCE_NAME=DMSERVER \5PORT_NUM=5236 \6SYSDBA_PWD='StrongPassword' \7SYSAUDITOR_PWD='AuditPassword'dminit 会在指定路径下生成数据文件、控制文件、日志文件及 dm.ini 等配置文件。
1dmserver /dmdata/DAMENG/dm.ini适合安装验证、故障诊断或临时测试。关闭终端可能导致数据库进程退出,不建议作为生产环境的常规启动方式。
1dmserver /dmdata/DAMENG/dm.ini mount修改数据库模式、配置归档、执行部分恢复操作时,通常需要将实例启动到 MOUNT 状态。
1/etc/rc.d/init.d/DmServiceDMSERVER start服务脚本名称通常为 DmService 加实例名。
1/etc/rc.d/init.d/DmServiceDMSERVER stop停止生产数据库前,应确认应用连接已经关闭,并检查是否存在未提交的大事务。
1cd $DM_HOME/script/root23./dm_service_installer.sh \4-t dmserver \5-dm_ini /dmdata/DAMENG/dm.ini \6-p DMSERVER注册后通常会生成对应的实例服务脚本。
DM8 的运行状态可以通过 V$DATABASE、V$INSTANCE、V$VERSION 和 V$DM_INI 等动态视图检查。参数按照手动、静态和动态属性分类,动态参数可以修改内存值,静态参数通常需要修改配置文件后重启生效。
1SELECT * FROM V$VERSION;升级、迁移、备份恢复和主备部署前,必须确认数据库版本及补丁号。
1SELECT * FROM V$DATABASE;可以查看数据库名称、创建时间、归档模式及数据库状态等信息。
1SELECT * FROM V$INSTANCE;重点关注实例名称、实例模式、启动状态和启动时间。
1SELECT SYSDATE FROM DUAL;用于检查数据库时间是否与操作系统时间、应用服务器时间一致。
1SELECT USER FROM DUAL;执行高风险操作前,应先确认当前连接用户和权限范围。
1SELECT2 PARA_NAME,3 PARA_VALUE,4 SESS_VALUE,5 FILE_VALUE,6 PARA_TYPE7FROM V$DM_INI8WHERE PARA_NAME = 'MAX_SESSIONS';PARA_VALUE、SESS_VALUE 和 FILE_VALUE 分别反映参数的系统值、会话值和配置文件值。
1SELECT SF_GET_PARA_VALUE(2, 'MAX_SESSIONS');scope=2 表示获取内存中的参数值。
1SELECT2 PARA_NAME,3 PARA_VALUE,4 SESS_VALUE,5 FILE_VALUE,6 PARA_TYPE,7 DESCRIPTION8FROM V$DM_INI9ORDER BY PARA_NAME;参数调整前,建议同时记录当前值、文件值、默认值和参数属性。
1SP_SET_PARA_VALUE(1, 'ENABLE_MONITOR', 1);scope=1 表示同时修改内存值和 dm.ini 文件值,只能用于支持动态修改的参数。
1SP_SET_PARA_VALUE(2, 'MAX_SESSIONS', 2000);scope=2 只修改配置文件值,通常需要重启数据库后才能生效。
达梦支持用户、角色、系统权限、对象权限和模式级权限。创建用户时通常会自动创建同名模式,权限设计应尽量遵循最小权限原则。
1CREATE USER APP2IDENTIFIED BY "App@123456"3DEFAULT TABLESPACE TS_APP;生产环境不建议直接向业务用户授予 DBA 权限。
1ALTER USER APP IDENTIFIED BY "NewApp@123456";修改密码时需要满足当前数据库的密码复杂度策略。
1SP_UNLOCK_USER('APP');用户因连续登录失败被锁定时,可以使用该过程解锁。
1DROP USER APP CASCADE;CASCADE 会同时删除用户拥有的模式对象,生产环境执行前必须完成对象和数据确认。
1CREATE ROLE R_APP_READ;通过角色统一管理权限,比直接给大量用户逐项授权更容易审计。
1GRANT RESOURCE TO APP;应根据实际需要选择预定义角色或自定义角色,避免过度授权。
1GRANT SELECT ON APP.T_ORDER TO REPORT_USER;适用于报表用户只读访问指定业务表。
1REVOKE SELECT ON APP.T_ORDER FROM REPORT_USER;用户离岗、应用下线或权限调整后,应及时回收不再需要的权限。
1GRANT SELECT ON SCHEMA APP TO REPORT_USER;模式级授权适合需要访问同一模式中大量对象的只读用户。
1SELECT *2FROM (3 SELECT4 GRANTEE,5 GRANTED_ROLE AS PRIVILEGE,6 'ROLE_PRIVS' AS PRIVILEGE_TYPE7 FROM DBA_ROLE_PRIVS89 UNION ALL1011 SELECT12 GRANTEE,13 PRIVILEGE,14 'SYS_PRIVS' AS PRIVILEGE_TYPE15 FROM DBA_SYS_PRIVS1617 UNION ALL1819 SELECT20 GRANTEE,21 PRIVILEGE || ' ON ' || OWNER || '.' || TABLE_NAME,22 'TABLE_PRIVS' AS PRIVILEGE_TYPE23 FROM DBA_TAB_PRIVS24)25WHERE GRANTEE = 'APP'26ORDER BY PRIVILEGE_TYPE, PRIVILEGE;该查询可以用于用户权限审计和权限基线检查。
DM8 用户表空间可以包含多个数据文件,并支持自动扩展、调整文件大小、数据文件迁移和表空间联机、脱机操作。数据文件最小容量与数据库页大小有关。
1CREATE TABLESPACE TS_APP2DATAFILE '/dmdata/DAMENG/TS_APP01.DBF'3SIZE 10244AUTOEXTEND ON NEXT 1285MAXSIZE 20480;示例中初始大小为 1024MB,每次自动扩展 128MB,最大扩展到 20480MB。
1ALTER TABLESPACE TS_APP2ADD DATAFILE '/dmdata/DAMENG/TS_APP02.DBF'3SIZE 10244AUTOEXTEND ON NEXT 1285MAXSIZE 20480;相比让单个文件无限增长,多数据文件通常更方便进行容量管理。
1ALTER TABLESPACE TS_APP2RESIZE DATAFILE '/dmdata/DAMENG/TS_APP01.DBF'3TO 4096;单位默认为 MB。缩小文件前必须确认文件尾部没有正在使用的数据页。
1ALTER TABLESPACE TS_APP OFFLINE;移动用户表空间数据文件时,通常需要先将表空间设置为 OFFLINE。
1ALTER TABLESPACE TS_APP ONLINE;表空间联机后,应检查其中对象是否能够正常访问。
1ALTER TABLESPACE TS_APP2RENAME DATAFILE3'/dmdata/DAMENG/TS_APP01.DBF'4TO5'/dmdata2/DAMENG/TS_APP01.DBF';执行前应先将用户表空间脱机,并在操作系统层面完成文件迁移。SYSTEM 和 ROLL 表空间不能按照普通用户表空间的方式直接脱机迁移。
1SELECT2 TS.NAME AS TABLESPACE_NAME,3 DF.PATH AS DATAFILE_PATH4FROM V$TABLESPACE TS5JOIN V$DATAFILE DF6 ON TS.ID = DF.GROUP_ID7ORDER BY TS.NAME, DF.PATH;该查询适合用于磁盘迁移、空间扩容和故障定位。
1SELECT2 A.TABLESPACE_NAME,3 ROUND(B.TOTAL / 1024 / 1024, 2) AS TOTAL_MB,4 ROUND(A.FREE / 1024 / 1024, 2) AS FREE_MB,5 ROUND((B.TOTAL - A.FREE) / 1024 / 1024, 2) AS USED_MB,6 ROUND((B.TOTAL - A.FREE) / B.TOTAL * 100, 2) AS USED_PERCENT7FROM (8 SELECT TABLESPACE_NAME, SUM(BYTES) AS FREE9 FROM DBA_FREE_SPACE10 GROUP BY TABLESPACE_NAME11) A12JOIN (13 SELECT TABLESPACE_NAME, SUM(BYTES) AS TOTAL14 FROM DBA_DATA_FILES15 GROUP BY TABLESPACE_NAME16) B17 ON A.TABLESPACE_NAME = B.TABLESPACE_NAME18ORDER BY USED_PERCENT DESC;这是达梦日常巡检中最常用的空间查询之一。
1SELECT TOP 202 OWNER,3 SEGMENT_NAME,4 SEGMENT_TYPE,5 TABLESPACE_NAME,6 ROUND(BYTES / 1024 / 1024, 2) AS SIZE_MB7FROM DBA_SEGMENTS8ORDER BY BYTES DESC;表空间使用率升高时,应继续定位增长最快或占用最大的表和索引。
1DROP TABLESPACE TS_APP;如果表空间中仍有对象,应先迁移或删除对象。生产环境不要在未确认对象归属的情况下直接删除表空间。
达梦优化器需要依赖对象统计信息估算数据量和执行代价。统计信息长期不更新,可能导致执行计划偏离真实数据分布。DM8 可以通过 SP_TAB_STAT_INIT 和 SP_INDEX_STAT_INIT 收集表、索引统计信息。
1CREATE TABLE APP.T_ORDER2(3 ID BIGINT IDENTITY(1,1) PRIMARY KEY,4 ORDER_NO VARCHAR(64) NOT NULL,5 USER_ID BIGINT,6 AMOUNT DECIMAL(18,2),7 CREATE_TIME TIMESTAMP DEFAULT SYSDATE8)9TABLESPACE TS_APP;IDENTITY(1,1) 表示从 1 开始,每次递增 1。
1ALTER TABLE APP.T_ORDER2ADD STATUS VARCHAR(20) DEFAULT 'NEW';对大表增加带默认值的字段前,应在测试环境评估锁表时间和日志量。
1TRUNCATE TABLE APP.T_ORDER;TRUNCATE 属于高风险操作,通常不能像普通 DELETE 一样通过事务回滚恢复。
1CREATE INDEX APP.IDX_ORDER_USER_TIME2ON APP.T_ORDER(USER_ID, CREATE_TIME);联合索引列顺序应根据过滤条件、选择性和排序需求确定。
1ALTER INDEX APP.IDX_ORDER_USER_TIME REBUILD;索引重建会消耗 CPU、I/O、临时空间和日志空间,不应作为固定频率的机械化维护动作。
1SP_TAB_STAT_INIT('APP', 'T_ORDER');批量导入、数据清理或数据分布发生明显变化后,可以重新收集统计信息。
1SP_INDEX_STAT_INIT('APP', 'IDX_ORDER_USER_TIME');索引统计信息异常时,优化器可能错误估算索引扫描成本。
1EXPLAIN2SELECT *3FROM APP.T_ORDER4WHERE USER_ID = 10015ORDER BY CREATE_TIME DESC;EXPLAIN 不实际执行 SQL,只显示优化器生成的预估执行计划。
1SET AUTOTRACE TRACEONLY;23SELECT *4FROM APP.T_ORDER5WHERE USER_ID = 1001;重点关注逻辑读、物理读、磁盘排序、返回行数、执行时间和 I/O 等待时间。
1SELECT2 OWNER,3 OBJECT_NAME,4 OBJECT_TYPE,5 STATUS6FROM DBA_OBJECTS7WHERE STATUS <> 'VALID'8ORDER BY OWNER, OBJECT_TYPE, OBJECT_NAME;数据库迁移、升级或依赖对象修改后,应检查视图、存储过程、函数和触发器是否失效。
DM8 提供 V$SESSIONS、V$SQL_STAT、V$LONG_EXEC_SQLS、V$LOCK、V$DEADLOCK_HISTORY 和 V$SYSTEM_EVENT 等动态视图,可以定位活动会话、慢 SQL、高内存 SQL、锁等待和系统等待事件。
1SELECT2 STATE,3 CLNT_IP,4 CLNT_TYPE,5 CURR_SCH,6 USER_NAME,7 COUNT(*) AS SESSION_COUNT8FROM V$SESSIONS9GROUP BY10 STATE,11 CLNT_IP,12 CLNT_TYPE,13 CURR_SCH,14 USER_NAME15ORDER BY STATE, SESSION_COUNT DESC;连接数异常升高时,可以快速判断连接主要来自哪个客户端和用户。
1SELECT2 A.SESS_ID,3 A.USER_NAME,4 A.STATE,5 A.CLNT_IP,6 A.TRX_ID,7 DATEDIFF(SS, A.LAST_SEND_TIME, SYSDATE) AS EXEC_SECONDS,8 SF_GET_SESSION_SQL(A.SESS_ID) AS FULL_SQL9FROM V$SESSIONS A10WHERE A.STATE IN ('ACTIVE', 'WAIT')11ORDER BY EXEC_SECONDS DESC;SF_GET_SESSION_SQL 可以获取会话当前执行的完整 SQL。
1SELECT *2FROM V$LONG_EXEC_SQLS3ORDER BY EXEC_TIME DESC;使用该视图前应确认 ENABLE_MONITOR 等相关监控参数已开启。
1SELECT TOP 202 START_TIME,3 TIME_USED / 1000 AS TIME_USED_SECONDS,4 TOP_SQL_TEXT5FROM V$SQL_HISTORY6ORDER BY TIME_USED DESC;不能只看单次执行时间,还需要结合执行次数、返回行数和业务调用频率综合判断。
1SELECT *2FROM V$SYSTEM_LARGE_MEM_SQLS3ORDER BY MEM_USED_BY_K DESC;重点检查大排序、HASH JOIN、大结果集和缺少过滤条件的 SQL。
1SELECT *2FROM V$LOCK3WHERE BLOCKED = 1;BLOCKED=1 表示锁请求当前处于阻塞状态。
1WITH TRX_TAB AS2(3 SELECT4 O.NAME,5 L.TRX_ID6 FROM V$LOCK L7 JOIN SYSOBJECTS O8 ON L.TABLE_ID = O.ID9 WHERE O.ID <> 010),11TRX_SESS AS12(13 SELECT14 L.TRX_ID AS WAIT_TRX_ID,15 L.ROW_IDX AS BLOCK_TRX_ID,16 L.BLOCKED,17 (18 SELECT NAME19 FROM TRX_TAB T20 WHERE T.TRX_ID = L.TRX_ID21 ) AS WAIT_TABLE,22 S1.SESS_ID AS WAIT_SESS_ID,23 S2.SESS_ID AS BLOCK_SESS_ID,24 S1.USER_NAME AS WAIT_USER,25 S2.USER_NAME AS BLOCK_USER,26 S1.SQL_TEXT AS WAIT_SQL,27 S1.CLNT_IP AS WAIT_CLIENT_IP,28 DATEDIFF(SS, S1.LAST_SEND_TIME, SYSDATE) AS WAIT_SECONDS29 FROM V$LOCK L30 JOIN V$SESSIONS S131 ON L.TRX_ID = S1.TRX_ID32 JOIN V$SESSIONS S233 ON L.ROW_IDX = S2.TRX_ID34)35SELECT36 SYSDATE AS CHECK_TIME,37 *38FROM TRX_SESS39WHERE BLOCKED = 1;该查询可以直接定位等待会话、阻塞会话、涉及对象和客户端地址。
1SELECT *2FROM V$DEADLOCK_HISTORY;死锁已经自动解除并不代表问题结束,应继续分析涉及的 SQL、对象和事务访问顺序。
1SP_CLOSE_SESSION(123456);将 123456 替换为实际的 SESS_ID。关闭会话可能触发事务回滚,执行前必须评估回滚量和业务影响。
1SELECT TOP 20 *2FROM V$SYSTEM_EVENT3ORDER BY TOTAL_WAITS DESC;应结合等待次数、总等待时间、平均等待时间和业务时间窗口判断性能瓶颈。
DM8 的联机库备份通常要求数据库处于 OPEN 和归档模式。数据库和表空间的物理还原一般通过 DMRMAN 脱机执行,数据库执行 RESTORE 后还需要继续执行 RECOVER。
1BACKUP DATABASE2BACKUPSET '/dmbackup/full/db_full_20260723';生产环境应将备份目录放在独立磁盘,并定期将备份复制到异机或其他存储介质。
1BACKUP TABLESPACE TS_APP2BACKUPSET '/dmbackup/tablespace/ts_app_20260723';表空间备份适合重要业务表空间的专项保护,但不能替代完整的数据库备份策略。
1BACKUP TABLE APP.T_ORDER2BACKUPSET '/dmbackup/table/t_order_20260723';适合重要表变更前的快速保护。
1SELECT SF_BAKSET_CHECK(2 'DISK',3 '/dmbackup/full/db_full_20260723'4);返回 1 通常表示备份集存在且合法。只完成备份而不校验,不能证明备份真正可用。
1dmrmanDMRMAN 是达梦脱机备份、还原和恢复的核心命令行工具。
1RMAN> BACKUP DATABASE2'/dmdata/DAMENG/dm.ini'3FULL4BACKUPSET '/dmbackup/offline/db_full_20260723';执行脱机备份前必须停止目标数据库实例。
1RMAN> SHOW BACKUPSET2'/dmbackup/offline/db_full_20260723';可以查看备份类型、备份时间、数据库信息和备份链等内容。
1RMAN> CHECK BACKUPSET2'/dmbackup/offline/db_full_20260723';备份校验应纳入日常巡检或备份作业。
1RMAN> RESTORE DATABASE2'/dmdata_restore/DAMENG/dm.ini'3FROM BACKUPSET4'/dmbackup/full/db_full_20260723';还原目标实例必须处于关闭状态。
1RMAN> RECOVER DATABASE2'/dmdata_restore/DAMENG/dm.ini'3FROM BACKUPSET4'/dmbackup/full/db_full_20260723';RESTORE 负责恢复数据文件,RECOVER 负责重做日志并将数据库恢复到一致状态。
1RMAN> RECOVER DATABASE2'/dmdata_restore/DAMENG/dm.ini'3UPDATE DB_MAGIC;数据库还原恢复完成后,通常还需要执行 DB_MAGIC 更新,使目标库进入可正常启动状态。
dexp 和 dimp 用于数据库对象和数据的逻辑导出、导入,支持数据库级、模式级和表级操作。逻辑导出适合迁移、对象级恢复和跨环境数据交换,但不能替代物理备份。
1dexp \2SYSDBA/'StrongPassword'@127.0.0.1:5236 \3FILE=dm_full.dmp \4LOG=dm_full.log \5DIRECTORY=/dmbackup/exp \6FULL=Y逻辑导出目录必须存在,并确保执行用户具有读写权限。
1dexp \2USERID=SYSDBA/'StrongPassword'@127.0.0.1:5236 \3FILE=app_schema.dmp \4LOG=app_schema.log \5DIRECTORY=/dmbackup/exp \6SCHEMAS=APP适合单个业务模式迁移。
1dexp \2USERID=SYSDBA/'StrongPassword'@127.0.0.1:5236 \3FILE=app_tables.dmp \4LOG=app_tables.log \5DIRECTORY=/dmbackup/exp \6TABLES=APP.T_ORDER,APP.T_ORDER_DETAIL表级导出通常会包含表数据、索引、约束等对象信息。
1dimp \2USERID=SYSDBA/'StrongPassword'@127.0.0.1:5236 \3FILE=/dmbackup/exp/dm_full.dmp \4LOG=dm_full_import.log \5FULL=Y导入前需要评估已有用户、表空间、模式和对象冲突。
1dimp \2USERID=SYSDBA/'StrongPassword'@127.0.0.1:5236 \3FILE=/dmbackup/exp/app_schema.dmp \4LOG=app_schema_import.log \5SCHEMAS=APP导入前应确认目标用户、默认表空间和权限是否符合要求。
1dimp \2USERID=SYSDBA/'StrongPassword'@127.0.0.1:5236 \3FILE=/dmbackup/exp/app_tables.dmp \4LOG=app_tables_import.log \5TABLES=APP.T_ORDER,APP.T_ORDER_DETAIL目标表已存在时,可以根据场景设置 TABLE_EXISTS_ACTION 为 SKIP、APPEND、TRUNCATE 或 REPLACE。
1RMAN> BACKUP ARCHIVE LOG ALL2DATABASE '/dmdata/DAMENG/dm.ini'3BACKUPSET '/dmbackup/archive/arch_all_20260723';执行归档备份前,数据库必须已经配置归档。
1RMAN> RESTORE ARCHIVE LOG2FROM BACKUPSET '/dmbackup/archive/arch_all_20260723'3TO ARCHIVEDIR '/dmdata_restore/archive'4OVERWRITE 2;恢复数据库时,归档日志目录必须保持连续和完整。
1RMAN> REPAIR ARCHIVELOG2DATABASE '/dmdata/DAMENG/dm.ini';该命令需要在数据库停止状态下执行,通常用于数据库异常退出后的归档修复。
达梦实例健康检查不能只关注 CPU 和磁盘使用率,还需要检查归档状态、缓冲池、内存池、字典缓存、系统统计和 SQL 日志。
1CHECKPOINT(100);在备份提示归档不连续等特定场景下,可以执行检查点后重新尝试,但不能把该命令作为替代故障分析的固定动作。
1SELECT *2FROM V$ARCH_STATUS;重点检查 ARCH_STATUS 是否为 VALID。实时、即时或远程归档状态通常应在主库上检查。
1SELECT *2FROM V$DM_ARCH_INI;可以查看归档类型、归档目标、单文件大小和归档空间限制。
1SELECT *2FROM V$ARCH_FILE;可用于检查归档文件及其有效 LSN 范围。
1SP_SET_PARA_VALUE(1, 'SVR_LOG', 1);开启后还需要正确配置数据库目录中的 sqllog.ini。生产环境不应长期无过滤地记录全部 SQL,否则可能带来额外性能和磁盘开销。
1SP_REFRESH_SVR_LOG_CONFIG();修改 sqllog.ini 后,可以调用该过程使配置动态生效。
1SELECT *2FROM V$BUFFERPOOL;可以检查缓冲池页数、页大小、空闲页、淘汰页和数据页访问情况。
1SELECT *2FROM V$MEM_POOL;用于检查共享内存池、当前分配空间和实际使用空间。
1SELECT *2FROM V$DB_CACHE;对象频繁创建、删除或大量动态 SQL 场景下,可以重点关注字典缓存使用情况。
1SELECT *2FROM V$SYSSTAT3WHERE CLASSID IN (11, 5)4ORDER BY CLASSID DESC;系统统计应结合两个时间点做差值分析,仅看实例启动以来的累计值容易产生误判。
生产环境除了关注数据库是否能够连接,还应持续检查作业调度、备份执行结果、密码策略、用户权限、数据守护状态、MAL 链路和归档发送情况。
1SELECT2 A.ID,3 A.NAME,4 A."ENABLE",5 A.USERNAME,6 A.CREATETIME,7 A.MODIFYTIME,8 A.DESCRIBE,9 B.LAST_DATE || ' ' || B.LAST_SEC AS LAST_TIME,10 B.NEXT_DATE || ' ' || B.NEXT_SEC AS NEXT_TIME,11 B.WHAT12FROM SYSJOB.SYSJOBS A13JOIN SYSJOB.USER_JOBS B14 ON A.ID = B.JOB;重点检查备份、统计信息和数据清理作业是否启用,以及下一次执行时间是否正确。
1SELECT *2FROM SYSJOB.SYSJOBSCHEDULES;用于检查调度周期、执行日期和时间窗口。
1SELECT *2FROM SYSJOB.SYSSTEPHISTORIES2 A3WHERE (4 SELECT COUNT(*)5 FROM SYSJOB.SYSSTEPHISTORIES2 B6 WHERE B.NAME = A.NAME7 AND B.EXEC_ID >= A.EXEC_ID8) <= 109ORDER BY A.START_TIME DESC, A.NAME;备份文件存在并不代表作业成功,应同时检查作业历史和备份日志。
1SELECT2 PARA_NAME,3 PARA_VALUE,4 SESS_VALUE,5 FILE_VALUE6FROM V$DM_INI7WHERE PARA_NAME IN ('PWD_POLICY', 'PWD_MIN_LEN');生产环境应避免使用弱密码,并根据安全要求配置密码长度和复杂度。
1SELECT *2FROM (3 SELECT4 GRANTEE,5 GRANTED_ROLE AS PRIVILEGE,6 'ROLE_PRIVS' AS PRIVILEGE_TYPE7 FROM DBA_ROLE_PRIVS89 UNION ALL1011 SELECT12 GRANTEE,13 PRIVILEGE,14 'SYS_PRIVS' AS PRIVILEGE_TYPE15 FROM DBA_SYS_PRIVS1617 UNION ALL1819 SELECT20 GRANTEE,21 PRIVILEGE || ' ON ' || OWNER || '.' || TABLE_NAME,22 'TABLE_PRIVS' AS PRIVILEGE_TYPE23 FROM DBA_TAB_PRIVS24)25WHERE GRANTEE IN (26 SELECT USERNAME27 FROM ALL_USERS28 WHERE USERNAME NOT IN (29 'SYS',30 'SYSDBA',31 'SYSSSO',32 'SYSAUDITOR'33 )34)35ORDER BY GRANTEE, PRIVILEGE_TYPE, PRIVILEGE;建议定期检查 DBA、高权限角色、跨模式访问权限和已经废弃的业务账号。
1SELECT PARA_VALUE2FROM V$DM_INI3WHERE PARA_NAME = 'BAK_PATH';同时应在操作系统层面使用 df -h 和 du -sh 检查备份磁盘剩余空间。
1SELECT2 PATH,3 START_TIME,4 END_TIME,5 READ_SIZE,6 WRITE_SIZE,7 AVG_READ,8 AVG_WRITE,9 BACKUP_NAME,10 TYPE,11 STATUS,12 ERROR13FROM V$BACKUP_HISTORY14ORDER BY START_TIME DESC;V$BACKUP_HISTORY 保存最近的备份监控信息,可以检查备份速度、写入量、执行状态和错误信息。
1SELECT2 GROUP_NAME,3 INST_NAME,4 DW_TYPE,5 DW_MODE,6 AUTO_RESTART,7 DW_STATUS,8 DW_SUB_STATUS,9 LAST_MSG_TIME,10 SWITCH_COUNT11FROM V$DMWATCHER;重点检查守护进程状态、最近通信时间和主备切换次数。
1SELECT2 SRC_SITE,3 DEST_SITE,4 CTL_LINK_STATUS,5 DATA_LINK_STATUS6FROM V$MAL_LINK_STATUS;正常情况下,控制链路和数据链路通常都应处于 CONNECTED 状态。
1SELECT *2FROM V$ARCH_SEND_INFO;该视图主要在主库上使用,可以查看主库向各备库发送日志的统计信息。
对于 DBA 来说,记住命令本身并不是最重要的,真正重要的是知道什么时候使用这些命令,以及如何根据查询结果继续缩小故障范围。
例如,表空间使用率高并不意味着立刻增加数据文件,还需要判断是业务正常增长、异常批量写入、索引膨胀,还是备份文件放错目录;CPU 使用率高也不能直接归因于 SQL,需要结合活动会话、执行计划、等待事件、锁阻塞和系统资源一起分析;数据库主备状态正常,也不代表容灾真正可靠,还需要定期检查归档连续性、备份有效性和恢复流程。
这 100 条命令可以作为达梦 DBA 日常巡检和故障处理的基础清单。建议根据自己的环境修改数据库路径、实例名、表空间名、备份目录和业务模式,并逐步整理成适合自己生产环境的标准巡检脚本和运维 Runbook。