达梦:【1】达梦常用操作
达梦:【1】达梦常用操作
- 一、登录达梦
- 二、创建表空间及用户模式
- 三、查看表空间、用户、模式
- 四、系统查询
- 五、角色管理
- 六、数据库导入导出
- 七、达梦数据库汉字存储
- 八、根据表生成ctl控制文件
- 九、本地连多台数据库(RAC)
一、登录达梦
./disql username/password@ip:port
> select * from dual;
二、创建表空间及用户模式
1、一个用户下可以有多个模式名,一个模式只能跟着一个用户,创建用户会自己生成模式,先创建表空间,再创建用户绑定表空间
create tablespace "表空间名称" datafile '表空间名称.DBF' size 32 CACHE = NORMAL; --创建表空间
create user 用户名称 identified by 用户密码 default tablespace 表空间名称; --创建用户
2、创建模式
CREATE SCHEMA "模式名称" AUTHORIZATION "SYSDBA";
三、查看表空间、用户、模式
1、查看表空间
select * from dba_data_files; --查看所有表空间
select * from dba_free_files; --查看所有剩余表空间
2、查看用户
select * from dba_users; --查看所有用户
3、查看模式
SELECT DISTINCT object_name FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'SCH' --查询所有的模式名
4、查看模式所属用户
selectSCH_OBJ.NAME ,SCH_OBJ.ID ,SCH_OBJ.CRTDATE,USER_OBJ.NAME
from(select NAME, ID, PID, CRTDATE from SYS.SYSOBJECTS where TYPE$='SCH')SCH_OBJ,(select NAME, ID from SYS.SYSOBJECTS where TYPE$='UR' and SUBTYPE$='USER')USER_OBJ
whereSCH_OBJ.PID=USER_OBJ.ID
ORDER BYSCH_OBJ.NAME;
5、查看用户所属角色
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='用户名'
四、系统查询
1、查看达梦版本
select name,create_time from v$database;
2、查看数据库大小写是否敏感
SELECT CASE_SENSITIVE();
3、查看用户权限角色
select * from DBA_SYS_PRIVS ;
4、查看所有用户
select username from dba_users;
5、查看表空间
select TABLESPACE_NAME from user_tablespaces;
6、查看指定表字段
select * from all_tab_columns where owner='用户名' and Table_Name='表名';
五、角色管理
1、查询角色的权限
select * from dba_sys_privs where grantee='角色名';
2、创建角色
CREATE ROLE 角色名;
3、给角色授予resource和public的权限
GRANT CREATE TABLE,CREATE INDEX TO 角色名;
4、给角色授予创建表和索引的权限
GRANT CREATE TABLE,CREATE INDEX TO 角色名;
5、给角色授予查询DMHR模式下CITY表的查询权限
GRANT SELECT ON DMHR.CITY TO 角色名;
6、授予角色的权限给用户
GRANT 角色名 TO 用户名;
7、回收用户的角色权限
REVOKE 角色名 FROM 用户名;
8、启用角色
sp_set_role('角色名',1);
9、禁用角色
sp_set_role('角色名',0);
10、删除角色
DROP ROLE 角色名;
六、数据库导入导出
1、数据库导出
./dexp SYSDBA/SYSDBA@IP:PORT directory=/data/sdb/snn file=imp_exp.dmp schemas=fuck
file:导出文件名
directory:导出文件存放路径
schemas:导出模式名
2、数据库导入
./dimp SYSDBA/SYSDBA@IP:PORT file=/data/sdb/snn/imp_exp.dmp remap_schema=fuck:
file:导入文件路径及名称
remap_schema:原导出模式名:待导入模式名
七、达梦数据库汉字存储
UNICODE_FLAG和LENGTH_IN_CHAR两个跟字符集相关的参数
- UNICODE_FLAG
此参数表示了数据库中所有数据的字符集,包括数据字典的字符集,需要注意的是,数据库一旦初始化完成,字符集就无法修改,可以用select Unicode查询当前数据库的字符集,0代表GB18030,1代表utf-8LENGTH_IN_CHAR - LENGTH_IN_CHAR
此参数决定了数据库中的varchar类型对象的长度是否以字符为单位,取值1则是设置以字符为单位,将存储长度值按照理论字符长度进行放大。取值为0,则所有varchar类型对象长度以字节为单位
1、场景一
Unicode_flag和length_in_char都设置为0,字符集GB18030,varchar长度以字节为单位
GB18030字符集下,一个汉字需要占用两个字节,所以varchar(3)可以插入一个汉字加上一个半角字符,但是无法插入两个汉字。
2、场景二
UNICODE_FLAG=1,LENGTH_IN_CHAR=0
字符集为utf-8,varchar长度以字节为单位
Utf-8字符集的情况下,一个汉字需要占用三个字节,所以varchar(3)只能插入一个汉字。
3、场景三
UNICODE_FLAG=0,LENGTH_IN_CHAR=1
字符集为GB18030,varchar长度以字节为单位
在length_in_char=1的情况下,varchar的实际可存储字节数会按一定比例放大,所以在使用GB18030的时候,varchar(3)实际可以存储3个汉字,也就是3*2个字节的数据
4、场景四
UNICODE_FLAG=1,LENGTH_IN_CHAR=1
字符集为utf-8,varchar长度以字符为长度
这里我们会发现一个奇怪的情况,明明设置是 varchar(3),为什么可以插入 4 个汉字呢。这是因为在 DM7 中数据库实际存储数据是以字节为单位。在 lengtg_in_char=1 且字符集为 utf-8 的时候,VARCHAR 类型对象的实际存放的最大长度是 VARCHAR 类型定义的长度*4 字节。
也就是说,这里一个 varchar(3) 的结构可以存放的数据为 3*4=12 个字节。然而事实上 UTF-8 中的一个汉字一般只用占用 3 个字节,所以这里我们可以插入 12/3=4 个汉字
总结:当 LENGTH_IN_CHAR=0 的情况下,varchar() 的长度是以字节数为单位。这时我们只需要考虑汉字和全角字符所占用字节数,其中 gb18030 的一个汉字是两个字节,utf-8 的一个汉字一般是三个字节。如果插入数据的总字节数大于 varchar 定义的长度,则会插入失败。
当 LENGTH_IN_CHAR=1 的情况下,varchar() 所能存储的字节数将会按照一定比例扩展。字符集为 gb18030 时 varchar 的字节数等于定义长度 *2,字符集为 utf-8 时 varchar 的字节数为定义长度 *4
八、根据表生成ctl控制文件
装载数据经常会使用到ctl控制文件进行状态,批量生成表对应控制文件
1、ctl控制文件的framemark模板[dmCtl.ftl]
LOAD DATA
INFILE '*' STR X '0A'
REPLACE
INTO TABLE ${schemaName}
FIELDS '${middleDiv}'
TRAILING NULLCOLS
(
${fieldDelimiter}
)
2、生成服务类
package com.yzj.plutus.executor.service.Impl;import cn.hutool.core.io.FileUtil;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Service;import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.*;/*** 根据数据库表生成ctl控制文件*/
@Slf4j
@RequiredArgsConstructor
@Service
public class GenerateCtlFileServiceImpl {private final GenerateCtlMapper generateCtlMapper;private final Config config;private final freemarker.template.Configuration configuration;public void generateCtl(String tableName) throws IOException, TemplateException {//1.获取表字段List<String> fields = generateCtlMapper.generateCtl(config.getSchemaName(), tableName);StringBuffer sb = new StringBuffer();for (int i = 0; i < fields.size(); i++) {//1.1、第一位是ID不需要if (i == 0 && "ID".equalsIgnoreCase(fields.get(i))){continue;}//1.2、最后一位不加",",但是增加"sysdate"【入库时间[个性化]】if (i == fields.size() - 1){sb.append(fields.get(i)).append(" \"SYSDATE\"");} else if (i == fields.size() - 2) {//1.3、倒数第二位加" TERMINATED BY ''"sb.append(fields.get(i)).append(" TERMINATED BY '").append(config.getEndDiv()).append("',");}else {sb.append(fields.get(i)).append(",");}}Map<String, Object> data = new HashMap<>();data.put("schemaName", tableName);data.put("fieldDelimiter", sb.toString());data.put("middleDiv", config.getMiddleDiv());//2、拼接ctl模板需要部分configuration.setDirectoryForTemplateLoading(new File(Objects.requireNonNull(this.getClass().getClassLoader().getResource("template")).getPath()));Template template = configuration.getTemplate(config.getTemplateCtlFileName());//3、生成ctl文件StringWriter sw = new StringWriter();template.process(data, sw);log.info("拼接后的数据为:【{}】", sw.toString());FileUtil.writeLines(Collections.singletonList(sw.toString()), new File(config.getCtlFilePath() + File.separatorChar + tableName + ".ctl"), "UTF-8");log.info("数据库表【{}】的ctl控制文件生成完成, 存放路径:【{}】", config.getSchemaName() + "." + tableName, config.getCtlFilePath());}@Mapperpublic interface GenerateCtlMapper{@Select("SELECT A.COLUMN_NAME FROM ALL_TAB_COLUMNS A WHERE A.OWNER=#{schemaName} AND A.TABLE_NAME=#{tableName}")List<String> generateCtl(@Param("schemaName") String schemaName, @Param("tableName") String tableName);}@Data@Configurationpublic class Config{private String schemaName;/*** 字段分隔符*/private char middleDiv = '\u0003';/*** 字段结尾符*/private char endDiv = '\u0002';/*** CTL模板文件名称*/private String templateCtlFileName;/*** ctl文件存放路径*/private String ctlFilePath;}
}
九、本地连多台数据库(RAC)
1、服务器创建文件【/etc/dm_svc.conf】,写入如下内容
TIME_ZONE=(480)
LANGUAGE=(cn)
SUPERIP=(123.123.123.1:5236,123.123.123.2:5236,123.123.123.3:5236)#EP_SGLJYTOR 0:均匀分布1:定向连接服务名的第一个IP,
#每次定向连接服务名的第一个IP。当IP1发生故障,间隔1s进行重连,尝试60次,若无
#法连接,再自动连接IP2。若IP2先起来,IP1后起来。因为AUT0_RECONNECT=(1),所以连
#接在IP2的连接不会切回IP1上。[SUPERIP]
LOGIN_MODE=(1)
SWITCH_TIMES=(60)
SWITCH_INTERVAL=(1000)
EP_SGLJYTOR=(1)
AUTO_RECONNECT=(1)
2、应用连接配置
<driver>dm.jdbc.driver.DmDriver</driver>
<url>jdbc:dm://SUPERIP</url>
3、应用连接达梦数据库【指定schema[1用户多个schema]】
# 达梦 模式名就相当于库名
# 写法一【本人使用此种】url: jdbc:dm://localhost:5236?schema=PERSON&compatibleMode=mysql&characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
#写法二【尝试过失败】#url: jdbc:dm://localhost:5236/PERSON&compatibleMode=mysql&characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai相关文章:
达梦:【1】达梦常用操作
达梦:【1】达梦常用操作 一、登录达梦二、创建表空间及用户模式三、查看表空间、用户、模式四、系统查询五、角色管理六、数据库导入导出七、达梦数据库汉字存储八、根据表生成ctl控制文件九、本地连多台数据库(RAC) 一、登录达梦 ./disql username/passwordip:por…...
数字人透明屏幕的技术原理是什么?
数字人透明屏幕的技术原理主要包括人脸识别和全息影像技术。其中,人脸识别技术是通过摄像头捕捉游客的面部表情和动作,并将其转化为数据指令,以便与数字人物进行互动。而全息影像技术则是利用透明屏幕,通过全息投影的方式将数字人…...
提升APP软件的用户体验方法
提升APP软件的用户体验是确保用户满意度和应用成功的关键。以下是一些方法,可以帮助提升APP的用户体验,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.简洁的用户界面设计: …...
JVM运行时数据区域、对象内存分配、内存溢出异常总结
深入理解java虚拟机第二章 二、运行时数据区域2.2.1 程序计数器2.2.2 Java虚拟机栈2.2.3 本地方法栈2.2.4 Java堆2.2.5 方法区2.2.6 运行时常量池2.2.7 直接内存 三、HotSpot虚拟机对象解密2.3.1 对象的创建对象如何分配内存?对象的创建如何处理并发问题?…...
【C++设计模式】单例模式singleton
C 设计模式–单例模式singleton 单例模式 单例模式是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。 优点:内存中只有一个实例,减少内存开销;避免对资源多重占用;设置全局访问点,严…...
CVPR 2023 精选论文学习笔记:Post-Training Quantization on Diffusion Models
基于MECE原则,我们给出以下四种分类依据: 1. 模型类型 生成模型用于生成与其训练数据相似的新数据。它们通常用于图像生成、文本生成和音乐生成等任务。语言模型用于理解和生成人类语言。它们通常用于机器翻译、聊天机器人和文本摘要等任务。其他模型用于各种任务,例如图像…...
Python基础语法之学习字符串快速格式化
Python基础语法之学习字符串快速格式化 一、代码二、效果 一、代码 # 通过f"{占位}"控制字符串快速格式化,不做精度控制 name "张三" age 13 money 12.5 text f"姓名是{name},年龄是{age},钱是{money}" print(text)二、效果 每一天都是一个…...
Ubuntu22.04 server版本关闭DHCP,手动设置ip
在Ubuntu 22.04 中,网络配置已迁移到 Netplan,因此可以使用 Netplan 配置文件来手动设置 IP 地址并关闭 DHCP。 以下是在 Ubuntu 22.04 上手动设置 IP 地址并禁用 DHCP 的步骤: 打开终端,使用 root 权限或 sudo 执行以下命令&…...
贪心算法(新坑)
贪心入门 概述: 贪心算法是一种在每一步选择中都采取当前最优解的策略,希望最终能够得到全局最优解的算法。简单来说,它会不断地做出局部最优的选择,相信通过这种选择最终能够达到全局最优。 举个例子来说明。假设你要从一个迷…...
C 语言头文件
C 语言头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。 在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它…...
MySQL中自增id用完怎么办?
MySQL中自增id用完怎么办? MySQL里有很多自增的id,每个自增id都是定义了初始值,然后不停地往上加步长。虽然自然数是没有上限的,但是在计算机里,只要定义了表示这个数的字节长度,那它就有上限。比如&#…...
C语言常见算法
算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使…...
0-1背包的初始化问题
题目链接 这道题的状态转移方程比较易于确定。dp[i][j]表示能放前i个物品的情况下,容量为j时能放物品的数量(这道题歌曲数量对应物品数量,容量对应时间)。 技巧(收获) 二维dp数组可以视情况优化为一维dp数组…...
API之 要求接口上传pdf 以 合同PDF的二进制数据,multpart方式上传
实现 //时间戳13位毫秒private function getMillisecond() {list($s1,$s2) explode( ,microtime());return (float)sprintf(%.0f,(floatval($s1) floatval($s2)) * 1000);}// 组装参数private function gysscPost1($url,$data){// $data[timestamp] 1694402111964;$data[tim…...
C语言-求阶乘序列前N项和
本题要求编写程序,计算序列 1!2!3!⋯ 的前N项之和。 输入格式: 输入在一行中给出一个不超过12的正整数N。 输出格式: 在一行中输出整数结果。 输入样例: 5输出样例: 153 #include "stdio.h" int main(){int n;int sum 0;scanf("%d",&a…...
3:kotlin 逻辑控制(Control flow)
像其他语言一样,kotlin也有循环和逻辑控制 条件判断(Conditional expressions) kotlin使用if和when来进行条件判断 如果纠结选择if还是when,建议使用when,因为它更能提高程序的健壮性 if 普通写法 fun main() {val…...
Linux系统之一次性计划任务at命令的基本使用
Linux系统之一次性计划任务at命令的基本使用 一、at命令介绍二、at命令的使用帮助2.1 at命令的help帮助信息2.2 at命令的语法解释 三、at命令的日常使用3.1 立即执行一次性任务3.2 指定时间执行一次性任务3.3 查询计划任务3.4 其他指定时间用法3.5 删除已经设置的计划任务3.6 显…...
记录:Unity脚本的编写8.0
目录 需求分析设计GUI包含账号和密码输入栏,包括登录和注册按键添加背景音乐编写脚本控制音乐 退出按钮编写脚本 背景图片完整代码 一个小demo,登录和注册的实现(包括GUI和数据库操控) 需求分析 自行设计GUI,要求 1.包…...
OpenCV | 模版匹配
import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline 模版匹配 模版匹配和卷积原理很像,模版在原图像上从原点开始滑动,计算模版与(图像被模版覆盖的地方ÿ…...
【算法刷题】Day7
文章目录 283. 移动零1089. 复写零 283. 移动零 原题链接 看到题目,首先看一下题干的要求,是在原数组内进行操作,平切保持非零元素的相对顺序 这个时候我们看到了示例一: [ 0, 1, 0, 3,12 ] 这个时候输出成为了 [ 1, 3, 12, 0, …...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
边缘计算网关提升水产养殖尾水处理的远程运维效率
一、项目背景 随着水产养殖行业的快速发展,养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下,而且难以实现精准监控和管理。为了提升尾水处理的效果和效率,同时降低人力成本,某大型水产养殖企业决定…...
echarts使用graphic强行给图增加一个边框(边框根据自己的图形大小设置)- 适用于无法使用dom的样式
pdf-lib https://blog.csdn.net/Shi_haoliu/article/details/148157624?spm1001.2014.3001.5501 为了完成在pdf中导出echarts图,如果边框加在dom上面,pdf-lib导出svg的时候并不会导出边框,所以只能在echarts图上面加边框 grid的边框是在图里…...
