【总结】对接达梦数据库DM8详细教程

news2024/12/26 14:33:41

目录

    • 1.达梦数据库-技术文档
    • 2.软件安装包下载
      • 2.1 iso 安装版
      • 2.2 docker 安装版
    • 3.DM8单机安装部署规范
    • 4.安装操作步骤
      • 4.1 安装docker
      • 4.2 docker安装dameng(推荐)
    • 5. 启动/停止数据库
    • 6.客户端连接使用
    • 7.DDL SQL实践
      • 7.1 创建表空间
      • 7.2 建表语句
    • 8.DML SQL实践
      • 8.1 INSERT插入语句
    • 9.常见问题
      • 9.1 没有库概念
    • 9. Mysql语法迁移到DM记录
    • 10.达梦数据库-数据导入导出
    • 11.问题汇总

1.达梦数据库-技术文档

地址:https://eco.dameng.com/document/dm/zh-cn/pm/index.html
建议注册账号使用,某些链接点击时会跳登录页。

2.软件安装包下载

2.1 iso 安装版

dm8_20230104_x86_rh6_64
产品备注
链接地址:https://eco.dameng.com/s/WI234YUL43 提取码:dway
dm5201077539.key
dm8_20230104_x86_rh6_64.iso_SHA256.txt

2.2 docker 安装版

请从该页面下载镜像:https://eco.dameng.com/download/
选择docker 镜像版本。
在这里插入图片描述

3.DM8单机安装部署规范

请去官方搜索:DM8单机安装部署规范_v3.0.pdf

4.安装操作步骤

本地安装,推荐使用docker版本安装,方便又简洁。

4.1 安装docker

安装步骤:略

操作命令

systemctl 方式:
sudo systemctl start docker
sudo systemctl restart docker
sudo systemctl stop docker

service 方式:
sudo service docker start
sudo service docker restart
sudo service docker stop

4.2 docker安装dameng(推荐)

官方教程:https://eco.dameng.com/document/dm/zh-cn/start/dm-install-docker

启动命令:

sudo docker run -d -p 5236:5236 --restart=always --name dm8_01 --privileged=true -e PAGE_SIZE=16 -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e INSTANCE_NAME=dm8_01 -v /data01/dm8_01:/opt/dmdbms/data dm8_single:v8.1.2.128_ent_x86_64_ctm_pack4

5. 启动/停止数据库

停止数据库命令如下:
sudo docker stop dm8_01
启动数据库命令如下:
sudo docker start dm8_01
重启命令如下:
sudo docker restart dm8_01

6.客户端连接使用

注意

1.如果使用 docker 容器里面的 disql,进入容器后,先执行 source /etc/profile 防止中文乱码。

2.新版本 Docker 镜像中数据库默认用户名/密码为 SYSDBA/SYSDBA001。

客户端登录语法:./disql username/password@IP:PORT
  • 1)登录数据库服务器,进入容器:sudo docker exec -it dm8_01 /bin/bash

  • 2)执行 source /etc/profile

  • 3)进入命令目录 cd /opt/dmdbms/bin/

  • 4)启动客户端 ./disql

  • 5)输入用户名和密码

root@786239aa5804:/opt/dmdbms/bin# ./disql
disql V8
username:SYSDBA
password:SYSDBA001

7.DDL SQL实践

7.1 创建表空间

CREATE TABLESPACE yuntu DATAFILE ‘yuntu.DBF’ size 128;

7.2 建表语句

CREATE TABLE “tb_test”(“id” INT IDENTITY (1, 1) NOT NULL,“name” VARCHAR(10),NOT CLUSTER PRIMARY KEY(“id”));

注意此处:主键从1开始自增,且步长为1。 固定写法【IDENTITY (1, 1)】

注意:此时创建的表是【“tb_test”】而不是【tb_test】

但如果是:CREATE TABLE “TB_TEST1”(“id” INT IDENTITY (1, 1) NOT NULL,“name” VARCHAR(10),NOT CLUSTER PRIMARY KEY(“id”));

则创建的表是【TB_TEST1】而不是【“tb_test1”】,使用下述两个语句都可以查询表。

select * from tb_test1;

select * from TB_TEST1;

重点:达梦数据库建表语句中,对大小写敏感,表名、字段名一律需要大写,且用双引号引起。查询语句中,才可以用小写进行查询。

8.DML SQL实践

8.1 INSERT插入语句

INSERT INTO “tb_test” VALUES(‘test’); 向 【“tb_test”】 表插入一条数据

INSERT INTO tb_test1 VALUES(‘test’); 向【tb_test1】表插入一条数据

9.常见问题

本小节仅节选部分对编码有影响的问题。

9.1 没有库概念

