1、DM8 企业版安装
2、数据库和实例管理
3、DM8 客户端工具
4、DMSQL
5、DM体系结构
6、表空间管理
7、用户管理
8、模式和对象管理
9、数据字典和动态性能视图
10、数据库备份恢复
11、作业管理
12、DM8 开发
标准版: 为政府部门、中小型企业及互联网/内部网应用提供的数据管理和分析平台
企业版: 企业版是伸缩性良好、功能齐全的数据库, 为高端应用提供了数据复制、数据守护等高可靠性、高性能的数据管理能力, 完全能够支撑各类企业应用
安全版: 拥有企业版的所有功能, 并重点加强了其安全特性, 引入强制访问控制功能, 安全级别达到B1级, 适合于对安全性要求更高的政府或企业敏感部门选用
具体的版本不同请参数达梦手册 https://eco.dameng.com/docs/zh-cn/start/dm-version-differences.html
[root@itsapp1 ~]# uname -a
Linux itsapp1 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@itsapp1 ~]#
[root@itsapp1 ~]# lscpu
[root@itsapp1 ~]# df -HPT /tmp/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 42G 4.7G 37G 12% /
[root@itsapp1 ~]#
[root@itsapp1 ~]# rpm -qa |grep glibc
compat-glibc-2.12-4.el7.centos.x86_64
glibc-common-2.17-317.el7.x86_64
compat-glibc-headers-2.12-4.el7.centos.x86_64
glibc-headers-2.17-317.el7.x86_64
glibc-devel-2.17-317.el7.x86_64
glibc-2.17-317.el7.x86_64
[root@itsapp1 ~]# ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
由 Roland McGrath 和 Ulrich Drepper 编写。
[root@itsapp1 ~]#
[root@itsapp1 ~]# mkdir /dm8
[root@itsapp1 ~]# groupadd -g 5236 dinstall
[root@itsapp1 ~]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash -u 5236 dmdba
[root@itsapp1 ~]# chown -R dmdba:dinstall /dm8
[dmdba@itsapp1 ~]$ ulimit -a
core file size (blocks, -c) 0 -- 产生core文件大小 0: 表示不生成core文件 建议该值设置为 unlimited
data seg size (kbytes, -d) unlimited -- 段大小, 建议该值设置为 unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7798
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited -- 使用内存的限制
open files (-n) 655350 -- 打开文件数, 建议设置为 65535
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192 -- 栈大小, 建议设置为 32768
cpu time (seconds, -t) unlimited
max user processes (-u) 655350 -- 用户最大进程数, 建议设置为 65535
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[dmdba@itsapp1 ~]$
[root@itsapp1 ~]# mkdir /mnt/dm8
[root@itsapp1 ~]# mount dm8_20220304_x86_rh6_64_ent_8.1.2.114.iso /mnt/dm8/
[root@itsapp1 ~]# xhost +
[root@itsapp1 ~]# su - dmdba
[dmdba@itsapp1 ~]$ export DISPLAY='100.63.1.60:0'
[dmdba@itsapp1 ~]$ cd /mnt/dm8/
[dmdba@itsapp1 dm8]$ ./DMInstall.bin
上面的方式就是图形化安装
[dmdba@itsapp2 dm8]$ ./DMInstall.bin -i 请选择安装语言(C/c:中文 E/e:英文) [C/c]: -- 选择安装语言, 默认中文 解压安装程序.......... 欢迎使用达梦数据库安装程序 是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n -- 如果有key, 输入key路径 是否设置时区? (Y/y:是 N/n:否) [Y/y]: -- 设置时区 设置时区: [ 1]: GTM-12=日界线西 [ 2]: GTM-11=萨摩亚群岛 [ 3]: GTM-10=夏威夷 [ 4]: GTM-09=阿拉斯加 [ 5]: GTM-08=太平洋时间(美国和加拿大) [ 6]: GTM-07=亚利桑那 [ 7]: GTM-06=中部时间(美国和加拿大) [ 8]: GTM-05=东部部时间(美国和加拿大) [ 9]: GTM-04=大西洋时间(美国和加拿大) [10]: GTM-03=巴西利亚 [11]: GTM-02=中大西洋 [12]: GTM-01=亚速尔群岛 [13]: GTM=格林威治标准时间 [14]: GTM+01=萨拉热窝 [15]: GTM+02=开罗 [16]: GTM+03=莫斯科 [17]: GTM+04=阿布扎比 [18]: GTM+05=伊斯兰堡 [19]: GTM+06=达卡 [20]: GTM+07=曼谷,河内 [21]: GTM+08=中国标准时间 [22]: GTM+09=汉城 [23]: GTM+10=关岛 [24]: GTM+11=所罗门群岛 [25]: GTM+12=斐济 [26]: GTM+13=努库阿勒法 [27]: GTM+14=基里巴斯 请选择设置时区 [21]: -- 根据需要选择时区 安装类型: 1 典型安装 2 服务器 3 客户端 4 自定义 请选择安装类型的数字序号 [1 典型安装]: -- 安装类型 所需空间: 1579M 请选择安装目录 [/home/dmdba/dmdbms]: -- 安装目录 可用空间: 31G 是否确认安装路径(/home/dmdba/dmdbms)? (Y/y:是 N/n:否) [Y/y]:y 安装前小结 安装位置: /home/dmdba/dmdbms 所需空间: 1579M 可用空间: 31G 版本信息: 有效日期: 安装类型: 典型安装 是否确认安装? (Y/y:是 N/n:否):y [INFO] 安装达梦数据库完成。 请以root系统用户执行命令: /home/dmdba/dmdbms/script/root/root_installer.sh -- 执行dmap服务脚本 安装结束 [dmdba@itsapp2 dm8]$
DM 的静默安装是依据xml文件自动安装, 具体配置信息可以参考官方手册
https://eco.dameng.com/docs/zh-cn/pm/install-uninstall.html#2-2-2-3-%E9%9D%99%E9%BB%98%E5%AE%89%E8%A3%85
[dmdba@itsapp3 dm8]$ ./DMInstall.bin -q /home/dmdba/install.xml 解压安装程序.......... [INFO] 安装达梦数据库.. [INFO] 安装达梦数据库完成。 请以root系统用户执行命令: /home/dmdba/dmdbms/script/root/root_installer.sh [dmdba@itsapp3 dm8]$
[dmdba@itsapp1 ~]$ tree -L 1 /dm8
/dm8 -- 软件主目录
├── bin -- 二进制文件目录
├── bin2 -- 二进制文件目录
├── desktop -- 桌面图标目录
├── doc -- 官方手册
├── drivers -- DM提供的各种语言驱动
├── include -- 头文件
├── jar -- jar包
├── jdk -- jdk
├── log -- 日志目录
├── samples -- 示例数据库
├── script -- 脚本目录
├── tool -- 客户端工具
├── uninstall -- 卸载数据库所需的文件目录
└── web -- DEM相关
[dmdba@itsapp1 ~]$ export DISPLAY='100.63.1.60:0'
[dmdba@itsapp1 ~]$ cd /dm8/tool/
[dmdba@itsapp1 tool]$ ./dbca.sh
[dmdba@itsapp1 ~]$ cd /dm8/bin
[dmdba@itsapp1 bin]$ ./dminit help -- 可以查看dminit工具的参数和使用方法
[dmdba@itsapp1 bin]$ ./dminit PATH=/dm8/data/ PAGE_SIZE=32 DB_NAME=dm01 INSTANCE_NAME=dm1 PORT_NUM=5237
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2023-03-04
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dm8/data/dm01/dm0101.log
log file path: /dm8/data/dm01/dm0102.log
write to dir [/dm8/data/dm01].
create dm database success.
[dmdba@itsapp1 bin]$
– dminit 初始化的数据库实例, 不会执行注册服务脚本, 所以需要手动注册或者不使用服务管理
[root@itsapp1 root]# ./dm_service_installer.sh -t dmserver -p dm1 -dm_ini /dm8/data/dm01/dm.ini
[dmdba@itsapp1 bin]$ ./dmserver /dm8/data/dm01/dm.ini
file dm.key not found, use default license!
version info: develop
DM Database Server 64 V8 03134283890-20220304-158322-10045 startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2023-03-04
file lsn: 34875
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
iid page's trxid[4008]
NEXT TRX ID = 4009
pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 to_release_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 to_release_p
ages, 0 mgr pages, 0 mgr recs!iid page's trxid[5010]
NEXT TRX ID = 6012.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
SYSTEM IS READY.
[root@itsapp1 root]# systemctl start DmServicedm1
[dmdba@itsapp1 bin]$ ./DmServicedm1 start
-- 上面两种方式都可以启动数据库, 随便那种方式都可以
[dmdba@itsapp1 ~]# cd /dm8/tool/
[dmdba@itsapp1 tool]# ./dmservice.sh -- DM 提供的类似windows控制台的工具, 需要注意的是必须使用root用户执行
MOUNT 可以对数据库进行参数配置, 但不能读写数据文件
OPEN 正常状态,可以读ie数据文件
SUSPEND 只读状态, 一旦执行 COMMIT 操作, 则数据库会被挂起
SQL> SELECT status$ FROM v$instance;
行号 STATUS$
---------- -------
1 OPEN
SQL> ALTER DATABASE MOUNT;
SQL> SELECT STATUS$ FROM V$INSTANCE;
行号 STATUS$
---------- -------
1 MOUNT
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE SUSPEND;
SQL> SELECT STATUS$ FROM V$INSTANCE;
行号 STATUS$
---------- -------
1 SUSPEND
SQL> SELECT STATUS$ FROM V$INSTANCE;
行号 STATUS$
---------- -------
1 SUSPEND
SQL> CREATE TABLE T1(ID INT); -- 数据库处于SUSPENDzhuangtai, 不能执行任何写操作
1、读取参数文件dm,ini, 对数据库参数进行初始化
2、根据 dm.ini 中配置的控制文件位置, 读取控制文件信息, 将数据库数据文件等调整到正常状态
$DM_HOME/tool/manager 主要功能: 和数据库进行交互、执行SQL语句、用户管理、权限管理、备份管理等一切日常工作都可以实现
$DM_HOME/tool/dts 主要功能: 数据库和数据库之间的数据迁移、异构数据库之间的迁移、导出数据等
$DM_HOME/tool/monitor 主要功能: 对数据库和服务器的性能进行监控
$DM_HOME/tool/console 主要功能: 对数据库服务进行管理、日常的启动关闭
$DM_HOME/bin/disql 主要功能: 命令行的交互工具、对数据库进行日常管理
1、连接数据库
[dmdba@itsapp1 ~]$ disql SYSDBA/SYSDBA:5236
2、执行SQL
SQL> SELECT STATUS$ FROM V$INSTANCE;
行号 STATUS$
---------- -------
1 OPEN
已用时间: 0.353(毫秒). 执行号:1201.
SQL>
3、执行操作系统命令
SQL> HOST ls / bin boot dev dm8 etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var SQL>
4、导入数据
SQL> START /home/dmdba/1.sql
用法
插入单行或多行数据,该方式需要插入所有列的值: INSERT INTO TB_ANME VALES(),[()] 插入单行或多行数据,该方式可以指定插入那些列: INSERT INTO TB_NAME(COL_NAME1,COL_NAME2....) VALUES(VAL1,VAL2...) 基于某个表创建一个新表: INSERT .... SELECT ...
用法
UPDATE TB_NAME SET 更新字段=更新的值 WHERE …
DELETE FROM TB_NAME WHERE …
用于条件过滤, 主要操作符包含下面这些 算术运算符 + - * / % 比较运算符 > <= >= <= <> != <=> IS NULL 判断是否为空 IS NOT NULL 判断是否不为空 LEAST 在多个值中返回最小值 GREATEST 在多个值中返回最大值 BETWEEN AND 判断区间 IN 判断一个值是否存在于列表中 NOT IN 判断一个值是否不存在于列表中 LIKE 模糊匹配 % 匹配多个值 _ 匹配单个值 REGEXP 正则表达式规则匹配 RLIKE 一个值是否符合正则表达式的规则 逻辑运算符 NOT , ! AND , && OR , || XOR
根据指定字段, 对数据进行分组显示, 常和聚集函数一起使用
SELECT * FROM B GROUP BY B.ID
SELECT A.ID, COUNT(*) FROM A GROUP BY A.ID
对分组后的数据进行过滤
SELECT A.ID, COUNT(*) C FROM A GROUP BY A.ID HAVING C > 100;
根据指定字段进行排序\
SELECT ID,NAME FROM A ORDER BY ID [ASC,DESC]
自然连接: 根据两张表相同名的字段自动进行等值连接
自然连接写法
SELECT * FROM T1 NATURAL JOIN T2 ;
SELECT * FROM T1 JOIN T2 USING(ID);
SELECT * FROM T1 JOIN T2 ON T1.ID = T2.ID;
自己和自己进行关联
自连接写法
SELECT * FROM A AS A1,B AS B1 WHERE A1.ID = B1.ID
根据连接条件, 仅将满足条件的数据显示
SELECT * FROM A INNER JOIN B ON A.ID = B.ID
左外连接: 以左表为准, 左表全部显示 匹配右表数据, 匹配不到得使用NULL补齐 根据ON条件进行等值连接,如果左表有数据,右表没有数据则右表以NULL补齐
SELECT * FROM A LEFT JOIN B ON A.id = B.id
右外连接: 以右表为准, 右表全部显示 匹配左表数据, 匹配不到得使用NULL补齐 根据ON条件进行等值连接,右表没有数据则左表以NULL补齐
SELECT * FROM A RIGHT JOIN B ON A.id = B.id
表空间是一个逻辑概念, 由多个段组成, 一个表空间可以包含多个数据文件, 默认数据库会自动出创建5个表空间
SYSTEM : 存储数据库的元数据信息
ROLL : 回滚段, 用于提供MVCC机制
MAIN : 如果创建的用户没有指定表空间, 则默认创建的数据库对象就存放在该表空间中, 相当于ORACLE的user表空间
TEMP : 存放临时数据, 例如SQL语句的执行结果
HMAIN : HTS表空间
V$TABLESPACE 当前数据库中有多少表空间
V$HUGE_TABLESPACE HTS表空间相关信息
段时逻辑概念, 由多个区组成
段的类型
数据段: 存放数据和索引的段
临时段: 临时结果集等, 临时段的分配和释放完全由系统自动控制,用户不能手工进行干预
回滚段: 用于存储多版本并发
簇是一个逻辑概念, 由多个页组成, 主要用于当进行表空间扩展时, 一次性扩展多少空间
在进行数据库初始化时可以指定
数据库的最小存储单元, 也是最小的I/O操作单元
DM数据库页大小分为 4k 8k 16k 32k , 默认8k, 在数据库初始化时可以指定页大小, 一旦指定后就无法修改
1、页的类型
2、记录
3、页的元数据信息
页中存放的是真实的记录, 当一个表中的一行记录的总长度很大时, 则选择16k或者32k的页大小
因为数据库每次从磁盘读取都是根据数据页的大小进行读取可以减少磁盘IO
用于存储真是数据的文件
dm.ctl 该文件是二进制文件, 只能通过命令行工具dmctlcvt工具打开
控制文件中包含了 OGUID、数据库状态、数据库名称、最后启动时间等、表空间信息、数据文件信息、联机日志文件信息等
dm.ini 每个数据库实例在数据目录下都会生成一个 dm.ini 配置文件
read only 数据库运行过程中无法使用语句进行修改, 只能修改 dm.ini 参数文件 重启后生效
sys 动态参数, 可以对内存中的值进行修改、也可以对 dm.ini 参数文件进行修改
session 会话参数, 可以对内存中的值进行修改、也可以对 dm.ini 参数文件进行修改 但是只对当前会话生效
in file 静态参数, 不能对内存中的值进行修改、只能修改参数文件, 重启后生效
SP_SET_PARA_VALUE 修改整型参数
SP_SET_PARA_DOUBLE_VALUE 修改浮点型参数
SP_SET_PARA_STRING_VALUE 修改字符型参数
ALTER SYSTEM SET var=value <both|memory|spfile>
在数据库运行过程中, 产生的一切写操作的日志记录
对联机日志的备份
存放数据和索引的区域, 根据LRU算法进行脏页的刷写
LRU 链表
FREE LIST 当前空闲页的数量
LRU LIST LRU列表中的数量
DIRTY LIST 脏页列表的数量, LRU LIST 包含脏页列表
DM 中存在一个叫做热区的概念, 防止热数据被刷写, 个人理解, 根据LRU算法热数据一般不会被刷写不理解这个存在的意义
v$bufferpool;
BUFFER 数据缓冲区大小 根据业务不同所定义的大小不同 OLTP: 建议内存的 40%-60% OLAP: 建议内存的 60%-80%
FAST_POOL_PAGES 快速回收数据缓冲区中的页
RLOG_BUF_SIZE对日志缓冲区大小进行控制
RLOG_BUF_SIZE 日志缓冲区大小
存储SQL语句执行过程中所需要的内存, 执行计划和结果集缓存
存储数据库的元数据信息, 采用LRU算法进行淘汰
DICT_BUF_SIZE 默认的配置大小为5M
数据库启动后想服务器申请的内存, 在运行过程中该内存区域会将内存分配给其他线程
MEMORY_POOL:初始大小
MEMORY_EXTENT_SIZE:扩展大小
MEMORY_TARGET:目标大小
MEMORY_N_POOL:共享内存池个数,默认为 1,高并发时可设置多个。
MAX_OS_MEMORY:内存占用操作系统内存的比例,默认 100,建议调整到 80-90%
所谓运行时内存就是会话级别的内存, 当有连接时需要使用内存则会进行内存的申请
DM 是单进程多线程对称服务器架构
用于监听客户端请求, 当有新的连接时, 分配一个线程接收客户端的数据
负责将用户输入的SQL, 进行执行并将结果返回客户端
负责从磁盘读写数据到内存, 脏页的刷写 IO_THR_GROUPS用于配置IO线程的个数 DM使用的是aio
负责处理系统中的定时任务, 调度线程每秒钟轮询一次
主要负责的任务有以下任务
1、检查系统级的时间触发器,如果满足触发条件则生成任务加到工作线程的任务队列由工作线程执行;
2、清理SQL缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项;
3、检查数据重演捕获持续时间是否到期,到期则自动停止捕获;
4、执行动态缓冲区检查。根据需要动态扩展或动态收缩系统缓冲池;
5、自动执行检查点。为了保证日志的及时刷盘,减少系统故障时恢复时间,根据INI参数设
6、会话超时检测。当客户连接设置了连接超时时,定期检测是否超时,如果超时则自动断开连接;
7、必要时执行数据更新页刷盘;
8、唤醒等待的工作线程
将日志缓冲区的数据, 写入redo日志
如果系统配置了实时归档,在FLUSH线程日志刷盘前,会直接将日志通过网络发送到实时备库。如果配置了本地归档,则生成归档任务,通过日志归档线程完成
将redo日志进行归档
主要用于主备系统中, 相当于MySQL的SQL_THREAD
用于定义的定时任务, 每秒检测一次定时器链表
主要用于复制环境
DM内部高速通道, 基于TCP/IP 主要用于和其他主机进行通信, 所有高可用环境都会用到
完成某些特定功能的线程
V$LATCHES 记录当前正在等待的线程信息
V$THREADS 记录当前系统中活动线程的信息
V$WTHRD_HISTORY 记录自系统启动以来,所有活动过线程的相关历史信息。
V$PROCESS 记录服务器进程信息
文章
阅读量
获赞