简介:本文系统梳理达梦数据库日常操作的核心流程,涵盖连接管理、数据查询、事务控制、备份恢复及性能优化五大模块,通过代码示例与场景分析,为DBA及开发者提供可落地的操作指南。
达梦数据库支持多种连接方式:
示例:使用disql连接数据库
disql username/password@host:port# 示例:连接本地5236端口的DM实例disql SYSDBA/SYSDBA@127.0.0.1:5236
通过系统表查询活跃会话:
SELECT * FROM V$SESSIONS;-- 终止异常会话ALTER SYSTEM KILL SESSION 'sid,serial#';
优化建议:设置连接池参数(如MAX_SESSIONS),避免连接数耗尽导致服务不可用。
插入数据:
-- 单行插入INSERT INTO employees(id,name) VALUES(1,'张三');-- 批量插入(达梦特有语法)INSERT INTO employees SELECT * FROM temp_emp;
更新策略:
-- 条件更新(注意WHERE子句准确性)UPDATE orders SET status='COMPLETED'WHERE order_id IN (SELECT id FROM pending_orders);
删除操作:
-- 分区表删除优化DELETE FROM log_table PARTITION(p2023);
执行计划分析:
EXPLAIN SELECT * FROM large_table WHERE create_time > SYSDATE-30;
关键指标解读:
索引优化案例:
-- 创建复合索引CREATE INDEX idx_cust_order ON orders(customer_id,order_date);-- 避免索引失效的操作-- 错误示例:对索引列使用函数SELECT * FROM orders WHERE TO_CHAR(order_date,'YYYY')='2023';
达梦支持四种隔离级别:
| 级别 | 脏读 | 不可重复读 | 幻读 |
|———|———|——————|———|
| READ COMMITTED | 不可能 | 可能 | 可能 |
| REPEATABLE READ | 不可能 | 不可能 | 可能 |
| SERIALIZABLE | 不可能 | 不可能 | 不可能 |
设置示例:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
死锁检测:
SELECT * FROM V$LOCK WHERE BLOCK=1;
解决方案:
ALTER SESSION SET LOCK_TIMEOUT=30; -- 30秒超时
全量备份:
dmrman CTLSTMT="BACKUP DATABASE '/dmdata/DAMENG/dm.ini' FULL TO '/backup/full_bak' BACKUPSET '/backup/full_bak'"
增量备份:
dmrman CTLSTMT="BACKUP DATABASE '/dmdata/DAMENG/dm.ini' INCREMENT TO '/backup/incr_bak' BACKUPSET '/backup/incr_bak' BASED ON '/backup/full_bak'"
dexp/dimp使用:
# 导出表结构及数据dexp SYSDBA/SYSDBA@localhost:5236 FILE=/export/emp.dmp TABLES=employees# 导入数据(忽略约束冲突)dimp SYSDBA/SYSDBA@localhost:5236 FILE=/export/emp.dmp IGNORE=Y
| 指标 | 监控命令 | 正常范围 |
|---|---|---|
| 缓冲区命中率 | SELECT * FROM V$BUFFERPOOL; | >95% |
| 等待事件 | SELECT * FROM V$SYSTEM_EVENT; | <5%关键资源等待 |
| 内存使用 | SELECT * FROM V$MEMORY; | 预留20%空闲 |
步骤:
SELECT * FROM V$SQLAREA WHERE ELAPSED_TIME > 1000 ORDER BY ELAPSED_TIME DESC;
ALTER SESSION SET EVENTS '10046 trace name context forever,level 12';
ANALYZE TABLE large_table COMPUTE STATISTICS;
角色分配最佳实践:
-- 创建只读角色CREATE ROLE read_only_role;GRANT SELECT ON SCHEMA::PUBLIC TO read_only_role;-- 用户授权GRANT read_only_role TO app_user;
启用审计:
-- 开启DDL审计ALTER SYSTEM SET AUDIT_LEVEL=1;-- 查询审计记录SELECT * FROM SYSAUDIT$;
#!/bin/bashBACKUP_DIR=/backupLOG_FILE=/var/log/dm_backup.log# 检查备份文件if [ ! -f "$BACKUP_DIR/full_bak/dm.bak" ]; thenecho "$(date) 警告:全量备份缺失" >> $LOG_FILE# 触发告警机制/usr/local/bin/send_alert.sh "DM备份异常"fi
-- 每日性能检查SQLSELECT(SELECT VALUE FROM V$PARAMETER WHERE NAME='BUFFER_SIZE')/1024/1024 AS "缓冲池(MB)",(SELECT ROUND(100*(1-SUM(PHYSICAL_READS)/NULLIF(SUM(LOGICAL_READS),0)),2)FROM V$BH) AS "命中率(%)",(SELECT COUNT(*) FROM V$SESSION WHERE STATUS='ACTIVE') AS "活跃会话"FROM DUAL;
systemctl status dmserver
netstat -tulnp | grep 5236
[SERVICE]PORT_NUM=5236
扩容步骤:
ALTER TABLESPACE SYSTEM ADD DATAFILE '/dmdata/DAMENG/system02.dbf' SIZE 1024;
-- 重建表(达梦8+支持)ALTER TABLE log_table MOVE TABLESPACE new_tbs;
进阶建议:
通过系统掌握上述操作要点,可显著提升达梦数据库的运维效率与稳定性。建议结合实际业务场景,建立适合企业的标准化操作流程(SOP),并定期进行技能培训与考核。