DM 数据库没有库的概念,从上往下,依次为:实例-用户-表空间-表,如下图所示:

结构关系图
在这里插入图片描述

9. Mysql语法迁移到DM记录

  • mysql可对表或字段使用反引号 ` ,而DM中使用双引号",对于双引号括起来的字段或表名需要大写。如果不是关键字可以去除反引号

  • DM中支持CONCAT函数,mysql的xml中使用的CONCAT函数可不做修改;但DM不支持CONCAT_WS,需要使用CONCAT函数进行替换

  • mysql对用json字符串可以使用JSON_VALID进行校验,而DM中可以使用is json进行判断,但是DM中如果字符串中含有转义符的不能识别为json

  • insert语句中,DM不支持value,需要改为values

  • SQL中使用 ` 引用字段跟表名的用法不支持

  • 模式(schema)即对应mysql的dbname

  • 主动为主键列ID赋值不支持
    比如:INSERT INTO tablename(id, name) VALUES (122,‘myname’);
    报错:[-2723]:Only if specified in the column list and SET IDENTITY_INSERT is ON, then identity column could be assigned value.

  • 时间戳字段更新

CREATE TRIGGER before_update_dataset_authority
BEFORE UPDATE ON dataset_authority
FOR EACH ROW
BEGIN
:new.gmt_modify=CURRENT_TIMESTAMP();
END;

  • 添加注释

COMMENT ON TABLE database is ‘数据源配置表’;
COMMENT ON COLUMN database.id is ‘主键’;

10.达梦数据库-数据导入导出

https://eco.dameng.com/document/dm/zh-cn/faq/faq-import-export

11.问题汇总

Q1:达梦数据库的分页兼容各类数据库分页方式,无需修改

DM 数据库支持MySQL分页
DM 数据库支持 ROWNUM,所以能够支持 Oracle 的分页方式。
DM 数据库支持 TOP,所以能够支持 SQL Server 的分页方式。
DM 数据库支持 LIMIT,所以能够支持 MySQL 的分页方式。
由于 DM 数据支持所有的常用分页方式,为用户的应用提供了更好的可移植性。

Q2:docker的一些文件不小心被删了,镜像和容器都无法正常使用,且系统被重启了,当重新挂载镜像重启dameng数据库时,数据库无法正常使用,报[-510]:Error in line: 1 System in mount status.错误。
在这里插入图片描述
解决方法:使用SYSDBA登录到客户端,执行:alter database open;

原因:可能是一些异常情况,导致达梦数据库状态变更,变更为mount状态,根据官方文档提示。只要把数据库状态变更为open就行。

引用于:dm8系统管理员手册
7.2 数据库状态和模式
DM 数据库包含以下几种状态:

配置状态(MOUNT):不允许访问数据库对象,只能进行控制文件维护、归档配置、
数据库模式修改等操作;
打开状态(OPEN):不能进行控制文件维护、归档配置等操作,可以访问数据库对象,
对外提供正常的数据库服务;
挂起状态(SUSPEND):与 OPEN 状态的唯一区别就是,限制磁盘写入功能;
一旦修改了数据页,触发 REDO 日志、数据页刷盘,当前用户将被挂起。
OPEN 状态与 MOUNT 和 SUSPEND 能相互转换,
但是 MOUNT 和 SUSPEND 之间不能相互转换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/593228.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「2023大学生就业报告 」出炉,应届生都去了哪些行业?

2023年的应届毕业生人数再创新高,达到1158万人,是不是开始担忧他们的就业了?别急,最近Boss直聘发布的一组数据,会让这样的担忧有所缓解。 期望薪资有所下降 和增长明显的毕业人数相反的是,这一届大专、本…

网络流量监控及流量异常检测

当今的企业面临着许多挑战,尤其是在监控其网络基础设施方面,需要确保随着网络规模和复杂性的增长,能够全面了解网络的运行状况和安全性。为了消除对网络性能的任何压力,组织应该采取的一项重要行动是使用随组织一起扩展的工具监控…

探究工业设备状态监测的典型对象和常用方法

工业设备状态监测的目的是实时掌握设备的健康状况,及时发现潜在故障迹象,并采取相应的维修和维护措施。通过有效的状态监测,企业可以降低设备故障风险,减少计划外停机时间,提高生产效率,节约维护成本&#…

深兰科技亮相2023数博会:硅基知识大模型推动个人数字化产业

近日,2023中国国际大数据产业博览会 “数字经济与实体经济深度融合”论坛在贵阳举行。腾讯云、京东集团、网易、深兰科技等8家企业负责人进行了行业演讲。 作为2023数博会的专业论坛之一,本次论坛以“数融百业 创变赋新”为主题,从数实融合视…

