一、下载
1.下载地址:https://www.dameng.com/list_103.html
2.确认cpu型号:
lscpu
3.需要看下架构、型号名称确认下载哪个。
CPU:x86_64
型号名称: 12th Gen Intel(R) Core(TM) i7-12700H
4.查看系统内核:
uname -a
这里操作系统内核版本是:
Linux localhost.localdomain 4.19.90-89.11.v2401.ky10.x86_64 #1 SMP Tue May 7 18:33:01 CST 2024 x86_64 x86_64 x86_64 GNU/Linux
所以 CPU 选择:X86,操作系统选择:rhel7(红帽)
官方技术文档地址:https://eco.dameng.com/document/dm/zh-cn/start/install-dm-linux-prepare.html
二、创建系统用户
必须创建 dmdba 用户,否则在使用 root 账户进行安装时,会报错:未检测到操作系统用户dmdba,请确认操作系统用户dmdba是否存在!
tips:如果已经挂载到 /mnt 目录需要卸载的,使用命令:umount -f /mnt
1.创建安装用户组:
groupadd dinstall
2.创建安装用户 dmdba:
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
注意:这里的/home/dmdba可以替换为/dm8,以后文章的目录都可以进行替换,本文默认使用 /opt/dm8,此目录会自动创建。
如果此处自定义了参数,后续操作请按实际的自定义参数进行操作。
如果此处自定义了参数,后续操作请按实际的自定义参数进行操作。
3.初始化用户密码,密码至少 8 个字符:
passwd dmdba
4.修改文件打开最大数:
注意:需要使用 root 权限修改,不然会报错:W10: Warning: Changing a readonly file(只读文件无权修改)。
vi /etc/security/limits.conf
5.在文件的末尾,# End of file 下一行追加以下内容:
dmdba soft nice 0
dmdba hard nice 0
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
注意:修改配置后需要重启服务器使其生效。
6.重启后,切换到 dmdba 用户,查看是否已生效,对比 root。
# 切换用户
su - dmdba
# 查看限制
ulimit -a
在哪个用户权限下查看都一样,因为在 Linux、Solaris、AIX 和 HP-UNIX 等系统中,操作系统默认会对程序使用资源进行限制。如果不取消对应的限制,则数据库的性能将会受到影响。
7.创建目录:
##实例保存目录
mkdir -p /opt/dm8/data
##归档保存目录
mkdir -p /opt/dm8/arch
##备份保存目录
mkdir -p /opt/dm8/dmbak
8.将新建的路径目录权限的用户修改为 dmdba,用户组修改为 dinstall:
chown -R dmdba:dinstall /opt/dm8/data
chown -R dmdba:dinstall /opt/dm8/arch
chown -R dmdba:dinstall /opt/dm8/dmbak
9.给路径下的文件设置 755 权限:
chmod -R 755 /opt/dm8/data
chmod -R 755 /opt/dm8/arch
chmod -R 755 /opt/dm8/dmbak
三、安装
1.解压 dm8_20250122_x86_rh7_64.zip 得到三个文件。上传至服务器/home目录下等待安装。
2.挂载镜像,需要使用root用户进行挂载,/mnt目录下用于临时挂载文件系统或存储设备(也可以根据自己情况进行使用):
cd /home
mount -o loop dm8_20250122_x86_rh7_64.iso /mnt
3.切换 dmdba 用户并开始安装:
# 切换 dmdba 用户
su dmdba
# 进入挂载目录
cd /mnt
# 执行安装
./DMInstall.bin -i
异常处理:
1、“安装程序临时目录(/tmp)可用空间为1426M。安装程序需要至少2G的临时空间,请调整临时目录的空间或设置环境变量DM_INSTALL_TMPDIR来指定安装程序的临时目录。”
# 设置临时安装目录,可自定义
# 但这个目录 dmdba 用户必须拥有权限,否则报错:创建安装程序临时目录(/opt/dm8/install_tmp_dir)失败!
export DM_INSTALL_TMPDIR=/opt/dm8/install_tmp_dir
4.使用 root 用户创建 DmAPService,否则会影响数据库备份:
# 切换 root 用户
su root
# /opt/dm8/dmdbms 这个目录是创建数据库目录,自行更改,安装完成后,也有提示:请以 root 系统用户执行命令:xxxx,这就是脚本路径
/opt/dm8/dmdbms/script/root/root_installer.sh
四、配置环境变量
1.使用 dmdba 用户进入 dmdba 根目录(也就是创建的/opt/dm8)下配置环境变量,追加 export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool:
# 切换 dmdba 用户
su dmdba
cd /opt/dm8
# 编辑 .bash_profile 文件
vi .bash_profile
# 末尾追加
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
# 使环境变量生效
source .bash_profile
五、初始化实例
1.使用 dmdba 用户操作:
# 切换 dmdba 用户
su dmdba
# 进入安装目录
cd /opt/dm8/dmdbms/bin
# 查看初始化实例参数配置清单
./dminit help
# 默认初始化
./dminit path=/opt/dm8/data
# 带参数初始化
# 以下命令设置页大小为 32 KB
# 簇大小为 32 KB
# 大小写不敏感
# 数据库名为 AKIM
# 实例名为 AKIMSERVER
# SYSDBA 密码(长度为8到48位,必须包含大写和小写以及数字)为:abc_123ABC
# SYSAUDITOR 密码(长度为8到48位,必须包含大写和小写以及数字)为:abc_123ABC
./dminit path=/opt/dm8/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=n DB_NAME=AKIM INSTANCE_NAME=AKIMSERVER SYSDBA_PWD=abc_123ABC SYSAUDITOR_PWD=abc_123ABC
以下详细内容也可以参考官方文档:https://eco.dameng.com/document/dm/zh-cn/start/dm-instance-linux.html
需要注意的是 页大小 (page_size)、簇大小 (extent_size)、大小写敏感 (case_sensitive)、字符集 (charset) 、空格填充模式 (BLANK_PAD_MODE) 、页检查模式(PAGE CHECK) 等部分参数,一旦确定无法修改,在初始化实例时确认需求后谨慎设置。
部分参数解释如下:
-
- page_size:数据文件使用的页大小。取值范围 4、8、16、32,单位:KB。缺省值为 8。可选参数。选择的页大小越大,则 DM 支持的元组长度也越大,但同时空间利用率可能下降。数据库创建成功后无法再修改页大小,可通过系统函数 SF_GET_PAGE_SIZE()获取系统的页大小。
- extent_size:数据文件使用的簇大小,即每次分配新的段空间时连续的页数。取值范围 16、32、64。单位:页数。缺省值为 16。可选参数。数据库创建成功后无法再修改簇大小,可通过系统函数 SF_GET_EXTENT_SIZE()获取系统的簇大小。
- case_sensitive: 标识符大小写敏感。当大小写敏感时,小写的标识符应用""括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换标识符的大小写,系统比较函数会将大写字母全部转为小写字母再进行比较。取值:Y、y、1 表示敏感;N、n、0 表示不敏感。缺省值为 Y。可选参数。此参数在数据库创建成功后无法修改,可通过系统函数 SF_GET_CASE_SENSITIVE_FLAG()或 CASE_SENSITIVE()查询设置的参数值。
- charset:字符集选项。取值范围 0、1、2。0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR。缺省值为 0。可选参数。此参数在数据库创建成功后无法修改,可通过系统函数 SF_GET_UNICODE_FLAG()或 UNICODE()查询设置的参数值。
- BLANK_PAD_MODE:设置字符串比较时,结尾空格填充模式是否兼容 ORACLE。1:兼容;0:不兼容。缺省值为 0。可选参数。此参数在数据库创建成功后无法修改,可通过查询 V$PARAMETER 中的 BLANK_PAD_MODE 参数名查看此参数的设置值。
- PAGE_CHECK:PAGE_CHECK 为页检查模式。取值范围 0、1、2、3。0:禁用页校验;1:开启页校验并使用 CRC 校验;2:开启页校验并使用指定的 HASH 算法进行校验;3:开启页校验并使用快速 CRC 校验。缺省值为 3。可选参数。在数据库创建成功后无法修改。
- 更多 dminit 参数解释可参考达梦数据库安装目录下 doc 目录中《DM8_dminit 使用手册》。
建议
在实际使用中,初始化时建议提前设置好 COMPATIBLE_MODE 的参数值,便于更好的兼容其他数据库。参数说明:是否兼容其他数据库模式。0:不兼容,1:兼容 SQL92 标准,2:部分兼容 ORACLE,3:部分兼容 MS SQL SERVER,4:部分兼容 MYSQL,5:兼容 DM6,6:部分兼容 TERADATA,7:部分兼容 POSTGRES。
六、注册服务
1.注册服务需使用 root 用户进行注册,使用 root 用户进入数据库安装目录的 /script/root 下:
# 切换 root 用户
su root
# 进入脚本根目录
cd /opt/dm8/dmdbms/script/root/
# 注册实例服务
./dm_service_installer.sh -t dmserver -dm_ini /opt/dm8/data/AKIM/dm.ini -p AKIMSERVER
部分参数说明:
标志 | 参数 | 说明 |
---|---|---|
-t | 服务类型 | 注册服务类型,支持一下服务类型:dmap、dmamon、dmserver、dmwatcher、dmmonitor、dmasmsvr、dmasmsvrm、dmcss、dmcssm。 |
-dm_ini | INI 文件路径 | 指定服务所需要的 dm.ini 文件路径。 |
-p | 服务名后缀 | 指定服务名后缀,生成的操作系统服务名为“服务脚本模板名,称 + 服务名后缀”。此参数只针对 dmserver、dmwatcher、dmmonitor、dmasmsvr、dmasmsvrm、dmcss、dmcssm 服务脚本生效。 |
2.进入数据安装目录下 bin 目录中可以看到已经注册好的服务 DmServiceAKIMSERVER
# 进入安装bin目录
cd /opt/dm8/dmdbms/bin
# 查看目录文件清单
ls
七、启动/停止数据库
1.启动:
服务注册成功后,启动数据库。
使用 dmdba 用户进入数据库安装目录下的 bin 目录下,启动数据库。
I.服务名方式:
# 切换 dmdba 用户
su dmdba
# 进入安装bin目录
cd /opt/dm8/dmdbms/bin
# 启动服务
./DmServiceAKIMSERVER start
II.前台方式:
前台方式启动数据库后如果启动界面会话关闭数据库也相应会关闭所以一般情况下建议采用服务的方式启动数据库。
dmdba 用户使用前台的方式启动数据库,进入 DM 安装目录下的 bin 目录下,命令如下:
# 切换 dmdba 用户
su dmdba
# 进入安装 bin 目录
cd /opt/dm8/dmdbms/bin
# 启动服务
./dmserver /opt/dm8/data/AKIM/dm.ini
2.停止:
./DmServiceAKIMSERVER stop
3.重启:
./DmServiceAKIMSERVER restart
4.查看状态:
./DmServiceAKIMSERVER status
八.验证连接
使用 dmdba 用户进入数据库安装 bin 目录进行连接,初始用户名:SYSDBA,密码:SYSDBA。但初始化时我们设置了密码为:abc_123ABC。
# 切换 dmdba 用户
su dmdba
# 进入数据库安装 bin 目录
cd /opt/dm8/dmdbms/bin
# 开启连接
./disql sysdba
# 输入密码,初始化实例时没有指定 SYSDBA 密码的,默认密码为 SYSDBA,这里初始化时设置为 abc_123ABC
至此,完成达梦数据库的安装部署,以上内容均可根据自己实际情况变更。还要注意防火墙放行!!!
九、创建表空间
# 切换 dmdba 用户
su - dmdba
# 进入安装 bin 目录
cd /opt/dm8/dmdbms/bin
# 开启连接
./disql sysdba
# 输入密码
abc_123ABC
# 创建表空间
# test.dbf 没有指定绝对路径,默认路径为安装指定的 data 目录:/opt/dm8/data/AKIM/test.dbf,因为做了大小写不敏感,所以直接弄小写,常规默认大写。
# 初始化大小为 128M。
# 其他默认。
# 注意:表空间名称需用双引号("")
create tablespace "test" datafile 'test.dbf' size 128;
# 修改表空间
# autoextend 开启自动扩展大小
# 自动扩展表空间大小为 100M
# 最大表空间大小为 10240M
alter tablespace "test" datafile 'test.dbf' autoextend on next 100 maxsize 10240;
十、创建用户
1.创建用户
# 注意:以下 4 行语句需一起执行,用户名、密码均需双引号("")
# 创建 test 用户,密码为:abc_123ABC,使用散列算法 SHA512
create user "test" identified by "abc_123ABC" hash with SHA521 salt
# 存储加密密钥为:123456,可选项
encrypt by "123456"
# 表空间需双引号("")
# 指定表空间为:test
default tablespace "test"
# 表空间需双引号("")
# 指定索引表空间为:test
default index tablespace "test";
2.授权
# 注意:权限及用户名均需双引号(""),权限名可以是小写。
# 授予 test 用户 PUBLIC、RESOURCE、SOI 权限。
grant "public","resource","soi" to "test";
授权有 DBA、PUBLIC、RESOURCE、SOI、SVI、VIT:
-
-
- DBA(Database Administrator)
- 定义:DBA是数据库管理员的缩写,具备数据库中的最高级别权限。
- 权限内容:DBA几乎拥有创建数据库的所有权限,包括创建新的数据库、管理用户权限、备份和恢复数据库、监控和优化数据库性能、管理数据库的安全性和完整性等。DBA可以创建数据库实例、数据库表、数据库对象等,并管理所有用户和他们的权限。
- 作用:DBA是数据库系统的核心管理者,负责确保数据库的正常运行和安全性。
- PUBLIC
- 作用:DBA是数据库系统的核心管理者,负责确保数据库的正常运行和安全性。
- 权限内容:PUBLIC角色具有一些基本的、默认的权限,主要是对自己模式下操作数据的权限。但需要注意的是,PUBLIC角色本身并不直接授予用户创建数据库对象或执行高级管理操作的权限。
- 作用:PUBLIC角色提供了一种统一的管理方式,使得数据库管理员可以为所有用户设置一些基本的、共通的权限。
- RESOURCE
- 定义:RESOURCE是一个预定义的角色,用于管理数据库对象。
- 权限内容:RESOURCE角色具有在自己模式下创建表、视图等对象的权限,也具有操作自己模式下对象数据的权限。但是,它不能创建数据库结构,如数据库实例或数据库本身。
- 作用:RESOURCE角色为普通用户提供了在数据库中进行日常操作所需的权限,如数据录入、查询等。
- SOI(System Object Inspector)
- 作用:RESOURCE角色为普通用户提供了在数据库中进行日常操作所需的权限,如数据录入、查询等。
- 权限内容:SOI角色具有查询系统表(通常是SYS开头的表)的权限。这些系统表包含了数据库的元数据信息,如数据库结构、对象定义等。
- 作用:SOI角色允许用户查询数据库的元数据信息,有助于了解数据库的结构和对象定义。
- SVI 和 VIT
- 注意:在达梦数据库的官方文档和常见资料中,SVI和VIT并不是标准的预定义角色。这可能是因为它们是在特定环境或版本中自定义的角色,或者是用户误将其他角色名称(如VTI)与SVI和VIT混淆。
- 建议:如果SVI和VIT是在您的数据库环境中自定义的角色,那么它们的权限将取决于创建这些角色时所赋予的权限。建议查阅相关的数据库角色配置文档或联系数据库管理员以获取准确信息。
- VTI(View Table Inspector)
- 定义(基于您提到的可能混淆):虽然VTI不是达梦数据库的标准预定义角色,但根据一些资料,它可能代表具有查询动态视图相关权限的角色。
- 权限内容:如果VTI确实存在且代表这样的角色,那么它将具有查询系统动态视图的权限。动态视图通常包含数据库的实时状态信息,如性能统计、执行计划等。
- 作用:VTI角色允许用户查询数据库的实时状态信息,有助于进行性能调优和故障排查。
- DBA(Database Administrator)
-
综上所述,DBA、PUBLIC、RESOURCE和SOI是达梦数据库中常见的预定义角色,它们各自具有不同的权限和作用。而SVI和VIT可能是特定环境或版本中的自定义角色,或者是其他角色的误称。对于VTI角色,虽然它不是标准预定义角色,但根据描述可能代表具有查询动态视图权限的角色。
十、创建表
# 退出 sysdba 连接,切换 test 用户
exit
# 使用 test 用户连接(目录为:/opt/dm8/dmdbms/bin)
./disql test
# 输入密码
abc_123ABC
# 创建表
create table "sys_users"
(
"id" int identity(1, 1) not null,
"name" varchar(50) not null,
"age" int not null,
"status" int default 0 not null,
not cluster primary key("id")
);
# 创建表、字段注释
comment on table "sys_users" is '用户';
comment on column "sys_users"."id" is '主键';
comment on column "sys_users"."name" is '姓名';
comment on column "sys_users"."age" is '年龄';
comment on column "sys_users"."status" is '状态,默认:0';
# 插入数据
insert into sys_users(name,age) values('test',18);
# 查询数据,sysdba 用户也需要用以下方式查询,test 用户如果在 disql 下,可以省略 "test".,但是用它们官方 sqlark 登录 test 用户,居然不行,哈哈哈哈哈哈哈哈哈,fuck!!!!!
select * from "test"."sys_users";
文章评论