注册
完整版达梦8单机安装V3.0(适用于小白的实战版,一步步下来,简单高效)
专栏/技术分享/ 文章详情 /

完整版达梦8单机安装V3.0(适用于小白的实战版,一步步下来,简单高效)

Onemore 2025/08/29 388 2 0
摘要

!!!下载附件,用Typora打开即可。!!!文章内容只是示意,展示不全

完整版DM8单机安装手册V3.0

经多次实操修正后,按照本文从上而下操作,可快速掌握单机部署

安装前准备工作

1.内容

(1)磁盘永久挂载,需要先做,不然可能会导致上传的安装包被格式化

(2)上传安装包,检查安装包架构与操作系统是否匹配,并用ls -lh检查 total、与单个文件大小,均大于900M才行

(3)上传key、上传Autodm8.sql

  1. 原则上由客户进行磁盘挂载、安装包上传,如果客户不会、或者要求,我们也可自行上传安装包,但需要注意如下事项,以提高效率

2.自行上传安装包补充内容

  1. 浪潮云服务器tmp文件,重启会清理,所以安装包尽量不要放里面
  2. 如果网速不快,要让浪潮云调大超时时间,不然很难受,重连后可能会导致安装包上传异常

<img src="./完整版DM8单机安装手册V3.0.assets/image-20250826085010075.png" alt=“image-20250826085010075” style=“zoom: 67%;” align=“left”/>

3.安装包上传失败可能的报错

  1. mount: /data/tmp: wrong fs type, bad option, bad superblock on /dev/loop, missing codepage or helper program
  2. <img src="./完整版DM8单机安装手册V3.0.assets/image-20250826090720852.png" alt=“image-20250826090720852” style=“zoom: 80%;” align=“left” />

一、磁盘挂载、划分

前言:

(1)客户可能刚装的新的服务器,可能没重启过,此时数据盘可能为sdc,上面还有个容量小的系统盘sdb,此时需要重启,这样数据盘sdc就会变为sdb。

(2)8-9成的单机,都是直接一个数据盘挂载到/data,基本磁盘不分区。

(3)小于200G,不用考虑分区、分盘

磁盘不分区操作:

# 查看当前磁盘情况 lsblk # 新建/data目录 mkdir /data # 强制格式化磁盘 mkfs.xfs -f /dev/sdb # 查看磁盘所属UUID blkid # 永久挂载 echo "UUID=ba052c9c-fbe8-4ca4-8c5f-f7066b95b957 /data ext4 defaults 0 0" >> /etc/fstab # 执行改在测试,必须做!!!不然挂载错了,启动失败,需要进入bios才能修复 mount -a # 需重启,也可等后置参数优化完后,一起重启

磁盘分区操作:

划分原则(仅供参考):

/data
├── dm8 # 安装目录
├── core # 核心转储文件
├── dmbak # 备份文件
├── dmarch # 归档日志
└── dmdata # 数据文件

  • 小于等于200G的硬盘,就不要划分了,直接挂载到 /data
  • 如果客户的数据量100G、提供了500G的空间,则可以考虑划分分区了
  • dm8:比较固定,3-5G空间
  • core:内存异常定位用,如果磁盘空间充足,则设置成跟内存一样的大小,如果不足,则设置为内存的一半
  • dmbak:根据系统的数据量来,如果100G的系统

仅供参考:

<img src="./完整版DM8单机安装手册V3.0.assets/image-20250421150436966.png" alt=“image-20250421150436966” style=“zoom:50%;” align=“left” />

