注册

达梦简单使用方法

余生 2025/07/22 296 1

一、安装与配置技巧
选择合适的安装模式

根据业务需求选择典型安装、自定义安装或静默安装

生产环境推荐使用最小化安装,减少不必要的组件

内存配置优化

sql
-- 查看当前内存配置
SELECT * FROM V$DM_INI WHERE PARA_NAME LIKE '%MEMORY%';

-- 调整共享内存大小(需重启生效)
ALTER SYSTEM SET 'MEMORY_TARGET'='8G' SCOPE=SPFILE;
字符集设置

安装时务必选择与应用程序匹配的字符集(推荐UTF-8)

后期修改字符集代价较大,需谨慎

二、SQL优化技巧
执行计划分析

sql
-- 查看SQL执行计划
EXPLAIN SELECT * FROM large_table WHERE id=100;

-- 收集统计信息
ANALYZE TABLE large_table COMPUTE STATISTICS;
索引使用技巧

避免在索引列上使用函数

复合索引遵循最左前缀原则

定期重建碎片率高的索引

sql
-- 重建索引
ALTER INDEX idx_name REBUILD;
分页查询优化

sql
-- 低效写法(偏移量大时性能差)
SELECT * FROM table ORDER BY id LIMIT 10000, 20;

-- 高效写法
SELECT * FROM table WHERE id > 10000 ORDER BY id LIMIT 20;
三、备份与恢复技巧
物理备份

全量备份

./dmrman BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL;

增量备份

./dmrman BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENTAL;
逻辑备份

bash

导出整个数据库

./dexp SYSDBA/SYSDBA@localhost:5236 FILE=full.dmp LOG=exp.log FULL=Y

导出指定表

./dexp SYSDBA/SYSDBA@localhost:5236 FILE=tables.dmp LOG=exp.log TABLES=(table1,table2)
定时备份策略

全量备份: 每周一次

增量备份: 每天一次

归档日志备份: 每小时一次

四、性能监控技巧
系统视图查询

sql
-- 查看当前会话
SELECT * FROM V$SESSIONS;

-- 查看锁等待
SELECT * FROM V$LOCK WHERE BLOCKED=1;

-- 查看SQL执行历史
SELECT * FROM V$SQL_HISTORY ORDER BY EXEC_TIME DESC;
DM性能监控工具

使用DM性能监控工具(DMonitor)实时监控数据库状态

配置告警阈值,及时发现性能问题

五、高可用与集群技巧
数据守护(DW)配置

主备库配置建议使用异步模式减少主库压力

定期测试备库切换,确保高可用性

DSC共享存储集群

确保共享存储的高性能和高可靠性

配置VIP实现透明故障转移

六、开发实用技巧
存储过程调试

sql
-- 开启调试
SET DEBUG ON;

-- 执行存储过程
CALL proc_name(params);
批量数据处理

sql
-- 使用批量绑定提高性能
BEGIN
FORALL i IN 1..1000
INSERT INTO target_table VALUES(:array1(i), :array2(i));
END;
JSON支持(新版本特性)

sql
-- 查询JSON字段
SELECT data->'$.name' FROM json_table;

-- 创建JSON索引
CREATE INDEX idx_json ON json_table(JSON_EXTRACT(data, '$.id'));
七、常见问题解决
连接数不足

sql
-- 查看当前连接数
SELECT COUNT(*) FROM V$SESSIONS;

-- 修改最大连接数(需重启)
ALTER SYSTEM SET 'MAX_SESSIONS'=500 SCOPE=SPFILE;
表空间不足

sql
-- 查看表空间使用情况
SELECT * FROM DBA_DATA_FILES;

-- 扩展表空间
ALTER TABLESPACE TS1 ADD DATAFILE '/path/to/file.dbf' SIZE 2G;
死锁处理

sql
-- 查看死锁
SELECT * FROM V$DEADLOCK_HISTORY;

-- 终止会话
ALTER SYSTEM KILL SESSION 'sid,serial#';

回答 0
暂无回答
扫一扫
联系客服