
一、背景在信创“自主可控”的浪潮下,政企行业首当其冲,基于国产化信创的要求,本部门某业务后端应用也需要针对分析开源组件的风险和开源协议的商业应用限制;能用国产化替代的评估后尽可替代割接,本期针对传统数据库Mysql向达梦数据库迁移的记录。相关资源:达梦官方文档、达梦在线服务平台、墨天轮排行榜、IDC数据报告、数据报告、洞见研报、达梦线上实验室二、数据库现状无论什么样的数据库都离不开数据库本身定义的作用,即它是一套承载相互有关联关系的若干数据的集合,负责组织、存储和管理数据的仓库,一般由一个数据库管理系统(DBMS)来控制。数据库按照不同维度,分类方法多种多样,按数据结构可分为关系型数据库和非关系型数据库(NoSQL数据库、NewSQL数据库等);按设计架构可分为单机数据库、集中式数据库和分布式数据库。按部署方式可分为本地部署和云部署,按应用场景/功能可分为事务性数据库(OLTP)、分析型数据库(OLAP)以及混合型关系数据库(HTAP),还可按商业模式分为开源数据库和商业数据库(闭源)。国内数据库的发展,传统厂商多采用集中式设计架构,以达梦、人大金仓、南大通用、万里开源为代表,而新兴厂商则利用分布式进行换道超车,以PingCAP、巨杉数据库、星环等初创企业为代表,随着数据库云化部署大势所趋,云厂商则兼顾了前2者,但也主要是以分布式为主,分布式数据库是通过计算机网络将物理分散的多个数据库单元连接组成的逻辑上统一的数据库;目前分布式数据库的技术路线分为三类:分库分表+中间件方案、共享存储分布式数据库、去中心化的分布式数据库。国内数据库市场,关系型数据库市场占比90%左右,这些年非关系型正在逐年上升。国产供应商主要代表有华为、阿里、达梦、人大金仓等,这4家合计占据约30%份额,根据IDC数据,截至2022年末,在国内关系型数据库中,公有云数据库的市场中以阿里云、华为、腾讯为代表的国产数据库厂商份额已远超海外数据库厂商。2024年2月国内数据库排行榜:三、达梦数据库3.1、产品介绍当前官网最新版本为DM8,相较于目前主流产品架构:不同特性依靠不同内核去实现,DM8独特采用了双存储引擎架构,行存储引擎和列存储引擎可相互配合、协同工作。同时实现了计算层和存储层的分离,同一内核既支持共享存储式集群,也支持分布式事务集群。达梦数据库采用分布式架构,可由多个节点组成,每个节点可以处理多个用户的请求,从而并发性能较好,另达梦数据库支持使用 IPv6 的地址访问,需要用 [] 指明是 ipv6 地址。达梦数据库目前已广泛应用于各种领域,包括金融、电信、政府、教育、医疗等。产品特性:国产自研:官方声明未采用任何开源内核,完全掌握核心技术。因此知识产权风险可控。安全可靠,兼容性好:通过国家安全四级 EAL4+ 认证,支持国密算法以及第三方加密设备,号称是国内最高安全等级的数据库。它可适配各种软硬件体系,支持主流 SQL 标准和通用编程语言、接口、开发框架。在高并发、大数据量的应用中优势明显;高性能:采用基于代价计算的优化器和独立的虚拟机执行器,通过批量数据向量化执行和 MVCC 多版本并发控制等技术提升性能,实现双路 CPU 单节点 TPMC (吞吐量:transactions per minute)达到百万级。支持混合型业务处理:行列融合存储技术,支持混合负载,一套系统上同时支撑 OLAP 和 OLTP 业务场景,在此基础上,具备 HTAP 混合型业务处理能力。易用:可按照用户业务需求配置为不同集群模式,支持集中式、分布式架构;官方提供迁移评估和自动迁移工具,使数据库迁移更加便捷;支持柔性替换,降低系统迁移风险。更符合中国技术人员使用习惯,配置一站式“驾驶舱”工具集,支持数据库统一运维管理、 SQL 调试分析和监控告警。降低了使用、迁移和运维成本。3.2、产品架构达梦数据库采用多层架构,包括:物理层、网络层、应用层和数据层。逻辑架构分为:统一接口层、应用集成数据层,物理层。其中,在应用层它采用了多级缓存机制,包括内存缓存、文件缓存和磁盘缓存。内存缓存可以提高系统的响应速度,文件缓存可以提高数据的读取速度,磁盘缓存可以提高数据的存储速度。另外它支持多线程和多节点部署,提高并发和可靠性。DM 数据库为数据库中的所有对象分配逻辑空间,并存放在数据文件中。所有的数据文件组合在一起被划分到一个或者多个表空间中,所有的数据库内部对象都存放在这些表空间中,表空间又被进一步划分为段、簇(逻辑存储单元)和页(也称块,物理存储单元)。架构说明:DM 数据库实例:从DM7 以及之后版本的数据库中,“数据库”和“实例”这两个概念之间出现了很大的差别,实例类似oracle定义,它是由一组正在运行的 DM 后台进程/线程以及一个大型的共享内存组成。实例是操作DM 数据库的一种手段/工具,是用来访问数据库的内存结构以及后台进程的集合。一个实例只能与一个数据库进行关联(装载、打开或者挂起数据库)。在大多数情况下,一个数据库也只有一个实例对其进行操作。但是在 DM 共享存储集群(DMDSC)中,多个实例可以同时装载并打开一个数据库(位于一组由多台服务器共享的物理磁盘上)。\DM 数据库:也类同Oracle,它指磁盘上存放在 DM 数据库中的数据的集合,一般包括:数据文件、日志文件、控制文件以及临时数据文件等。DM 数据库存储在服务器的磁盘上,而 DM 实例则存储于服务器的内存中。\DM逻辑存储结构内部如下:其中,页(数据页,也称数据块)是数据库中最小的单元(对应物理存储空间上特定数量的存储字节),它是将簇进一步划分得到的逻辑页(块),DM 数据库中默认每个页默认8KB(可以自定义大小,比如:4KB、8KB、16KB 或者 32KB;另外区别于文件系统的页,那个是为了跟内存交互使用,文件系统的内存页通常是 4K),页大小一旦创建好数据库后,则在该库的整个生命周期内,页大小都不能够再改变。一个簇由多个连续的页组成。(区别OS里的簇/块是操作系统中最小的逻辑存储单位,文件系统的默认分配单元大小(簇)也是4096字节);对于上层的逻辑簇,它可以来自不同的数据文件,它由数据文件划分,每个簇的大小是128K(16个连续的页,由用户在创建数据库时指定);1个或多个簇又组成了逻辑的段(aegment),因此段是能跨多个数据文件的;最上层就是标间,它不直接管理段,而是与数据文件建立关系,它由1个或多个数据文件组成,表空间里存放用户、表、存储过程等,作为数据库对象的存储单元使用。综上,从下到上为:数据表里的记录(行)—页(Page)—簇/区( Extent)—段----数据文件----表空间-----数据库。注意:记录是不能跨页存储的,记录的长度受到数据页大小的限制,DM 规定每条记录的总长度不能超过页面大小的一半,因一部分存储页的元数据;当创建一个表/索引的时候,DM为表/索引的数据段至少分配一个簇,也就对应分配了一组空闲页等待数据写入;当空间不足时,DM数据库会自动分配新的簇。默认DM数据库在创建表/索引时,初始分配1个簇,当初始分配的空间用完时,DM数据库会自动扩展。分配簇时,表空间会按文件从小到大的顺序在各个数据文件中查找可用簇,找到后进行分配。当用户删除了表中所有记录时,DM 数据库仍然会为该表保留 1-2 个簇供后续使用。若用户使用 DROP 语句来删除表/索引对象,则此表/索引对应的段以及段中包含的簇全部收回,但其占用的表空间不会自动删除,这些释放的簇会继续供存储于此表空间的其他模式对象使用。对于临时表空间,DM 数据库会自动释放在执行 SQL 过程中产生的临时段,并将属于此临时段的簇空间还给临时表空间。对于回滚表空间,DM 数据库将定期检查回滚段,并确定是否需要从回滚段中释放一个或多个簇。对于最上层的数据段,在同一个表空间中,因段中的簇可以来自不同文件且簇时按需分配,故数据段中的不同簇在磁盘上一般是不连续的。\(物理)存储结构:包括配置文件(dm.ini、dmmal.ini、dmmarch.ini、dm_svc.conf、sqllog.ini、 dmrep.ini ),控制文件(记录文件分布,dm.ctl )、数据文件(保存用户实 际数据,*.dbf)、redo、归档和跟踪日志文件、备份文件;其中,每个DM数据库实例必须至少有 2 个重做日志文件,默认两个日志文件为DAMENG01.log、DAMENG02.log,这两个文件循环使用。非归档模式下,数据库会只将重做日志写入联机日志文件中进行存储;归档模式下, 数据库会同时将重做日志写入联机日志文件和归档日志文件中分别进行存储\DM内存结构:DM 数据库管理系统的内存结构主要包括内存池、缓冲区、排序区、哈希区等;其中,内存池包括共享内存池和其他一些运行时内存池。缓冲区包含数据缓冲区、日志缓冲区、字典缓冲区、SQL 缓冲区;排序缓冲区提供数据排序所需要的内存空间。当用户执行 SQL 语句时,常常需要进行排序,所使用的内存就是排序缓冲区提供的。可用参数 SORT_BUF_SIZE 在 DM 配置文件 dm.ini 中指定排序缓冲区大小,默认值 20M;DM8 提供了为哈希连接而设定的缓冲区,不过该缓冲区是个虚拟缓冲区。当在进行哈希连接时,对 排序的数据量进行了计算。如果计算出的数据量大小超过了哈希缓冲区的大小,则使用 DM8 创新的外存哈希方式;如果没有超过哈希缓冲区的大小,实际上还是使用内存池来进行哈希 操作。可在 dm.ini 中使用参数 HJ_BUF_SIZE 来进行控制,该值的大小可能会 限制哈希连接的效率,一般保持默认即可;HAGR_HASH_SIZE表示处理聚集函数时创建哈希表的个数,默认值100000。\表空间:DM 数据库中,表空间由一个或者多个数据文件组成,所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中;每一个用户都有一个默认的表空间。DM数据库表空间分为:普通表空间及混合表空间,普通表空间不能存储 HUGE 表,而混合表空间可以同时存储普通(非 HUGE)表和 HUGE 表,其中 HUGE 数据文件存储在混合表空间定义中指定的 HUGE 数据文件路径下。可以通过为普通表空间增加指定 HUGE 数据文件路径将普通表空间升级为混合表空间。在创建 DM 数据库时,会自动创建 4 个表空间:SYSTEM 表空间、ROLL 表空间、MAIN 表空间和 TEMP 表空间,其中ROLL表空间类似Oracle的UNDO表空间,MAIN表空间类似Oracle的User表空间。其中,SYSTEM 表空间存放了有关 DM 数据库的字典信息;ROLL 表空间用来存放事务运行过程中执行 DML 操作之前的值,从而为访问该表的其他用户提供表数据的读一致性视图,由 DM 数据库自动维护,用户无需干预。MAIN 表空间为混合表空间,它会在初始化库的时候,就会自动创建一个大小为 128M 的数据文件 MAIN.DBF,以及一个 HMAIN 目录作为 HUGE 数据文件路径;另创建用户时,如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间;。默认的用户表空间是 SYSTEM,SYSDBA 的默认表空间为 MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间。\Schema是一个数据库用户的命名空间,通常包括一个用户和属于该用户的数据库对象、表、视图、索引、同义词、序列、过程、函数、包、触发器等。Schema是数据库对象的逻辑容器,它包含了所有属于特定用户的数据库对象。Schema和用户是一一对应的,一个用户对应一个Schema,当我们创建一个新的数据库用户时,Oracle会自动为该用户创建一个同名的Schema。用户可以在其Schema中创建、更改和删除数据库对象;Schema的主要作用是用于组织和管理数据库对象,通过Schema可以更加有效地对数据库对象进行分组管理,提高数据库的性能和运行效率。Schema中的对象都属于同一个用户,可以避免在不同用户之间进行频繁的上下文切换,从而提高数据库的性能和运行效率。DM中,每个用户有一个默认的同名的模式,访问自己模式下的表、视图等,不需要加模式名,访问其他模式下的对象需要拥有访问权限,访问时还需加上模式名。DM 支持的共享存储有两种:裸设备和DMASM;其中,后者在前者的基础上,部署并使用了 DMASM 文件系统。 DMDSC 是一个共享存储的数据库集群系统。DMDSC (达梦数据共享集群)集群基于单节点数据库管理系统之上,改造了 Buffer 缓冲区、事务系统、封锁系统和日志系统等,来适应共享存储集群节点间的全局并发访问控制要求。同时,引入缓存交换技术,提升数据在节点间的传递效率。 DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件。各个节点有自己独立的联机日志和归档日志。这些文件就保存在共享存储上。DMDSC 集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件 DMCSS 组成。其中,DM 数据守护(Data Watch)是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案。通过部署 DM 数据守护,可以在硬件故障(如磁盘损坏)、自然灾害(地震、火灾)等极端情况下,避免数据损坏、丢失,保障数据安全,并且可以快速恢复数据库服务,满足用户不间断提供数据库服务的要求。数据守护基本不受数据规模的影响,只需数秒时间就可以将备库切换为主库对外提供数据库服务。DM 数据守护提供多种解决方案,可以配置成:实时主备、MPP 主备、DMDSC 主备或读写分离集群,也可配置为全局守护(提供实时主备、MPP 主备、读写分离集群功能)或者本地守护,满足用户关于系统可用性、数据安全性、性能等方面的综合需求实时主备(DM Data Watch)由一个主库以及一个或者多个配置了实时(Realtime)归档的备库组成,其主要目的是保障数据库可用性,提高数据安全性。实时主备系统中,主库提供完整的数据库功能,备库提供只读服务。主库修改数据产生的 Redo 日志,通过实时归档机制,在写入联机 Redo 日志文件之前发送到备库,实时备库通过重演 Redo 日志与主库保持数据同步。当主库出现故障时,备库在将所有 Redo 日志重演结束后,就可以切换为主库对外提供数据库服务。将主库(生产库)产生的 Redo 日志传输到备库,备库接收并重新应用 Redo 日志,从而实现备库与主库的数据同步。DM 数据守护的核心思想是监控数据库状态,获取主、备库数据同步情况。根据数据同步情况,备库又可以分为可切换备库和不可切换备库。可切换备库是指:主备库之间数据完全同步,主库发生故障、备库切换为主库后,不会造成任何数据丢失的备库。实时主备主要由主库、备库、Redo 日志(记录物理数据页内容变动情况, Insert、Delete、Update 等 DML 操作以及 Create TABLE 等 DDL 操作最终都会体现为对某一个或者多个物理数据页的修改)、Redo 日志传输(以日志包 RLOG_PKG 为单位,主库通过 MAL 系统发送 Redo 日志到备库)、Redo 日志重演(严格按照 Redo 日志产生的先后顺序,解析 Redo 日志、修改相应的物理数据页,并且重演过程中备库会生成自身的 Redo 日志写入联机日志文件)、守护进程(dmwatcher,必须和被守护的数据库实例部署在同一台机器上)、监视器(dmmonitor,监控守护系统内守护进程、数据库实例信息,执行用户输入命令、监控实例故障、实现自动切换)组成。MAL 系统:是基于 TCP 协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。DM 通过 MAL 系统实现 Redo 日志传输,以及其他一些实例间的消息通讯。读写分离集群由一个主库以及一个或者多个配置了即时(Timely)归档或实时(Realtime)归档的备库组成,其主要目标是在保障数据库可用性基础上,实现读、写操作的自动分离,进一步提升数据库的业务支撑能力。读写分离集群通过配置事务一致模式保证主、备库数据一致性,并配合达梦数据库管理系统的各种接口(JDBC、DPI 等),将只读操作自动分流到备库,有效降低主库的负载,提升系统吞吐量。备库支持临时表修改主要基于两个因素:1.临时表数据的修改不会产生 Redo 日志,主库对临时表的修改无法同步到备库;2.可以提供更大灵活性,适应更多应用场景。DM 数据库产品中使用了一些第三方代码,这些代码的 LICENSE 放在 DM 数据库安装目录的samples/third_party_license 子目录中。DM 服务器的加密使用了OPENSSL,该软件的许可协议基于 Apache License Version 2.0;DM 服务器的 XML 支持相关模块使用了xqilla V2.3.3和xerces V3.1.4,DM 对这两个软件的代码进行了部分修改,这两个组件的许可协议基于 Apache License Version 2.0;DM 服务器提供的 DMGEO 系统包使用了GEOS,DM 对该软件的代码进行了部分修改,该软件的许可协议基于 LGPL;DM 的 PHP 接 口 使 用 了PHP/PDO,DM 对该软件的代码也进行了部分修改;DM 服务器的 HUGE 表压缩使用了ZLIB,DM 服务器的一些压缩算法使用了SNAPPY;DM 服务器的正则表达式解析使用了 REGEX;DM的单节点和主库提供读未提交(Read Uncommitted)、读提交(Read Committed)和串行化(Seriablizable)三种事务隔离级,可重复读(Repeatable Read)升级为更严格的串行化事务隔离级。备库在配置为串行重演时支持读提交事务隔离级,开启并行重演时,则仅支持读未提交事务隔离级。LSN:(Log Sequence Number)是由系统自动维护的 Bigint 类型数值,具有自动递增、全局唯一特性,每一个 LSN 值代表着 DM 系统内部产生的一个物理事务。物理事务(Physical Transaction,简称 ptx)是数据库内部一系列修改物理数据页操作的集合,与数据库管理系统中事务(Transaction)概念相对应,具有原子性、有序性、无法撤销等特性。DM 数据库中与 LSN 相关的信息,可以通过查询 vrlog和VRAPPLY_PARALLEL_INFO 表来获取。DM 数据库默认包含两个联机 Redo 日志文件(如 DAMENG01.log、DAMENG02.log),系统内部分别称为 0 号文件、1 号文件。RLOG_PKG 顺序写入联机 Redo 日志文件中,当一个日志文件写满后,自动切换到另一个文件。其中 0 号文件是 Redo 日志主文件,在日志主文件头中保存了诸如 CKPT_LSN,CKPT_FILE,CKPT_OFFSET,FILE_LSN 等信息。系统故障重启时,从[CKPT_FILE, CKPT_OFFSET]位置开始读取 Redo 日志,解析 RREC 记录,并重新修改对应数据页内容,确保将数据恢复到系统故障前状态。随着检查点(Checkpoint)的推进,对应产生 Redo 日志的数据页从数据缓冲区(Data Buffer)写入磁盘后,联机 Redo 日志文件可以覆盖重用、循环使用,确保 Redo 日志文件不会随着日志量的增加而增长。注:任何数据页从数据缓冲区写入磁盘之前,必须确保修改数据页产生的Redo日志已经写入到联机Redo日志文件中。3.3、部署配置1)安装前准备DM 完全安装需要至少 1 GB 以上的存储空间;另,DM 安装程序在安装时将产生临时文件,临时文件需要 1GB 的存储空间,临时文件目录默认为/tmp,即系统盘需要大于1G的可用空间,如果不够的话可用环境变量指定安装的临时目录到别处;支持x86_64 架构;安装前必须创建 dmdba 用户,禁止使用 root 用户安装数据库,换句话说,为了减少对操作系统的影响,用户也不应该以 root 系统用户来安装和运行 DM。安装的过程中,会产生两种日志:一是install_ant.log,记录安装过程中的文件拷贝信息。日志格式为:逐条记录从安装软件中拷贝到安装目录下的文件。\二是install.log,记录安装过程中的安装模块、注册服务、卸载等信息。日志格式为:时间 + 日志类型(INFO/WARN/ERROR/FATAL)+ 日志内容getconf LONG_BIT#获取系统位数groupadddinstall-g12349#创建安装用户组useradd-Gdinstall-m-d/home/dmdba-s/usr/bin/bash-u12349dmdbaecho"Dm12345"|passwd--stdindmdba Changing passwordforuser dmdba. passwd: all authentication tokens updated successfully.#检查系统限制ulimit-a#调整如下4个参数:#data seg size (kbytes, -d):建议用户设置为 1048576(即 1GB)以上或 unlimited,过小将导致数据库启动失败ulimit-d#file size(blocks, -f):建议用户设置为 unlimited(无限制),过小将导致数据库安装或初始化失败ulimit-f#open files(-n):建议用户设置为 65536 以上或 unlimitedulimit-n#virtual memory (kbytes, -v):建议用户设置为 1048576(即 1GB)以上或 unlimited(无限制),此参数过小将导致数据库启动失败ulimit-v#修改系统连接数限制vi/etc/security/limits.conf#如下,其中后4条新增dmdba softnice0dmdba hardnice0dmdba soft as unlimited dmdba hard as unlimited dmdba soft fsize unlimited dmdba hard fsize unlimited dmdba soft nproc65536dmdba hard nproc65536dmdba soft nofile65536dmdba hard nofile65536dmdba soft core unlimited dmdba hard core unlimited dmdba soft data unlimited dmdba hard data unlimited#vim /etc/security/limits.d/90-nproc.conf* soft nproc1024root soft nproc unlimited * nproc16384#验证su- dmdba $ulimit-areal-time non-blockingtime(microseconds, -R)unlimited corefilesize(blocks, -c)unlimited data seg size(kbytes, -d)unlimited scheduling priority(-e)20filesize(blocks, -f)unlimited pending signals(-i)128296max locked memory(kbytes, -l)65536max memory size(kbytes, -m)unlimitedopenfiles(-n)65536pipe size(512bytes, -p)8POSIX message queues(bytes, -q)819200real-time priority(-r)0stack size(kbytes, -s)8192cputime(seconds, -t)unlimited max user processes(-u)65536virtual memory(kbytes, -v)unlimitedfilelocks(-x)unlimited#或者修改系统参数vi/etc/sysctl.conf#添加如下内容:fs.file-max=6815744fs.aio-max-nr=1048576kernel.shmall=2097152kernel.shmmax=2147483648kernel.shmmni=4096kernel.sem=25032000100128net.ipv4.ip_local_port_range=900065500net.core.rmem_default=4194304net.core.rmem_max=4194304net.core.wmem_default=262144net.core.wmem_max=1048576vm.swappiness=0vm.dirty_background_ratio=3vm.dirty_ratio=80vm.dirty_expire_centisecs=500vm.dirty_writeback_centisecs=100kernel.core_pattern=/coredump/%e.core.%p#生效验证sysctl-p#安装临时目录DM_INSTALL_TMPDIR=/mount_point/tmpexportDM_INSTALL_TMPDIR#设置java环境DM_JAVA_HOME=/mount_point/jdk_home_dir#指定特定的 JAVA 的目录,设置后安装程序将使用此 JAVA 环境进行安装,且安装完成之后,客户端程序也将使用此 JAVA 环境exportDM_JAVA_HOME#创建实例保存目录、归档保存目录、备份保存目录,默认配置 DM 数据库安装在 /home/dmdba 文件夹下##实例/数据库的保存目录mkdir/opt/dmdata/data##归档保存目录mkdir-p/opt/dmdata/arch##备份保存目录mkdir-p/opt/dmdata/dmbak#授权chown-Rdmdba:dinstall /opt/dmdata/datachown-Rdmdba:dinstall /opt/dmdata/archchown-Rdmdba:dinstall /opt/dmdata/dmbakchmod-R755/opt/dmdata/datachmod-R755/opt/dmdata/archchmod-R755/opt/dmdata/dmbak2)数据库安装:docker方式,更多参看容器部署。#软件下载,推荐下载docker版本https://eco.dameng.com/download/wgethttps://download.dameng.com/eco/dm8/dm8_20230808_rev197096_x86_rh6_64_single.tar#或,现场docker版本 18.09.0dockerpull registry.cn-shanghai.aliyuncs.com/techerwang/dbhub:jem_dm8#进入/opt目录,导入docker镜像包,从包名看有点老dockerload-idm8_20230808_rev197096_x86_rh6_64_single.tar#验证导入的镜像dockerimages#启动容器,将本地/opt/dmdbms/data下的,--privileged 指定容器是否在特权模式下运行。#SYSDBA_PWD 预设的时候,密码长度为 9~48 个字符,docker 版本使用暂==不支持特殊字符==为密码;-e 设置的时候 初始化参数必须使用==大写==,不可使用小写dockerrun-d-p30236:5236--restart=always--namedm8_db1--privileged=true-ePAGE_SIZE=16-eLD_LIBRARY_PATH=/opt/dmdbms/bin-eEXTENT_SIZE=32-eBLANK_PAD_MODE=1-eLOG_SIZE=1024-eUNICODE_FLAG=1-eLENGTH_IN_CHAR=1-eINSTANCE_NAME=dm8_db1-v/data/dm8_db1:/opt/dmdbms/data dm8_single:dm8_20230808_rev197096_x86_rh6_64#验证dockerpsdockerlogs-fdm8_db1dockerinspect dm8_db1#找到 Env 项可以看到在数据库初始化时设置的参数值,包括页大小(PAGE_SIZE)、簇大小(EXTENT_SIZE)、字符集(UNICODE_FLAG)、默认密码(SYSDBA_PWD)等#管理dockerstop dm8_db1dockerstart dm8_db1dockerrestart dm8_db1#登陆,如果使用 docker 容器里面的 disql,进入容器后,先执行 source /etc/profile 防止中文乱码;.新版本 Docker 镜像中数据库默认用户名/密码为 SYSDBA/SYSDBA001disql SYSDBA/SYSDBA001 SQLdescv$database;SQLselectNAME,CREATE_TIME,ARCH_MODE,TOTAL_SIZE,OPEN_COUNT,STARTUP_COUNT fromv$database;SQLselect* fromv$tablespace;#创建表空间,初始大小为 128MSQLcreate tablespace"spms"datafile'/data/dmdata/DAMENG/TEST.DBF'size128;#修改表空间,打开自动扩展,每次制动扩展 100M ,扩展上限 10240M,使用 RC4 加密算法,自动扩展默认为打开状态SQLalter tablespace"SPMS"datafile'/data/dmdata/DAMENG/TEST.DBF'autoextend on next100maxsize10240CACHE=NORMAL encrypt with RC4;;#创建用户SQLcreate user"dmdba"identified by"DaM7777@123"hashwith SHA512 salt encrypt by"123456"default tablespace"TEST"default index tablespace"TEST";#授权SQLgrant"PUBLIC","SOI","DBA","RESOURCE"to to"dmdba";## 方式二:直接以供DM8的光盘镜像包,内有二进制安装文件 DMInstall.binchmod755./DMInstall.bin#交互式安装./DMInstall.bin-i#如下Installer Language:[1]: 简体中文[2]: English Pleaseselectthe installer's language[2]: Extractinstallfiles..........#会解压到/tmp/DMInstall目录,之后,会验证 Key 文件,需要先上传到指定目录Hardware architecture verification passed! Welcome to DM DBMS Installer Whether to input the path of Key File?(Y/y:Yes N/n:No)[Y/y]:y Please Input the Path of the Key File[dm.key]:/usr/local/DM8/dm_pub.key /tmp/DMInstall/install/install_en.sh: line235: warning:commandsubstitution: ignored null byteininput Expiration Date:2024-09-25 Server Series: Enterprise Version Server Type: Trial Version Customer Name: 达梦公司产品试用 Authorized User Number: unlimited Concurrency User Number: unlimited Whether to Set The TimeZone?(Y/y:Yes N/n:No)[Y/y]:y Please Select the TimeZone[21]:21 Installation Type:1Typical2Server3Client4Custom Please Input the number of the Installation Type[1Typical]:41Server component2Client component2.1Manager2.2Monitor2.3DTS2.4Console2.5Analyzer2.6DISQL3DM Drivers4Manual component5DBMS Service5.1Realtime Audit Service5.2Job Service5.3Instance Monitor Service5.4Assistant Plug-In Service Please Input the number of the Installation Type[12345]:12345Require Space: 2259M#默认值为$HOME/dmdbms(如果安装用户为 root,则默认安装目录为/opt/dmdbmsPlease Input theinstallpath