1.如果未进行磁盘挂载、分区,需要先处理磁盘 (1)查看当前磁盘情况 lsblk (2)新建分区 fdisk /dev/sdb 此处略,除了/data/dm8是系统盘,其余均挂载到数据盘的4个分区上,/data/core、/data/dmbak、/data/dmarch、/data/dmdata (3)分区强制格式化 mkfs.xfs -f /dev/sdb1 mkfs.xfs -f /dev/sdb2 mkfs.xfs -f /dev/sdb3 mkfs.xfs -f /dev/sdb4 (4)blkid =》查看分区UUID (5)vi /etc/fstab 参考,把4个分区都挂载上: "UUID=76f3cd7d-a2a3-4644-a73e-2e3ea479f5a3 /data/core xfs defaults 0 0" "UUID=76f3cd7d-a2a3-4644-a73e-2e3ea479f5a3 /data/dmbak xfs defaults 0 0" "UUID=76f3cd7d-a2a3-4644-a73e-2e3ea479f5a3 /data/dmarch xfs defaults 0 0" "UUID=76f3cd7d-a2a3-4644-a73e-2e3ea479f5a3 /data/dmdata xfs defaults 0 0" (6)mount -a 执行挂载测试,必须做,不然挂载错了,启动失败!!! (7)重启后生效 reboot

补充

  1. mount /dev/sdb /data 临时挂载

  2. echo “UUID=76f3cd7d-a2a3-4644-a73e-2e3ea479f5a3 /data xfs defaults 0 0” >> /etc/fstab 永久挂载

  3. Linux下mount挂载新硬盘和开机自动挂载 - sirdong - 博客园

二、检查安装包

1.查看CPU 架构、颗数、核心数

# 查看cpu lscpu

<img src="./完整版DM8单机安装手册V3.0.assets/image-20250421101305103.png" alt=“image-20250421101305103” style=“zoom: 50%;” align=“left” />

物理核心总数 = Core(s) per socket × Socket(s)

本次安装信息:

cpu架构:aarch64

cpu颗数:16

cpu核心数:1

2.根据CPU架构进行选包

# 查看NAME: "UnionTech OS Server 20" 这是统信 Kylin Linux Advanced Server:这是麒麟 cat /etc/os-release #查看内核/系统 uname -a

image-20250421101620320

操作系统:Linux操作系统

3.检查安装包版本是否正确 => 即架构、操作系统与安装包是否匹配

4.检查tar命令

# 无tar命令,iso安装包无法正常解压 tar --help

二、系统参数配置

1.修改openfile参数

输入命令检查openfile参数是否为65536或者无限制
#输入命令检查open file参数:

ulimit -a

若open file参数不是65536或者无限制则用以下方式进行修改:
#输入命令进入limits.conf文件编辑界面:

su - root vi /etc/security/limits.conf

进入到limits.conf文件后,键盘按“i”开始插入数据,在文件内容末尾增加内容:

* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536

dmdba soft nice 65536
dmdba hard nice 65536
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited

2.关闭swap分区

# 查看内存 free -m #永久关闭 swap 分区,root, 需重启 sed -ri 's/.*swap.*/#&/' /etc/fstab # 查看内存 free -m

3.确认磁盘调度算法

# 重新确认调度算法,,sda替换为要装的磁盘 cat /sys/block/vdb/queue/scheduler # 修改,重启后生效 grubby --update-kernel=ALL --args="elevator=deadline"

!!! 官网上说的修改磁盘调度算法不行,menu.lst是centos6的(下面为官网内容)

[root@~]# vi /boot/grub/menu.lst
##更改到如下内容
kernel /boot/vmlinuz-2.6.32-504.el6 ro root=LABEL=/ elevator=deadline rhgb quiet

4.禁用透明大页,禁用numa

# 禁用透明大页 查看是否启用透明大页 [root@~]# cat /sys/kernel/mm/transparent_hugepage/enabled ##[always]表示透明大页启用 [never] 表示透明大页禁用 # 永久修改 [root@~]# vi /etc/default/grub # 编辑grub文件 在 “GRUB_CMDLINE_LINUX=” 配置参数结尾加入 “transparent_hugepage=never numa=off” # 重新生成 /etc/grub2.cfg 配置文件:

命令生效范围对比表(由deepSeek整理,注意甄别)