项目冲突管理机制的4大关键环节

1、冲突预防功能 预先采取一些措施防止冲突的产生,如建立有效的沟通机制。在项目开始前,制定沟通计划、沟通频率和方式,以确保项目成员充分了解自我职责和任务,并自愿分享和讨论。通过有效的沟通机制,最大限度避免不必…

QoS实现之限速

基于流分类(MQC)的流量监管 前面我们已经介绍过,流量监管一般用于入方向。下面举个例子,详细介绍如何在入方向配置基于MQC的流量监管。如图2所示,企业的语音业务对应的VLAN ID为120,视频业务对应的VLAN ID…

自学网安该怎么做以及怎么找工作?

趁着今天下班,我花了几个小时整理了下,非常不易,希望大家可以点赞收藏支持一波,谢谢。 我的经历: 我 19 年毕业,大学专业是物联网工程,我相信很多人在象牙塔里都很迷茫,到了大三大…

图解LeetCode——146. LRU 缓存

一、题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,…

什么才是自动化测试框架?最流行的自动化测试框架整理,你的进阶之路...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

Smartbi助力航天百亿级遥测数据实现秒级查询

“Smartbi全程参与了火星探测任务、中国载人空间站建设任务,为航天任务参战单位提供专业、易用、高性能的实时数据查询分析监控平台,实现航天器飞行状态监测和预警,让咱们的科研人员专注聚焦科研工作,保障航天任务顺利进行。Smart…

Benewake(北醒) 快速实现 TF02-i-RS485 与电脑通信操作说明

目录 一、前言二、工具准备1. USB-RS485 转接器2. TF02-i-RS4853. 兆信直流电源4.连接线、绝缘胶带、螺丝刀5. PC:Windows 系统6. 串口助手软件 三、连接方式1. USB-RS485 转接板接口说明2. TF02-i-RS485 引脚定义3. 连接图 四、TF02-i-RS485 与电脑通信操作说明1. …

js中+new Date()

在学习js过程中遇到了这样的写法: var nownew Date(); 在这段代码中有一个号,上网查阅得知在前面加一个号是涉及到了隐式转换,也就是触发对象执行valueof进行求值。 valueof可以用来得到现在时间距离1970.1.1总的毫秒数: var …

Android12之源码手动生成aidl对应java/cpp/ndk/rust服务(一百五十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【自动化项目实战】博客系统

目录 1.博客自动化测试用例 2.准备工作 3.将手工测试用例转化为自动化测试用例 3.1 初始化动作 3.2 登录 3.3 博客列表博客数量 3.4 查看全文 3.5 写博客&发表博客 3.6 删除 3.7 注销 4.总代码 🌈这节文章我们讲解一个实战项目——博客系统。首先我…

在前公司年薪38W,经人内推腾讯居然被拒了···

末流院校,带17人研发团队,到手38w股票20w,过硬的技术让我觉得可以出去“闯闯”;内推到某大厂,电话里聊得挺好,结果第二天说不给安排面试了…… 被拒绝很正常,想必应该是能力不足,不能满足公司的…

太难了,00后求求你们别这么卷了....

在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事,可遇不可求,向他学习还来不及呢。 真正让人反感的,是技术平平&#x…

网络传输(传输介质、通信方式、交换方式)

目录 一、传输介质1.双绞线2.网线安装3.光纤4.无线信道 二、通信方式、交换方式1.通信方式2.同步方式3.交换方式 一、传输介质 1.双绞线 双绞线:将多根铜线按规则缠绕在一起,能够减少干扰;分为无屏蔽双绞线UTP和屏蔽双绞线STP,都…

PCIE学习

目录 一、PCIE结构1、层次结构2、数据包TLPDLLP PCIE寄存器配置1、基址寄存器的作用2、基址寄存器的位置 三、PCIE读取数据 一、PCIE结构 1、层次结构 绝大多数的总线或者接口,都是采用分层实现的。PCIe也不例外,它的层次结构如下: PCIe定…

MAYA绳子和铁链动画(3个例子)

一两条边中间加定位器 // Copyright (C) 2000-2001 Michael Bazhutkin - Copyright (C) 2000 studio Klassika // www.geocites.com/bazhutkin // bazhutkinmail.ru // // Rivet (button) 1.0 // Script File // MODIFY THIS AT YOUR OWN RISK // // Creation Date: Apri…

【Unittest】自动化测试框架核心要素

1、什么是Unittest框架? python自带一种单元测试框架 2、为什么使用UnitTest框架? >批量执行用例 >提供丰富的断言知识 >可以生成报告 3、核心要素: 1). TestCase(测试用例) 2). TestSuite(测试套件)…