DM达梦数据库登陆方式及日常运维命令

使用SQL客户端连接达梦数据库,主要有命令行工具 DISQL 和图形化工具 DM管理工具 两种方式。具体选择可参考下表:

工具类型工具名称主要特点/适用场景
命令行工具DISQL达梦自带,类似Oracle的SQLPlus,存放于安装路径的/bin//tool/目录,适合习惯命令行操作、需执行特定命令(如DESC查看表结构)或自动化脚本的场景。
图形化工具DM管理工具功能强大、操作简单的图形化客户端,适合日常管理、查询数据、视觉化操作。

🖥️ 使用DISQL命令行连接

DISQL工具位于达梦数据库安装路径下的bintool目录

  • 基本连接语法

./disql 用户名/密码@主机地址:端口号

例如,连接本地默认数据库实例(端口通常为5236):

./disql SYSDBA/SYSDBA@localhost:5236

注意:在/bin目录下使用disql时,建议直接在命令中写全连接信息。如果只输入./disql后回车,后续将无法输入端口号(除非使用默认端口5236)

  • 交互式连接
    /tool目录下或直接运行disql后,可以使用LOGINCONNCONNECT)命令连接

CONN SYSDBA/SYSDBA@localhost:5236

LOGIN 随后根据提示输入服务器地址、用户名、密码及端口号

  • 简化连接配置(可选)
    为省去每次输入完整地址的麻烦,可配置dm_svc.conf文件(通常在/etc目录)。在文件中按格式添加服务名:

自定义服务名=(IP地址:端口号)

例如:DMDB=(192.168.1.100:5236)

配置后,连接时只需使用服务名

./disql SYSDBA/SYSDBA@DMDB

🖱️ 使用图形化客户端连接

达梦数据库也提供了图形化的DM管理工具(DM Management Studio)

  1. 启动工具:在开始菜单中找到并启动"DM管理工具"

  2. 创建新连接

    • 在工具界面找到"注册连接"图标或选项

    • 在弹出的对话框中,填写主机名(或IP地址)、端口号(默认5236)、用户名(如SYSDBA)和口令

  3. 连接:点击"确定"或"连接"按钮即可登录数据库

💡 实用技巧与注意事项

  • 默认连接信息:达梦数据库初始管理员账号常为 SYSDBA,默认密码可能是 SYSDBA,初始端口号一般为 5236

  • 连接问题排查

    • 确保达梦数据库实例已启动

    • 检查主机名端口号是否正确,以及网络是否通畅

    • 注意用户名和密码的大小写,特别是早期版本默认密码可能要求大写

  • 执行SQL脚本:在DISQL中,可以使用 START 或反引号 ` 执行SQL脚本文件

START /path/to/your_script.sql 或 ` /path/to/your_script.sql
  • 退出DISQL:在DISQL命令行中,输入 QUIT 或 EXIT 即可退出

🗂️ 关于用户与模式

在达梦数据库中,创建一个用户时会自动生成一个同名的模式(Schema)作为该用户的默认模式。用户操作自己模式下的对象(如表)时可以不写模式名。查询当前所在模式可以使用:

SELECT SYS_CONTEXT ('userenv', 'current_schema') FROM DUAL;

相关文章:


达梦数据库的SQL命令体系清晰,涵盖了从数据库连接、对象操作到性能分析的各个方面。下面这个表格汇总了最常用的命令,方便快速查阅。

类别命令/操作说明及示例
连接与基础启动DISQL./disql 用户名/密码@主机:端口 ,或使用conn命令
执行SQL文件START<文件路径> 或 `` <文件路径> 
设置环境变量例如SET PAGESIZESET LINESIZE 
获取帮助HELP [命令] 
数据库对象操作查看表结构DESC 表名; 
创建表CREATE TABLE 表名 (列定义); 
修改表名ALTER TABLE 原表名 RENAME TO 新表名; 
删除表DROP TABLE 表名; 
数据操作插入数据INSERT INTO 表名 (列1, 列2) VALUES ('值1', '值2'); 
查询数据SELECT 列1, 列2 FROM 表名 [WHERE 条件]; 
更新数据UPDATE 表名 SET 列名=新值 [WHERE 条件];
删除数据DELETE FROM 表名 [WHERE 条件];
实用工具命令屏幕输出到文件SPOOL 文件路径 ... SPOOL OFF 
执行操作系统命令HOST [操作系统命令] 
查看执行计划EXPLAIN SQL语句; 

DM常用操作命令与MySQL对比一览

操作目的MySQL 命令达梦数据库 (DM) 命令关键差异说明
查看当前数据库/模式SELECT DATABASE();SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID);

SELECT SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA'); 
达梦使用模式(Schema) 来逻辑隔离对象。
查看所有数据库/模式SHOW DATABASES;SELECT DISTINCT NAME AS SCHEMA_NAME FROM SYSOBJECTS WHERE TYPE$ = 'SCH'; 在达梦中,需要查询系统表来获取模式列表。
切换数据库/模式USE database_name;SET SCHEMA schema_name;

