达梦数据库DCA学习记录
目录
达梦数据库以及认证体系简单介绍
达梦数据库
达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。目前最新达梦数据库管理系统的最新版本是8.0版本,简称DM8。DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新、简洁实用的理念,推出的新一代自研数据库。DM8吸收借鉴当前先进新技术思想与主流数据库产品的优点,融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化架构充分满足不同场景需求,支持超大规模并发事务处理和事务-分析混合型业务处理,动态分配计算资源,实现更精细化的资源利用、更低成本的投入。一个数据库,满足用户多种需求,让用户能更加专注于业务发展。
历史发展:
达梦公司官网: 达梦数据库,并提供了达梦在线服务平台: 达梦在线服务平台, 供用户讨论学习。
认证体系
达梦工程师认证是达梦凭借多年信息技术人才培养经验及对行业发展的深刻理解,基于个人职业发展生命周期,以层次化的职业技术认证为指引,推出的认证体系。达梦认证注重学员实际动手能力,侧重上机考试。它提供四种不同等级的认证:
DCA:Dameng Certified administrator,即达梦认证管理员。
DCP:Dameng Certified Professional,即达梦认证专家,认证分为管理和开发两个方向。
DCM:Dameng Certified Master,即达梦认证大师。
安装DM8数据库及常见问题解决办法
用户在安装 DM 数据库之前需要检查或修改操作系统的配置,以保证 DM 数据库能够正确安装和运行。
本文安装教程参考链接: 安装教程 。
本文演示环境如下:
操作系统 | CPU | 数据库 |
---|---|---|
CentOS7 | x86_64 架构 | dm8_rh7_64_ent_8.1.1.87 |
新建 dmdba 用户
1.创建用户所在的组,命令如下:
groupadd dinstall
2.创建用户,命令如下:
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
3.修改用户密码,命令如下:
passwd dmdba
修改文件打开最大数
1.使用 vi 编辑器打开 /etc/security/limits.conf 文件,命令如下:
vi /etc/security/limits.conf
2.在最后添加四条语句,需添加的语句如下:
dmdba hard nofile 65536
dmdba soft nofile 65536
dmdba hard stack 32768
dmdba soft stack 16384
3.切换到 dmdba 用户,查看是否生效,命令如下:
ulimit -a
挂载镜像
1.切换到 root 用户,将 DM 数据库的 iso 安装包保存在任意位置,例如 /opt 目录下,执行如下命令挂载镜像:
mount -o loop /opt/dm8_setup_rh7_64_ent_8.1.1.45_20191121.iso /mnt
新建安装目录
1.新建安装目录:
mkdir /dm8
2.将新建的安装路径目录权限的用户修改为 dmdba,用户组修改为 dinstall。命令如下:
chown dmdba:dinstall -R /dm8/
3.给安装路径下的文件设置 755 权限。命令如下:
chmod -R 755 /dm8
数据库安装
DM 数据库在 Linux 环境下支持命令行安装和图形化安装,本文只详细介绍命令行安装方式。
1.切换至 dmdba 用户下,在 /mnt 目录下使用命令行安装数据库程序,依次执行以下命令安装 DM 数据库:
su - dmdba
cd /mnt/
./DMInstall.bin -i
2.按需求选择安装语言,默认为中文。本地安装选择【不输入 Key 文件】,选择【默认时区 21】。
3.选择【1-典型安装】,按已规划的安装目录 /dm8 完成数据库软件安装,不建议使用默认安装目录。
4.数据库安装大概 1~2 分钟,数据库安装完成后,显示如下界面。
5.数据库安装完成后,需要切换至 root 用户执行上图中的命令 /dm8/script/root/root_installer.sh 创建 DmAPService,否则会影响数据库备份。
常见问题解决办法
1.解压安装程序过程中报错,示例如下:
原因:因为dm8解压程序会放在/tmp下,tmp目录要至少分配1.8G,否则会报设备空间不足。
解决办法:
(1)可以调整tmp目录大小。指令参考如下:
mount -o remount,size=2G /tmp
(2)指定安装目录
mkdir -p /mount_point/dir_name
DM_INSTALL_TMPDIR=/mount_point/dir_name
export DM_INSTALL_TMPDIR
2.执行初始化图形界面失败,示例如下:
原因:非ROOT用户未设置图形化变量。
解决办法:设置非root用户启动的图形程序将图形显示在当前屏幕上。
[root@localhost opt]# xhost +
access control disabled, clients can connect from any host
[root@localhost opt]# echo $DISPLAY
:0.0
[root@localhost opt]# su - dmdba
[dmdba@localhost ~]$ export DISPLAY=:0.0
创建数据库、数据库实例及相关知识点介绍
数据库创建包含两种方式。一是使用数据库配置助手创建数据库即图形化界面创建,二是命令行方式。
本文主要介绍图形化界面方式创建。使用图形化界面之前设置图形化变量即export DISPLAY
DM 数据库配置助手位于 DM 安装目录 tool 下:
[dmdba@localhostlog]$ cd ../tool
[dmdba@localhosttool]$ ./dbca.sh
选择创建数据库实例:
端口号默认为5236,也可根据个人需要自由设置。
设置数据库的初始化参数:
注意:页大小、簇大小、字符集、大小写敏感、VARCHAR 类型以字符为单位等参数一旦指定,数据库创建完成后将无法更改。
页是达梦数据库最小存储单元,簇是达梦数据库最小分配单元。
字符集:0 代表 GB18030,1 代表UTF-8,2 代表韩文字符集 EUC-KR。
达梦中 varchar 类型字段长度受页大小的限制,默认不能超过页大小的一半,即:
页大小 | Varchar 长度 |
---|---|
4K | 2000 |
8K | 4000 |
16K | 8000 |
32K | 8188 |
VARCHAR类型以字符为单位与以字节为单位区别:设置为以字符为单位时,定义长度并非真正按照字符长度调整,而是将存储长度值按照理论字符长度进行放大。
举例:
(1)以字节为单位时
Varchar(10), 字符集是 utf-8(一个中文占用三个字节),可以保存 3 个中文字符。
Varchar(10), 字符集是 gb18030(一个中文占用两个字节), 保存 5 个中文字符。
(2)以字符为单位时
Varchar(10)不管字符集是什么都能保存10个中文。
创建结束界面:
第一行指令:代表在操作系统中注册达梦数据库服务。
第二行指令:设置开机自启动达梦数据库服务。
第三行指令:启动达梦数据库服务。
数据库连接
达梦提供了两种方法连接数据库,一是使用disql 连接数据库,类似于Oracle中的sqlplus;二是使用DM 管理工具连接数据库,类似PL/SQL。
1.disql
disql位于dm数据库Bin目录下。使用方式如下:
[dmdba@LocalHost bin]$ ./disql sysdba/Dameng123:5236
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.266(ms)
disql V8
SQL> select name from v$database;
SQL> exit
2.DM 管理工具
DM 管理工具位于dm数据库tool目录下。使用方式如下:
[dmdba@LocalHost tool]$ ./manager
数据库启动与关闭
DM 数据库的启动顺序:shutdown -> mount ->open。
Shutdown:关闭状态。
MOUNT:配置状态,此状态下不能访问数据库中数据文件的数据,可以访问 v$开头来源于
控制文件或内存中的表数据。配置状态,数据库不能对外提供正常服务,业务不能正常运行。
设置归档、迁移联机日志、设置主备集群主机、备机需要在配置状态。
OPEN 状态:打开状态,此时数据库对外提供正常服务。可以读写数据文件中的数据。
达梦数据库启动方式分为ROOT用户启动与非ROOT用户启动两种。分别介绍如下:
1.Root 用户启动:
root@Localhost~]# systemctl status DmServiceDMSERVER.service
root@Localhost~]# systemctl stop mServiceDMSERVER.service
root@Localhost~]#systemctl start DmServiceDMSERVER.service
2.非ROOT用户启动
DmServiceDMSERVER 在DM数据库安装目录Bin下。
[dmdba@Localhost bin]$ ./DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]
[dmdba@Localhost bin]$ ./DmServiceDMSERVER start mount
Starting DmServiceDMSERVER: [ OK ]
[dmdba@Localhost bin]$ ./DmServiceDMSERVER status
DmServiceDMSERVER (pid 16800) is running.
[dmdba@Localhost bin]$ ./DmServiceDMSERVER start
DM8线程
DM 是单进程多线程架构,Oracle 是多进程架构。
查看服务进程PID:
[dmdba@Localhost DAMENG]$ DmServiceDMSERVER status
DmServiceDMSERVER (pid 17578) is running.
查看数据库服务进程下的线程:
[dmdba@Localhost DAMENG]$ ps -T -p status 17578
线程分类:
1.监听线程
用于监听客户端请求, 当有新的连接时, 分配一个线程接收客户端的数据。
2.工作线程
负责将用户输入的SQL, 进行执行并将结果返回客户端。
3.I/O线程
负责从磁盘读写数据到内存, 脏页的刷写 IO_THR_GROUPS用于配置IO线程的个数 DM使用的是aio。
4.调度线程
负责处理系统中的定时任务, 调度线程每秒钟轮询一次
主要负责的任务有以下任务
(1)、检查系统级的时间触发器,如果满足触发条件则生成任务加到工作线程的任务队列由工作线程执行;
(2)、清理SQL缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项;
(3)、检查数据重演捕获持续时间是否到期,到期则自动停止捕获;
(4)、执行动态缓冲区检查。根据需要动态扩展或动态收缩系统缓冲池;
(5)、自动执行检查点。为了保证日志的及时刷盘,减少系统故障时恢复时间,根据INI参数设
(6)、会话超时检测。当客户连接设置了连接超时时,定期检测是否超时,如果超时则自动断开连接;
(7)、必要时执行数据更新页刷盘;
(8)、唤醒等待的工作线程
5.日志FLUSH线程
将日志缓冲区的数据, 写入redo日志。如果系统配置了实时归档,在FLUSH线程日志刷盘前,会直接将日志通过网络发送到实时备库。如果配置了本地归档,则生成归档任务,通过日志归档线程完成。
DM8逻辑存储结构
DM 由数据库和实例构成,数据库指磁盘上的物理文件,实例指数据库运行中的线程、进程、以及大型的共享内存。
逻辑存储结构如下图所示:
表空间
表空间是一个逻辑概念, 由多个段组成, 一个表空间可以包含多个数据文件, 默认数据库会自动出创建5个表空间
SYSTEM : 存储数据库的元数据信息
ROLL : 回滚段, 用于提供MVCC机制
MAIN : 如果创建的用户没有指定表空间, 则默认创建的数据库对象就存放在该表空间中, 相当于ORACLE的user表空间
TEMP : 存放临时数据, 例如SQL语句的执行结果
HMAIN : HTS表空间
段
段时逻辑概念, 由多个区组成
段的类型
数据段: 存放数据和索引的段
临时段: 临时结果集等, 临时段的分配和释放完全由系统自动控制,用户不能手工进行干预
回滚段: 用于存储多版本并发
簇
簇是一个逻辑概念, 由多个页组成, 主要用于当进行表空间扩展时, 一次性扩展多少空间
在进行数据库初始化时可以指定
页
数据库的最小存储单元, 也是最小的I/O操作单元
DM数据库页大小分为 4k 8k 16k 32k , 默认8k, 在数据库初始化时可以指定页大小, 一旦指定后就无法修改
DM8物理存储结构
DM8安装后,各种文件存放在安装目录/data/数据库名下。
[dmdba@LocalHost data]$ cd DAMENG/
[dmdba@LocalHost DAMENG]$ ll
共有四种文件:dm.ini、 dm.ctl、*.DBF、DAMENG*.log。
*.DBF:数据文件
用于存储真是数据的文件
dm.ctl:控制文件
dm.ctl 该文件是二进制文件, 只能通过命令行工具dmctlcvt工具打开
控制文件中包含了 OGUID、数据库状态、数据库名称、最后启动时间等、表空间信息、数据文件信息、联机日志文件信息等
dm.ini:配置文件
dm.ini 每个数据库实例在数据目录下都会生成一个 dm.ini 配置文件
DAMENG*.log:日志文件
在数据库运行过程中, 产生的一切写操作的日志记录
DM8内存结构
内存结构包含四个缓冲区和共享内存池、运行时内存池。
数据缓冲区
数据缓冲区是从磁盘读出的数据页在内存中的镜像,由 INI 配置中的 BUFFER、FAST_POOL_PAGES、RECYCLE、KEEP 等确定大小。不同类型的缓冲区主要表现为淘汰机制
NORMAL、FAST、RECYCLE、KEEP。其中,NORMAL 和 KEEP 在创建表空间时可以手工指定
其缓冲区类型,NORMAL 是普通数据页,采用最近最少使用 LRU(Latest recently Used)
算法淘汰;keep 缓冲区常驻于内存,很少淘汰。FAST、RECYCLE 是系统自动使用。
日志缓冲区
日志缓冲区用于缓存 REDO 日志。数据库所有 DML 操作都会产生 redo 和 undo。Redo 先
写入日志缓冲区,然后再写入日志文件。
SQL 缓冲区
SQL 缓冲区中缓存 sql 语句、sql 执行计划、sql 结果集、package 等。由参数
CACHE_POOL_SIZE 指定大小。作用是提高软解析,减少硬解析。
字典缓冲区
缓存数据字典信息,包含表、字段定义、视图、对象定义、权限等信息。大小由参数
DICT_BUF_SIZE确定。