命令 适用系统启动模式 典型生效系统 关键说明
grub2-mkconfig -o /etc/grub2.cfg 通用 所有 Linux 系统 符号链接到真实路径,不直接生效(需确认实际指向)
grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg UEFI 模式 麒麟 KylinOS 专用于麒麟的 UEFI 引导路径
grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg UEFI 模式 openEuler 专用于 openEuler 的 UEFI 引导路径
grub-mkconfig -o /boot/grub/grub.cfg Legacy BIOS 模式 统信/Debian/Ubuntu/Deepin 传统 BIOS 系统的标准路径(部分系统兼容 grub2-mkconfig
grub2-mkconfig -o /boot/grub2/grub.cfg Legacy BIOS 模式 CentOS/RHEL/Fedora/openSUSE 红帽系和 SUSE 系在 BIOS 模式的标准路径

5.配core日志、内存分配参数

vi /etc/sysctl.conf kernel.core_pattern =/data/core/core-%e-%p-%s vm.overcommit_memory=0 # 使生效 sysctl -p

0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2:表示内核允许分配超过所有物理内存和交换空间总和的内存

6.关闭selinux(统信应该是没有selinux)

# 查看selinux getenforce # 如果不是disabled,则修改 vi /etc/selinux/config SELINUX=disabled

image-20250421164351484

7.系统时间检查

# 不符合当前时间的需要修改,本处略 date

8.重启+检查

#输入命令重启服务器 reboot; #输入命令查看参数修改是否成功 ulimit -a #查看selinux是否关闭成功 getenforce # 查看内存 free -m # 查看 numa dmesg | grep -i numa cat /proc/cmdline # 查看透明大页 cat /sys/kernel/mm/transparent_hugepage/enabled # 查看磁盘调度算法 cat /sys/block/sdb/queue/scheduler

check-06

check-07

知识补充

  1. 还有些其他优化参数 磁盘 IO、网络、调整 nproc.conf 参数、CPU 超线程检查、内存池管理调整、RemoveIPC 参数检查、调整 login、core

命令补充

  1. 查看网卡信息

    ethtool eth0
  2. 查看数据库端口

    netstat -ntlp | grep dmserver
  3. ens33 网络接口上,捕获所有经过端口 5236 的网络数据包,并显示详细的输出信息,且不进行地址解析

    tcpdump -ni ens33 port 5236 -vv

三、防火墙配置

# 查看防火墙状态,如果未开启,先不用管。如果开启,需要放行5236端口 systemctl status firewalld #redhat 7/8 添加(--permanent 永久生效,没有此参数重启后失效) firewall-cmd --zone=public --add-port=5236/tcp --permanent # 重新载入 firewall-cmd --reload

其他相关命令:

#查看防火墙状态

systemctl status firewalld.service

#关闭防火墙服务

systemctl stop firewalld.service

#开机时禁用防火墙服务

systemctl disable firewalld.service

#查询已开放的端口列表:

firewall-cmd --zone=public --list-ports

#查看5236

firewall-cmd --zone=public --query-port=5236/tcp

#删除5236

firewall-cmd --zone=public --remove-port=5236/tcp --permanent

四、创建用户组、用户、文件目录

1.创建组、用户

#创建安装用户dmdba,将新建用户放在用户组dinstall中 groupadd dinstall useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba #初始化dmdba用户密码,别漏了dmdba,踩过好几次坑!!! passwd dmdba Sysdba#123

2.创建安装目录

mkdir data cd /data mkdir dm8 core dmbak dmarch dmdata cd .. chown -R dmdba:dinstall data chmod -R 775 data chown -R dmdba:dinstall dm8 core dmbak dmarch dmdata chmod -R 775 dm8 core dmbak dmarch dmdata

3.上传安装包、key文件

# 上传key cp dm--8.1--0625.key /opt/dm.key chown dmdba:dinstall /opt/dm.key chmod 755 /opt/dm.key # 上传安装包并挂载镜像 mount dm8_20210818_x86_rh6_64_ent_8.4.2.18_pack14.iso /mnt

补充

5.调整安装临时目录(一般不用操作,可忽略)

[root@localhost ~]# cd opt
[root@localhost opt]# mkdir tmp
[root@localhost opt]# chown dmdba:dinstall /opt/tmp
[root@localhost opt]# chmod 777 /opt/tmp
[root@localhost opt]# su - dmdba
[dmdba@localhost ~]$ export DM_INSTALL_TMPDIR=/opt/tmp

6.需改环境变量(一般不用改,可忽略)

su - dmdba
vi .bash_profile
export DM_HOME="/data/dm8"
export LD_LIBRARY_PATH="LDLIBRARYPATH:/data/dm8/bin"exportPATH=LD_LIBRARY_PATH:/data/dm8/bin" export PATH=PATH:DMHOME/bin:DM_HOME/bin:DM_HOME/tool

使生效

source .bash_profile

#检查
env | grep PATH

五、数据库安装

1. 切换dmdba用户,并切换目录

su - dmdba cd /mnt

2. 命令行安装

# 命令行安装 ./DMInstall.bin -i

出现如下内容

[dmdba@zbx-client mnt]$ ls 'DM8 Install.pdf' DMInstall.bin ./DMInstall.bin -i 请选择安装语言(C/c:中文 E/e:英文) [C/c]:c 解压安装程序.......... core file size (blocyks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 26546 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 26546 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited 可打开文件数过少,建议至少设置为65536或更多。 欢迎使用达梦数据库安装程序 是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n 是否设置时区? (Y/y:是 N/n:否) [Y/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]:21 安装类型: 1 典型安装 2 服务器 3 客户端 4 自定义 请选择安装类型的数字序号 [1 典型安装]:1 所需空间: 1178M 请选择安装目录 [/home/dmdba/dmdbms]:/data/dm8 可用空间: 327G 是否确认安装路径(/data/dm8)? (Y/y:是 N/n:否) [Y/y]:y 安装前小结 安装位置: /data/dm8 所需空间: 1178M 可用空间: 327G 版本信息: 有效日期: 安装类型: 典型安装 是否确认安装? (Y/y:是 N/n:否):y 2023-07-19 09:27:18 [INFO] 安装 基础 模块... 2023-07-19 09:27:18 [INFO] 安装达梦数据库... 2023-07-19 09:27:22 [INFO] 安装 服务器 模块... 2023-07-19 09:27:22 [INFO] 安装 客户端 模块... 2023-07-19 09:27:25 [INFO] 安装 驱动 模块... 2023-07-19 09:27:26 [INFO] 安装 手册 模块... 2023-07-19 09:27:26 [INFO] 安装 服务 模块... 2023-07-19 09:27:27 [INFO] 移动日志文件。 2023-07-19 09:27:28 [INFO] 安装达梦数据库完成。 请以root系统用户执行命令: /data/dm8/script/root/root_installer.sh 安装结束 !!!如果没有出现【请以root系统用户执行命令】,则可能是root用户安装,需要重新把/data下文件赋予dmdba!!!

3.使用root用户,执行命令

# 按照给出的命令执行,下面仅供参考 请以root系统用户执行命令: /data/dm8/script/root/root_installer.sh

<img src="./完整版DM8单机安装手册V3.0.assets/image-20250826100118621.png" alt=“image-20250826100118621” style=“zoom:50%;” align=“left”/>

4.使用dmdba用户,初始化数据库实例

#以dmdba用户执行,切换到bin目录下, # 兼容模式 COMPATIBLE_MODE 默认值 0 | 标识符大小写敏感(CASE_SENSITIVE) 默认值 1 敏感 | 结尾空格填充模式(BLANK_PAD_MODE)默认值0 CHARSET=1 UTF-8 ./dminit PATH=/data/dmdata PORT_NUM=5236 DB_NAME=DAMENG INSTANCE_NAME=DMSERVER PAGE_SIZE=32 EXTENT_SIZE=32 CHARSET=1 CASE_SENSITIVE=1 BLANK_PAD_MODE=0 LOG_SIZE=1024 SYSDBA_PWD=Sysdba####5 SYSAUDITOR_PWD=Sysdba####5

5.使用root用户,注册服务

2、root 执行注册服务脚本 cd $DM_HOME/script/root ./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /data/dmdata/DAMENG/dm.ini # DMSERVER是数据库实例名,后缀改为相应的实例名即可,DAMENG是数据库名称 systemctl enable DmAPService systemctl enable DmServiceDMSERVER systemctl start DmServiceDMSERVER

6.切换到bin目录,登录数据库

./disql SYSDBA/'"Sysdba####5"':5236
  1. 使用dmdba用户、root用户登录都行
  2. 实践中发现,后台启动的服务,用root操作,不会改变文件所属,而且root具备直接操作Autodm8.sql的权限

补充

# 命令行方式卸载 DM 数据库

# DM 安装目录下执行./uninstall.sh -i 卸载 DM 数据库: [dmdba@KylinDCA03 dm8]$ ./uninstall.sh -i # 删除之前注册的服务 ./dm_service_uninstaller.sh -n DmServiceDMSERVER # 删除相关文件 rm -rf XXXX

# 删除实例

# 删除实例,直接删除实例文件就行,!!危险操作,谨慎执行!! rm –r DAMENG # 删除之前注册的服务 ./dm_service_uninstaller.sh -n DmServiceDMSERVER

六、安装后配置

1. 配置归档

# 开启数据库的服务器日志记录功能,并刷新服务器日志配置,使 SVR_LOG 参数生效 SP_SET_PARA_VALUE(1,'SVR_LOG',1); SP_REFRESH_SVR_LOG_CONFIG(); # 开启归档配置,并添加归档,大概占空间的1/4 alter database mount; alter database ARCHIVELOG; alter database ADD ARCHIVELOG 'type=local,dest=/data/dmarch,file_size=1024,space_limit=128000'; alter database open; 查看归档配置: select arch_mode from v$database; select * from v$dm_arch_ini;

2.配置作业

创建作业环境 先执行 SP_INIT_JOB_SYS(0); 再尝试执行 SP_INIT_JOB_SYS(1); --定时全量备份: call SP_CREATE_JOB('DB_FULL_BACKUP1',1,0,'',0,0,'',0,'fullbak'); call SP_JOB_CONFIG_START('DB_FULL_BACKUP1'); call SP_ADD_JOB_STEP('DB_FULL_BACKUP1', 'DB_FULL_BACKUP1', 6, '00000000/data/dmbak', 0, 0, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('DB_FULL_BACKUP1', 'DB_FULL_BACKUP1', 1, 2, 1, 1, 0, '3:00:00', NULL, '2024-08-19 16:48:47', NULL, ''); call SP_JOB_CONFIG_COMMIT('DB_FULL_BACKUP1'); --定时增量备份: call SP_CREATE_JOB('DB_INC_BACKUP1',1,0,'',0,0,'',0,'incbak'); call SP_JOB_CONFIG_START('DB_INC_BACKUP1'); call SP_ADD_JOB_STEP('DB_INC_BACKUP1', 'DB_INC_BACKUP1', 6, '10000000/data/dmbak|/data/dmbak', 0, 0, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('DB_INC_BACKUP1', 'DB_INC_BACKUP1', 1, 2, 1, 126, 0, '3:00:00', NULL, '2024-08-19 16:48:41', NULL, ''); call SP_JOB_CONFIG_COMMIT('DB_INC_BACKUP1'); --定时清理: call SP_CREATE_JOB('DELETE_DB_FULL_BACKUP1',1,0,'',0,0,'',0,'keep7day'); call SP_JOB_CONFIG_START('DELETE_DB_FULL_BACKUP1'); call SP_ADD_JOB_STEP('DELETE_DB_FULL_BACKUP1', 'DELETE_DB_FULL_BACKUP1', 0, 'CALL SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/data/dmbak''); CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-7);', 0, 0, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('DELETE_DB_FULL_BACKUP1', 'DELETE_DB_FULL_BACKUP1', 1, 1, 1, 0, 0, '04:00:00', NULL, '2024-08-19 16:48:57', NULL, ''); call SP_JOB_CONFIG_COMMIT('DELETE_DB_FULL_BACKUP1'); --清理归档 call SP_CREATE_JOB('DELETE_ARCH',1,0,'',0,0,'',0,'keep7day'); call SP_JOB_CONFIG_START('DELETE_ARCH'); call SP_ADD_JOB_STEP('DELETE_ARCH', 'DELETE_ARCH', 0, 'SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE -7);', 1, 2, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('DELETE_ARCH', 'DELETE_ARCH', 1, 1, 1, 0, 0, '04:00:00', NULL, '2024-08-19 16:49:01', NULL, ''); call SP_JOB_CONFIG_COMMIT('DELETE_ARCH'); 查看作业信息,将前两个作业立即执行,然后查看/data/dmbak目录下是否生成 select * from sysjob.SYSJOBS; SP_DBMS_JOB_RUN(1756122561); SP_DBMS_JOB_RUN(1756122562);

3.配置兼容模式

// 兼容mysql sp_set_para_value(2,'COMPATIBLE_MODE',4); // 兼容oracle sp_set_para_value(2,'COMPATIBLE_MODE',2); // 兼容MS SQL SERVER SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',3); SP_SET_PARA_VALUE(2,'MS_PARSE_PERMIT',2);

4.执行优化脚本

[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA:5236 SQL>start /路径/Autodm8.sql

Autodm8.sql脚本省略,在官网vip脚本中

(1)Autodm8.sql脚本分自动执行跟手动执行

(2)手动执行时,需要在自己本地输入同服务器相同参数,从打印的消息中,拿去sql在服务器执行(如果应用与数据库在同一台电脑,则按需设置内存)

5.重启数据库,使兼容模式、优化脚本生效

6.查看数据库信息,并整理文件(文件私发给客户)

SELECT '实例名称' 数据库选项,INSTANCE_NAME 数据库集群相关参数值 FROM v$instance union all SELECT '数据库授权码',(SELECT SERIES_NO FROM V$LICENSE) UNION ALL SELECT '数据库有效期',cast((SELECT EXPIRED_DATE FROM V$LICENSE)as VARCHAR) UNION ALL SELECT '授权客户',(SELECT AUTHORIZED_CUSTOMER FROM V$LICENSE) UNION ALL SELECT '数据库版本',substr(svr_version,instr(svr_version,'(')) FROM v$instance union all SELECT '数据库版本小号',(SELECT id_code) FROM v$instance union all SELECT '数据库实例路径',(SELECT PARA_VALUE from v$dm_ini where para_name like'%SYSTEM_PATH%') FROM v$instance union all SELECT '页大小',cast(PAGE()/1024 as varchar) union all SELECT '簇大小',cast(SF_GET_EXTENT_SIZE() as varchar) union all SELECT '字符集',CASE SF_GET_UNICODE_FLAG() WHEN '0' THEN 'GBK18030' WHEN '1' then 'UTF-8' when '2' then 'EUC-KR' end union all SELECT '大小写敏感',DECODE(SF_GET_CASE_SENSITIVE_FLAG,'0','N-不敏感','1','Y-敏感') union all SELECT 'char是否以字符为单位',DECODE(PARA_VALUE,0,'0-否,以字节存储',1,'1-是,以字符存储') FROM V$DM_INI WHERE "V$DM_INI".PARA_NAME='LENGTH_IN_CHAR' union all SELECT 'BLANK_PAD_MODE',cast ( BLANK_PAD_MODE() as varchar) union all SELECT '数据库兼容',DECODE(PARA_VALUE,0,'不兼容',1,'1-SQL92',2,'2-Oracle',3,'3-MSSQLServer',4,'4-MySQL',5,'5-DM6',6,'6-Teradata',7,'7-PG') from v$dm_ini where para_name='COMPATIBLE_MODE' union all SELECT '关键字过滤',PARA_VALUE from v$dm_ini where para_name='EXCLUDE_RESERVED_WORDS';

补充:

# 归档关闭 alter database noarchivelog; # 修改归档的配置(修改归档空间上限): alter database modify archivelog 'type=local, dest=/data/dmdba/dmdbms/dmarch, SPACE_LIMIT=40960'; # 删除7天之前的归档日志 SELECT SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE-1); 作业步骤信息 select * from SYSJOB.SYSJOBSTEPS; 作业调度信息 select * from sysjob.SYSJOBSCHEDULES; 删除作业 call SP_DROP_JOB('DB_FULL_BACKUP1'); call SP_DROP_JOB('DB_INC_BACKUP1'); call SP_DROP_JOB('DELETE_DB_FULL_BACKUP1'); call SP_DROP_JOB('DELETE_ARCH'); 清理作业日志 SP_JOB_CLEAR_HISTORIES ('DELETE_DB_FULL_BACKUP1'); 创建表空间和用户配置权限: xintu/Xintu_123! create tablespace "xintu" datafile '/data/dmdata/DAMENG/xintu.DBF' size 1024 autoextend on next 1024 maxsize 409600; create user "xintu" IDENTIFIED by "Xintu_123!" DEFAULT TABLESPACE "xintu"; grant "DBA","PUBLIC","RESOURCE","SOI","VTI" to "xintu"; select * from SYSOBJECTS t where t."TYPE$" ='SCH'; --查看模式 select * from SYSOBJECTS t where t."SUBTYPE$" ='USER'; --查看用户 grant SELECT ANY TABLE to "xintu" with admin option; 创建模式: CREATE SCHEMA "jnip" AUTHORIZATION "SYSDBA";

七、统信知识拓展部分(统信操作系统命令有些区别)

统信相关命令

生成grub

grub-mkconfig -o /boot/grub/grub.cfg

防火墙

UOS操作系统中,默认情况下是没有安装防火墙的。

  1. 安装UFW:在终端中执行以下命令来安装UFW:
sudo apt-get install ufw
  1. 启用防火墙:执行以下命令来启用UFW防火墙:
sudo ufw enable
  1. 禁用防火墙:如果需要临时禁用防火墙,可以执行以下命令:
sudo ufw disable
  1. 检查防火墙状态:想要查看防火墙的当前状态,可以使用以下命令:
sudo ufw status

原文链接:https://blog.csdn.net/xiangyuanhong08/article/details/13283791

ARM+ 统信 UOS20 环境如何关闭 numa 和透明大页

【问题解决】

ARM+ 统信 UOS20 环境关闭 numa 和透明大页步骤如下:

  1. 修改 grub 文件
Copyvi /etc/default/grub

在 GRUB_CMDLINE_LINUX 结尾处添加 “numa=off transparent_hugepage=never”。

  1. 执行以下命令
Copy grub2-mkconfig -o /boot/efi/EFI/uos(或者是Uniontech目录,根据具体情况填写文件夹名称)/grub.cfg grub2-mkconfig -o /etc/grub2-efi.cfg
  1. 重启操作系统

操作系统重启后即可关闭 ARM+ 统信 UOS20 环境的 numa 和透明大页。

八、Autodm8.sql脚本理解(DeepSeek自动生成)

以下是对该达梦数据库自动参数调整脚本的逐层解析,帮助您全面理解其设计逻辑和实现机制:


一、脚本核心目标

自动化优化达梦数据库(DM8)的关键参数,根据硬件资源(CPU/内存)和业务场景(OLTP/OLAP)动态计算并设置最佳配置,适用于普通实例和DSC集群环境。


二、关键控制参数

参数名 类型 说明
exec_mode int 执行模式:0-直接修改参数,1-仅打印修改语句(需手动调整v_mem_mbv_cpus
is_dsc int 是否DSC集群:0-否,1-是(影响内存池和预加载策略)
mem_per int 分配给数据库的内存百分比(默认90%)
v_mem_mb int 手动模式下的总内存(MB)
v_cpus int 手动模式下的CPU核数
sort_mode int 排序模式:0-高并发OLTP(小排序缓存),1-OLAP/一般业务(大缓存)
pk_cluster_mode int 主键聚集模式:0-大字段场景,1-高性能小字段场景

三、核心算法逻辑

1. 资源自动检测(exec_mode=0时)

SELECT TOP 1 N_CPU, TOTAL_PHY_SIZE/1024/1024 INTO v_cpus, v_mem_mb FROM V$SYSTEMINFO; -- 获取实际CPU核数和物理内存

2. 内存分配公式

v_mem_mb = ROUND(总内存 * mem_per%, -3); -- 按千位取整 IF v_mem_mb >512GB THEN v_mem_mb *=0.8; -- 超大内存保留20%给系统 END IF;

3. 参数动态计算

参数组 计算公式/策略
CPU相关 TASK_THREADS=416,`IO_THR_GROUPS`=28(根据CPU核数分段设置)
缓冲区 BUFFER=总内存×40%,RECYCLE=总内存×4%,BUFFER_POOLS取质数优化并发访问
内存池 按总内存分档(<16GB/16~64GB/>64GB),设置不同MEMORY_POOLMEMORY_N_POOLS
排序/HASH SORT_BUF_GLOBAL_SIZEHJ_BUF_GLOBAL_SIZE按内存比例分配,OLTP模式缩小单个排序缓存

四、关键技术点

1. 质数优化并发(关键代码段)

-- 生成质数表(2~100) WITH t AS (SELECT ROWNUM rn FROM dual CONNECT BY LEVEL <= 100), t1 AS (SELECT * FROM t WHERE rn>1 MINUS SELECT ta.rn*tb.rn FROM t ta, t tb WHERE ta.rn<=tb.rn) -- 选择最接近且<=目标值的质数 SELECT TOP 1 rn INTO BUFFER_POOLS FROM t1 WHERE rn > v_mem_mb/800 ORDER BY 1;

设计意图:使用质数作为BUFFER_POOLS可减少缓存区争用,提升高并发下的锁效率。

2. 安全备份机制

CREATE TABLE BAK_DMINI_... AS SELECT * FROM v$dm_ini; -- 备份当前参数

作用:在执行前保存原始参数,便于异常回滚。

3. DSC集群特殊处理

IF is_dsc=1 THEN SET FAST_POOL_PAGES=10000; -- 减小预加载页数 SET ENABLE_FREQROOTS=0; -- 关闭热页动态加载 END IF;

原因:DSC环境需避免频繁内存操作影响节点间同步性能。


五、参数设置策略

1. 性能关键参数

参数 推荐值 作用
WORKER_THREADS =v_cpus 工作线程数,充分利用CPU
BUFFER 总内存×40% 数据缓存池大小,决定热点数据命中率
SORT_FLAG 0或1 排序算法模式:0-内存优先,1-磁盘优化

2. 安全相关参数

SP_SET_PARA_VALUE(2,'ENABLE_ENCRYPT',0); -- 关闭透明加密(按需开启) SP_SET_PARA_VALUE(2,'MEMORY_MAGIC_CHECK',1); -- 开启内存校验

3. 运维辅助参数

SP_SET_PARA_VALUE(2,'SVR_LOG',0); -- 关闭服务端日志(避免I/O压力) SP_SET_PARA_VALUE(2,'ENABLE_MONITOR',1); -- 开启性能监控

六、异常处理逻辑

1. 错误捕获

EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20001, ...); -- 统一抛出可读错误

作用:防止脚本中断导致参数处于中间状态。

2. 已知问题规避

-- 检查MAX_BUFFER是否存在(新版本已移除) IF EXISTS (SELECT * FROM V$DM_INI WHERE PARA_NAME='MAX_BUFFER') THEN ... END IF;

七、使用建议

  1. 测试环境验证

    • 先设置exec_mode=1生成参数修改语句,人工审核后再执行。
    • 使用v$dm_ini对比修改前后差异。
  2. 监控调整

    • 关注V$BUFFERPOOLV$MEM_POOL视图,观察缓冲区命中率和内存使用。
    • 根据实际负载微调BUFFER_POOLSRECYCLE_POOLS
  3. 版本适配

    • 注意达梦不同版本参数差异(如MAX_BUFFER已废弃)。

八、执行流程图示

graph TD
    A[开始] --> B{exec_mode=0?}
    B -->|是| C[自动检测CPU/内存]
    B -->|否| D[使用手动输入参数]
    C --> E[计算总内存分配]
    D --> E
    E --> F[分档计算内存池参数]
    F --> G[生成质数优化BUFFER_POOLS]
    G --> H[设置CPU相关参数]
    H --> I[配置排序/HASH缓存]
    I --> J[备份当前参数]
    J --> K{is_dsc=1?}
    K -->|是| L[应用DSC专用配置]
    K -->|否| M[应用单机优化]
    L --> N[提交所有参数修改]
    M --> N
    N --> O[结束]

通过以上解析,您应该能清晰理解该脚本如何根据硬件资源和业务需求动态优化数据库参数。实际使用时需结合监控数据持续调优。

完整版DM8单机安装手册V3.0.rar

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服