ALTER SESSION SET CURRENT_SCHEMA = schema_name; 
达梦使用 SET SCHEMA 或修改会话的方式来切换当前模式。
查看当前模式下的所有表SHOW TABLES;SELECT TABLE_NAME FROM USER_TABLES; 达梦通过查询数据字典视图 USER_TABLES 来获取表列表。
查看其他模式下的所有表SHOW TABLES FROM database_name;SELECT TABLE_NAME FROM DBA_TABLES WHERE OWNER = 'schema_name'; 需要指定模式的拥有者(OWNER)来查询。
查看表结构DESC table_name;

SHOW CREATE TABLE table_name;
DESC schema_name.table_name; 

SELECT DBMS_METADATA.GET_DDL('TABLE', 'table_name', 'schema_name') FROM DUAL; 
1. 达梦的 DESC 需要指定模式名.表名
2. 获取完整的建表语句需要使用 DBMS_METADATA 包。

💡 重要差异与使用技巧

  1. 模式(Schema)与用户(User)的关系
    在达梦数据库中,一个用户可以拥有多个模式,但一个模式只属于一个用户。当创建一个用户时,系统会默认创建一个与用户名同名的模式作为其默认模式。执行SQL时,如果操作的不是当前用户的模式对象,通常需要在表名前加上模式名,格式为 模式名.表名 

  2. 设置默认(当前)模式的方法
    除了在DISQL中手动使用 SET SCHEMA,还可以在应用程序的JDBC连接字符串中直接指定,这可以避免在代码中频繁书写模式名前缀:jdbc:dm://192.168.15.35:5236?schema=TEST2

  3. 标识符和字符串的引用

    • MySQL:表名和字段名可以用反引号(`)引用,字符串可用单引号(')或双引号(")。

    • 达梦表名和字段名只能使用双引号(") 进行引用(如果包含特殊字符或关键字时)。而字符串必须使用单引号(') 表示。

  4. 自增列的定义

    • MySQL:使用 AUTO_INCREMENT

    • 达梦:使用 IDENTITY(1,1),例如 id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY 。注意,达梦不支持 AUTO_INCREMENT 关键字,通常使用 GENERATED ALWAYS AS IDENTITY 关键字。

🛠️ 命令详解与使用技巧

表格列出了常用命令,下面再补充一些关键细节和使用技巧,能让你更好地使用它们。

  • 连接数据库与DISQL工具
    DISQL是达梦数据库的命令行交互式客户端工具。连接时,如果密码含有特殊字符,建议用'""'包裹密码,例如:./disql SYSDBA/'"#Sjkdzgm0"'@192.168.23.3:5236 
    成功连接后,可以通过 START 或反引号 ` 来执行外部的SQL脚本文件。使用 SPOOL 命令可以将接下来屏幕上显示的所有内容输出到指定文件,这在生成报告或记录操作日志时非常有用。记得操作结束后用 SPOOL OFF 关闭输出

  • 掌握对象管理与数据操作
    建表时需要注意语法细节,例如,达梦数据库中标识符(如表名、列名)若包含特殊字符或与保留字冲突,需要使用双引号包围
    在执行数据操作时,务必注意事务的提交。可以通过 SET AUTO[COMMIT] 设置是否自动提交。在自动提交为OFF时,执行了INSERT、UPDATE、DELETE等修改数据的操作后,需要显式执行 COMMIT; 提交事务,或者执行 ROLLBACK; 回滚事务,才能使数据修改真正生效或撤销。

  • 分析SQL性能
    使用 EXPLAIN 命令是分析SQL语句执行计划、进行性能调优的重要步骤。执行计划采用缩进树形结构展示,读法一般是从内到外,从下到上。需要关注:

    • 高成本操作:执行计划中的高COST值操作通常是优化重点

    • 索引使用:确保适当的查询使用了索引

    • 全表扫描:对大表的全表扫描往往是性能瓶颈

DM常用SQL命令

-- 查看实例名
select instance_name from v$instance;
-- 查看达梦版本
select * from v$version; 
-- 查看达梦有无开启兼容mysql语法
select para_name,para_value,file_value from v$dm_ini where para_name='COMPATIBLE_MODE';
-- 查看用户所有库
SELECT t.name schname, t.id, t.pid, b.name username FROM sysobjects t, sysobjects b WHERE t.pid = b.id AND t.type$='SCH' ;
-- 查看用户所有角色
select  grantee,granted_role from dba_role_privs where grantee='chegva';
-- 查看数据库会话
select *from v$sessions;
-- 查看所有索引(当前模式)
SELECT INDEX_NAME, TABLE_NAME, UNIQUENESS FROM USER_INDEXES;
-- 查看其他模式的索引
SELECT * FROM DBA_INDEXES WHERE OWNER = 'schema_name' AND TABLE_NAME = 'table_name';
-- 查看索引的详细定义
SELECT DBMS_METADATA.GET_DDL('INDEX', 'index_name', 'schema_name') FROM DUAL;
-- 查看表的索引
SELECT * FROM USER_INDEXES WHERE TABLE_NAME = 'table_name';
或
SP_TABLEDEF('schema_name', 'table_name');


相关文章:

anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/6538.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注