Linux安装达梦数据库

一、安装前准备

1. 下载达梦数据库

下载地址:https://eco.dameng.com/download/

2. 创建达梦用户

2.1. 创建用户组

groupadd -g dmdba dinstall

2.2.创建用户

useradd -u dmdba -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

2.3. 修改用户密码

passwd dmdba

3. 修改文件最大打开数

使用 vim 编辑器打开 /etc/security/limits.conf 文件,命令如下:

vi /etc/security/limits.conf

在最后添加四条语句,需添加的语句如下:

dmdba hard nofile 65537
dmdba soft nofile 65537
dmdba hard stack 32768
dmdba soft stack 16384

切换到 dmdba 用户,查看是否生效,命令如下:

su dmdba

ulimit -a

4.挂载镜像

切换到 root 用户,将DM数据库的 iso 安装包挂载在任意位置,列如/dm目录下(不存在则新建目录/dm

mkdir /dm

进入iso所在目录,这里的pathToIso修改为实际ISO所在目录。

cd pathToIso/dm8_20230104_x86_rh6_64.iso

执行如下命令挂载镜像:

mount -o loop dm8_20230104_x86_rh6_64.iso /dm

5. 创建数据库安装目录

在达梦目录下创建 /dm 文件夹,用来安装 DM 数据库。命令如下:

mkdir /home/dmdba/dm

注意: 使用 root 用户建立文件夹,待 dmdba 用户建立完成后,需将文件所有者更改为 dmdba 用户,否则无法安装到该目录下。

将新建的安装路径目录权限的用户修改为 dmdba,用户组修改为 dinstall。命令如下:

chown dmdba:dinstall -R /home/dmdba/dm

给安装路径下的文件设置 755 权限。命令如下:

chmod -R 755 /home/dmdba/dm

二、安装

1. 数据库安装

切换到数据库用户进行安装

su - dmdba

进入达梦iso挂载目录

cd /dm

执行安装命令

./DMInstall.bin -i

请添加图片描述
请添加图片描述

在这里插入图片描述
由于数据库安装服务非root用户, 无法创建服务。需要以root用户执行下述脚本:建立数据库配置文件,进行数据库服务创建,配置systemd服务管理,配置开机自启动。
在这里插入图片描述

2.配置环境变量

切换到 root 用户进入 dmdba 用户的根目录下,配置对应的环境变量。DM_HOME 变量和动态链接库文件的加载路径在程序安装成功后会自动导入。
在这里插入图片描述
添加path环境变量,命令如下:
编辑 $DM_HOME/.bash_profile,使其最终效果如下图所示:

cd /home/dmdba/
vim .bash_profile

加入一行

export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

在这里插入图片描述
然后切换至 dmdba 用户下,执行以下命令,使环境变量生效。

su - dmdba
source .bash_profile

3. 初始化数据库实例

使用 dmdba 用户始化数据库实例,进入到 DM 数据库安装目录下的 bin 目录中,使用 dminit 命令初始化实例。
dminit 命令可设置多种参数,可执行如下命令查看可配置参数

./dminit help
关键字说明(默认值)
INI_FILE初始化文件dm.ini存放的路径
PATH初始数据库存放的路径
CTL_PATH控制文件路径
LOG_PATH日志文件路径
EXTENT_SIZE数据文件使用的簇大小(16),可选值:16, 32, 64,单位:页
PAGE_SIZE数据页大小(8),可选值:4,8,16,32,单位:K
LOG_SIZE日志文件大小(256),单位为:M,范围为:256M~2G
CASE_SENSITIVE大小敏感(Y),可选值:Y/N,1/0
CHARSET/UNICODE_FLAG字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
SEC_PRIV_MODE权限管理模式(0),可选值:0[TRADITION],1[BMJ],2[EVAL],3[ZB]
LENGTH_IN_CHARVARCHAR类型长度是否以字符为单位(N),可选值:Y/N,1/0
SYSDBA_PWD设置SYSDBA密码(SYSDBA)
SYSAUDITOR_PWD设置SYSAUDITOR密码(SYSAUDITOR)
DB_NAME数据库名(DAMENG)
INSTANCE_NAME实例名(DMSERVER)
PORT_NUM监听端口号(5236)
BUFFER系统缓存大小(100),单位M
TIME_ZONE设置时区(+08:00)
PAGE_CHECK页检查模式(1),可选值:0/1/2
PAGE_HASH_NAME设置页检查HASH算法
EXTERNAL_CIPHER_NAME设置默认加密算法
EXTERNAL_HASH_NAME设置默认HASH算法
EXTERNAL_CRYPTO_NAME设置根密钥加密引擎
RLOG_ENCRYPT_NAME设置日志文件加密算法,若未设置,则不加密
USBKEY_PIN设置USBKEY PIN
PAGE_ENC_SLICE_SIZE设置页加密分片大小,可选值:0、512、4096,单位:Byte
ENCRYPT_NAME设置全库加密算法
BLANK_PAD_MODE设置空格填充模式(0),可选值:0/1
SYSTEM_MIRROR_PATHSYSTEM数据文件镜像路径
MAIN_MIRROR_PATHMAIN数据文件镜像
ROLL_MIRROR_PATH回滚文件镜像路径
MAL_FLAG初始化时设置dm.ini中的MAL_INI(0)
ARCH_FLAG初始化时设置dm.ini中的ARCH_INI(0)
MPP_FLAGMpp系统内的库初始化时设置dm.ini中的mpp_ini(0)
CONTROL初始化配置文件(配置文件格式见系统管理员手册)
AUTO_OVERWRITE是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖
USE_NEW_HASH是否使用改进的字符类型HASH算法(1)
ELOG_PATH指定初始化过程中生成的日志文件所在路径
AP_PORT_NUM分布式环境下协同工作的监听端口
DFS_FLAG初始化时设置dm.ini中的DFS_INI(0)
DFS_PATH启用dfs时指定数据文件的缺省路径
DFS_HOST指定连接分布式系统DFS的服务地址(localhost)
DFS_PORT指定连接分布式系统DFS的服务端口号(3332)
DFS_COPY_NUM指定分布式系统的副本数(3)
DFS_DB_NAME指定分布式系统的中数据库名(默认与DB_NAME一致)
SHARE_FLAG指定分布式系统中该数据库的共享属性(0)
REGION_MODE指定分布式系统中该数据库的系统表空间数据文件的区块策略(0) 0:微区策略 1:宏区策略
HUGE_WITH_DELTA是否仅支持创建事务型HUGE表(1) 1:是 0:否
RLOG_GEN_FOR_HUGE是否生成HUGE表REDO日志(1) 1:是 0:否
PSEG_MGR_FLAG是否仅使用管理段记录事务信息(0) 1:是 0:否
CHAR_FIX_STORAGECHAR是否按定长存储(N),可选值:Y/N,1/0
SQL_LOG_FORBID是否禁止打开SQL日志(N),可选值:Y/N,1/0
DPC_MODE指定DPC集群中的实例角色(0) 0:无 1:MP 2:BP 3:SP,取值1/2/3时也可以用MP/BP/SP代替
HELP打印帮助信息

在这里插入图片描述
在这里插入图片描述
使用如下命令初始化数据库

./dminit path=/home/dmdba/dm/data db_name=DAMENG instance_name=DMSERVER port_num=5236 CASE_SENSITIVE=0 CHARSET=1

在这里插入图片描述

参数名说明
path=/home/dmdba/dm/data初始数据库存放的路径
db_name=DAMENG数据库名(DAMENG)
instance_name=DMSERVER实例名(DMSERVER)
port_num=5236监听端口号(5236)

4. 注册数据库服务

给刚初始化的数据库创建后台服务
需使用root用户创建
服务名叫做DmServiceDMSERVER

su - root
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dm/data/DAMENG/dm.ini -p DMSERVER

设置服务开机自启动,并开启服务。

systemctl enable DmServiceDMSERVER

开启服务

systemctl start DmServiceDMSERVER

三、卸载

切换到root用户

su - root

停止服务

systemctl stop DmServiceDMSERVER
systemctl stop DmAPService.service 

执行卸载程序
切换到dmdba用户

su - dmdba
cd /home/dmdba/dmdbms
./uninstall.sh -i
dmdba@debian:~/dmdbms$ ./uninstall.sh -i
请确认是否卸载达梦数据库(/home/dmdba/dmdbms/)? (y/Y:是 n/N:否):y

是否删除dm_svc.conf配置文件? (y/Y:是 n/N:否):y

正在删除所有数据库库服务
删除数据库服务DmAuditMonitorService
删除数据库服务DmInstanceMonitorService
删除数据库服务DmJobMonitorService
删除数据库服务DmAPService
删除数据库服务DmServiceDMSERVER
删除所有数据库库服务完成
正在删除数据库目录
删除bin目录
删除bin目录完成
删除bin2目录
删除bin2目录完成
删除include目录
删除include目录完成
删除desktop目录
删除desktop目录完成
删除doc目录
删除doc目录完成
删除drivers目录
删除drivers目录完成
删除jdk目录
删除jdk目录完成
删除jar目录
删除jar目录完成
删除samples目录
删除samples目录完成
删除script目录
删除script目录完成
删除tool目录
删除tool目录完成
删除web目录
删除web目录完成
删除uninstall目录
删除uninstall目录完成
删除license_en.txt文件
删除license_en.txt文件完成
删除license_zh.txt文件
删除license_zh.txt文件完成
删除uninstall.sh文件
删除uninstall.sh文件完成
删除数据库目录完成

使用root用户执行命令:
/home/dmdba/dmdbms/root_uninstaller.sh
dmdba@debian:~/dmdbms$ 

使用root用户执行清理命令
切换到root

su - root
/home/dmdba/dmdbms/root_uninstaller.sh
root@debian:/home/dmdba/dmdbms/script/root# /home/dmdba/dmdbms/root_uninstaller.sh
sh: 0: getcwd() failed: No such file or directory
删除DmAPService服务
Removed /etc/systemd/system/multi-user.target.wants/DmAPService.service.
删除DmServiceDMSERVER服务
Removed /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service.
删除/etc/dm_svc.conf文件
root@debian:/home/dmdba/dmdbms/script/root# 

四、感谢

linux安装达梦数据库v8

<think>好的,我现在需要解决用户提到的达蒙数据库(Damon Database)中插入数据时遇到无效表名的问题。首先,我得确认用户提到的“达蒙数据库”具体指哪一个数据库系统,因为可能用户拼写有误或者是指某个特定厂商的数据库。常见的数据库如MySQL、PostgreSQL、Oracle等,但“达蒙”可能是DynamoDB的误读,或者是某个国内的自研数据库?不过暂时没有找到明确的对应产品,可能需要进一步询问用户确认。但根据用户的问题,可能更倾向于常见数据库中的问题,所以我会先假设是常见的数据库系统,如MySQL或PostgreSQL。 接下来,用户的问题是在执行INSERT语句时遇到“无效的表名”错误。这个错误通常有几个可能的原因: 1. **表名拼写错误**:这是最常见的问题,用户可能输入了错误的表名,比如大小写不一致、拼写错误或者有额外的空格。 2. **表不存在**:可能该表确实没有被创建,或者在执行INSERT之前被删除了。 3. **数据库模式(Schema)问题**:表可能不在当前连接的数据库或模式下,需要指定正确的模式名。 4. **权限问题**:用户可能没有对该表的INSERT权限,但通常权限问题会提示权限不足而不是表名无效,不过不同数据库可能有不同提示,需要确认。 5. **保留字冲突**:如果表名是数据库的保留字,可能需要使用引号或括号括起来,例如MySQL中使用反引号,PostgreSQL使用双引号。 6. **数据库连接问题**:可能连接到错误的数据库实例,导致表不存在于当前连接的数据库中。 现在,我需要一步步引导用户排查这些问题。首先,应该让用户检查表名是否正确,包括拼写和大小写。例如,在MySQL中,表名在Linux系统下是区分大小写的,而在Windows下默认不区分,但用户可能在不同环境下操作。 其次,确认表是否存在。可以通过执行一个简单的SELECT语句或者SHOW TABLES命令(在MySQL中)来查看表是否存在。例如: ```sql SHOW TABLES LIKE '表名'; ``` 或者查询系统表,如在PostgreSQL中: ```sql SELECT tablename FROM pg_tables WHERE tablename = '表名'; ``` 第三,检查当前数据库或模式是否正确。用户可能连接到另一个数据库,导致表不在当前上下文中。可以使用以下命令切换数据库: ```sql USE 数据库名; ``` 或者在连接字符串中指定数据库名。 第四,权限问题虽然可能性较低,但也不排除。用户可能需要检查自己是否有权限访问该表。例如,在MySQL中,可以通过: ```sql SHOW GRANTS FOR 用户名; ``` 第五,如果表名是保留字,需要使用特定的引号包裹。例如,MySQL中使用反引号: ```sql INSERT INTO `order` (...) VALUES (...); ``` PostgreSQL中使用双引号: ```sql INSERT INTO "user" (...) VALUES (...); ``` 第六,确认数据库连接是否正确。有时候,连接到了错误的数据库实例或服务,导致表不存在。 此外,用户可能在执行INSERT语句时没有正确使用引号或语法,导致解析错误。例如,表名中包含特殊字符或空格,这时候需要使用引号包裹。例如: ```sql INSERT INTO "my table" (column1) VALUES ('value1'); ``` 另外,还需要考虑数据库的命名规则,如表名是否以数字开头,是否包含非法字符等。不同的数据库有不同的命名规则,例如,MySQL允许表名包含数字和下划线,但不能以数字开头,除非使用反引号包裹。 如果用户使用的是ORM框架,可能需要检查模型定义中的表名是否正确映射,或者是否有缓存导致表名未更新。 总结下来,用户需要按照以下步骤排查: 1. **检查表名拼写和大小写**:确保与数据库中存在的表名完全一致。 2. **确认表存在**:通过查询系统表或使用管理工具查看。 3. **验证当前数据库/模式**:确保连接到了正确的数据库。 4. **处理保留字和特殊字符**:必要时使用引号包裹表名。 5. **检查权限**:确认用户有权限插入数据。 6. **验证数据库连接**:确保连接到正确的数据库实例。 如果以上步骤都确认无误,可能需要查看数据库的日志文件,寻找更详细的错误信息,或者联系数据库管理员进一步排查。</think>遇到达蒙数据库(假设为常见数据库如MySQL或PostgreSQL)中`INSERT`语句提示“无效的表名”时,可按以下步骤排查: --- ### 1. **确认表名拼写与大小写** - **检查拼写错误**:确保`INSERT`语句中的表名与数据库实际表名**完全一致**(包括特殊字符、空格或下划线)。 - **区分大小写**: - **Linux环境下的MySQL**:默认表名大小写敏感(如`User`与`user`不同)。 - **Windows环境下的MySQL**:默认不区分大小写。 - **示例验证**: ```sql -- MySQL查看表是否存在 SHOW TABLES LIKE '表名'; -- PostgreSQL查看表是否存在 SELECT tablename FROM pg_tables WHERE tablename = '表名'; ``` --- ### 2. **确认表是否存在** - **直接查询**:通过数据库工具或命令行检查表是否创建。 - **常见原因**: - 未执行`CREATE TABLE`语句。 - 表被意外删除(如执行了`DROP TABLE`)。 --- ### 3. **验证当前数据库/模式** - **检查连接的数据库**:确保`INSERT`语句在正确的数据库上下文中执行。 ```sql -- MySQL切换数据库 USE 数据库名; -- PostgreSQL指定模式 SET search_path TO 模式名; ``` - **显式指定数据库/模式**: ```sql INSERT INTO 数据库名.表名 (...) VALUES (...); -- 或 INSERT INTO 模式名.表名 (...) VALUES (...); ``` --- ### 4. **处理保留字或特殊字符** - **保留字冲突**:若表名为`order`、`user`等保留字,需用引号包裹: ```sql -- MySQL使用反引号 INSERT INTO `order` (id) VALUES (1); -- PostgreSQL使用双引号 INSERT INTO "user" (id) VALUES (1); ``` - **特殊字符或空格**:表名含空格时需引号包裹: ```sql INSERT INTO "my table" (column1) VALUES ('value1'); ``` --- ### 5. **检查用户权限** - **确认INSERT权限**:用户需拥有目标表的`INSERT`权限。 ```sql -- MySQL查看权限 SHOW GRANTS FOR 用户名; -- PostgreSQL授权 GRANT INSERT ON 表名 TO 用户名; ``` --- ### 6. **排查数据库连接问题** - **确认连接配置**:检查数据库连接字符串或配置,确保连接到正确的实例和端口。 --- ### 7. **其他可能原因** - **非法命名**:表名以数字开头或包含非法字符(如`#`、`@`),需按数据库规则命名。 - **ORM框架映射错误**:检查代码中模型定义是否正确绑定表名。 --- ### 总结流程 1. 核对表名拼写 → 2. 确认表存在 → 3. 检查数据库上下文 → 4. 处理保留字 → 5. 验证权限 → 6. 检查连接配置。 若问题仍未解决,建议查看数据库日志(如MySQL的`error.log`或PostgreSQL的`postgresql.log`)获取详细错误信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的鱼儿~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值