1. 准备工作
1.1 创建数据库用户
1.1.1 创建用户组
groupadd dinstall
1.1.2 创建用户
# 创建用户
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
# 设置密码
passwd dmdba
1.2 创建安装目录
1.2.1 创建安装目录
# 创建达梦安装路径
mkdir /dm
# 更改文件夹的所属用户组、所属用户
chown dmdba:dinstall /dm
# 查看是否更改成功(可选项)
ll -ld /dm
1.3 复制安装文件
# 复制文件到家目录
cp /opt/DMInstall.bin /home/dmdba/
# 修改文件所属用户
chown dmdba"dinstall /home/dmdba/DMInstall.bin
# 为文件添加操作权限
chmod +x /home/dmdba/DMInstall.bin
1.4 挂载镜像(可选项)
挂载达梦ISO镜像文件
# 在mnt下创建dm目录
mkdir /mnt/dm
# 挂载镜像 mount /镜像地址 /挂载的目标路径
mount /opt/dm8_20231109_x86_kylin10_64.iso /mnt/dm
# 切换到dmdba用户下
su - dmdba
# 查看挂载目录
ll /mnt/dm
2. 数据库安装
2.1 设置DISPLAY值
# 打开命令行(root用户)
# 允许所有主机上的应用程序显示图形界面
xhost +
# 查看DISPLAY值
echo $DISPLAY
# 切换到dmdba用户
su - dmdba
# 查看DISPLAY值
echo $DISPLAY
# 设置DISPLAY值(具体以查询出来的值为准)
export DISPLAY=:0.0
2.2 指定临时目录
# 命令行方式,dmdba用户执行
# 创建临时目录
mkdir /home/dmdba/tmp
# 指定临时目录
export DM_INSTALL_TMPDIR=/home/dmdba/tmp
2.3 界面化安装
2.3.1 执行安装命令
# 命令行方式,dmdba用户执行
# 进入家目录
cd
# 执行安装程序
./DMInstall.bin
2.3.2 根据页面提示选择
[确定]->[下一步]-> <选择相应的key文件> [下一步] -> [下一步] -> <根据要求选择安装目录> [下一步] -> [安装]
2.3.3 启动DmAPService服务
# 以root用户执行
# 启动DmAPService服务
/dm/data/script/root/root_installer.sh
3. 创建数据库实例
可以在数据库安装完成选择[初始化数据库],或者使用安装目录下的tool/dbca.sh配置数据库(创建实例、删除实例、创建服务、删除服务)
需要注意,达梦的每一个数据库都需要使用一个独立的端口
[创建数据库实例] [下一步] -> [下一步] -> <选择数据库目录> [下一步] -> <根据要求配置数据库名、实例名、端口号> [下一步] -> [下一步] -> <根据要求配置簇大小、页大小、字符集等> [下一步] -> <口令配置>[下一步] -> [下一步] -> [完成]
# 以root用户执行
# 移动自定义服务配置文件
mv /home/dmdba/dmdbms/bin/DmServicePROD.service /usr/lib/systemd/system/DmServicePROD.service
# 将服务设置为开机自启
systemctl enable DmServicePROD.service
# 启动数据库实例
systemctl start DmServicePROD.service
# 重启服务使参数生效
systemctl restart DmServicePROD.service
4. 数据库配置
4.1 兼容性设置
使用 SYSDBA 用户登录数据库命令行工具
# 方式1: # 界面化工具 # 依次打开/dm/tool/manager -> 运行 -> 新建连接 -> 用户名/密码/端口号 -> 测试 -> 连接 # 方式2: # 命令行工具 cd /dm/bin ./disql SYSDBA/Dameng123:5238
执行语句:
# 修改兼容性配置(静态参数) # MEM:内存修改(立即生效,重启失效。适用于动态参数) # SPFILE:文件修改(重启生效,长久有效。适用于静态参数) # BOTH:MEM & SPFILE(立即生效,长久有效。适用于动态参数) # 0:不兼容 # 1:兼容SQL92标准 # 2:部分兼容Oracle # 3:部分兼容MS SQLServer # 4:部分兼容MySQL # 5:兼容DM6 # 6:部分兼容TERADATA alter system set 'COMPATIBLE_MODE' = 2 spfile;
5. 表空间管理
5.1 创建表空间
- 使用 SYSDBA 用户登录数据库命令行工具
./disql SYSDBA/Dameng123:5238
- 创建表空间语句如下:
create tablespace TBS datafile '/dm/data/DMDB/TBS01.DBF' SIZE 64 autoextend on next 1 maxsize 1024, '/dm/data/DMDB/TBS02.DBF' SIZE 64 autoextend on next 1 maxsize 1024;
6. 用户和角色管理
6.1 创建角色
- SYSDBA用户执行
- 创建角色语句:
# 创建角色
create role ROLEDM;
# 为角色分配权限
grant create table, create view, create index to ROLEDM;
6.2 创建用户
- SYSDBA用户执行
- 创建用户语句:
# 创建用户,指定密码及表空间
create user TEST identified by Dameng123 default tablespace TBS;
# 设定用户登录限制
alter user TEST limit FAILED_LOGIN_ATTEMPS 5,PASSWORD_LOCK_TIME 3;
6.3 授予角色给用户
- SYSDBA用户执行
- 授予角色语句:
grant ROLEDM to TEST;
7. 表管理
7.1 创建表
- 在 TEST 用户下
- 创建 MAJORS 表语句:
CREATE TABLE MAJORS (
MAJOR_ID INT NOT NULL,
MAJOR_NAME VARCHAR(50),
DEPARTMENT_NAME VARCHAR(50)
);
- 创建 COURSES 表语句:
CREATE TABLE COURSES (
COURSE_ID INT NOT NULL,
COURSE_NAME VARCHAR(50) NOT NULL,
MAJOR_ID INT,
TEACHER_NAME VARCHAR(50)
);
- 创建 STUDENTS 表语句:
CREATE TABLE STUDENTS (
STUDENT_ID INT NOT NULL,
STUDENT_NAME VARCHAR(20) NOT NULL,
STUDENT_SEX VARCHAR(6),
STUDENT_BIRTH DATE NOT NULL,
STUDENT_ADDR VARCHAR(100),
STUDENT_MAJOR INT
);
7.2 设置主键
- 在 TEST 用户下
ALTER TABLE MAJORS ADD CONSTRAINT PK_MAJORS PRIMARY KEY (MAJOR_ID);
ALTER TABLE COURSES ADD CONSTRAINT PK_COURSES PRIMARY KEY (COURSE_ID);
ALTER TABLE STUDENTS ADD CONSTRAINT PK_STUDENTS PRIMARY KEY (STUDENT_ID);
7.3 设置外键
- 在 TEST 用户下
ALTER TABLE COURSES ADD CONSTRAINT FK_COURSES_MAJORS FOREIGN KEY (MAJOR_ID) REFERENCES MAJORS(MAJOR_ID);
ALTER TABLE STUDENTS ADD CONSTRAINT FK_STUDENTS_MAJORS FOREIGN KEY (STUDENT_MAJOR) REFERENCES MAJORS(MAJOR_ID);
8. 数据导入
- 使用 TEST 用户登录数据库命令行工具。
- 执行导入脚本:
# 方式1:
/dm/bin/disql TEST/Dameng123:5238
start /opt/script.sql (disql下可执行,推荐使用)
# 方式2:
# 界面化工具,TEST用户下执行
'/opt/script.sql (manager管理工具可执行)
9. 数据库备份
9.1 开启数据库归档
- 使用 SYSDBA 用户登录
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'type=local,dest=/dm/arch,file_size=128,space_limit=20480';
ALTER DATABASE OPEN;
9.2 联机完全备份
- 使用 SYSDBA 用户登录
BACKUP DATABASE FULL TO FULL_BACK BACKUPSET '/dm/backup/FULL_BACK';
9.3 逻辑导出
- 命令行方式,使用dmdba用户执行
cd /dm/bin
./dexp userid=test/Dameng123:5238 directory=/dm/backup file=test.dmp log=test.log full=y
10. 作业管理
10.1 创建代理环境
- 使用 SYSDBA 用户
SP_INIT_JOB_SYS(1);
10.1 创建作业FULL_BACKUP
- 使用 SYSDBA 用户
- 图形化方式
-- 创建作业:推荐图形化操作 代理-作业
# 以下为图形化界面创建后生成的DDL语句
call SP_JOB_CONFIG_START('FULL_BACKUP');
call SP_ADD_JOB_STEP('FULL_BACKUP', 'JOB01', 6, '00000000/dm/backup/FULL_BACK', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('FULL_BACKUP', 'JOB01', 1, 2, 1, 1, 0, '23:00:00', NULL, '2024-10-20 00:05:35', NULL, '');
call SP_JOB_CONFIG_COMMIT('FULL_BACKUP');
10.2 创建作业INCRE_BACKUP
- 使用 SYSDBA 用户
- 图形化方式
-- 创建作业:推荐图形化操作 代理-作业
# 以下为图形化界面创建后生成的DDL语句
call SP_CREATE_JOB('INCRE_BACKUP',1,0,'',0,0,'',0,'INC_BACKUP');
call SP_JOB_CONFIG_START('INCRE_BACKUP');
call SP_ADD_JOB_STEP('INCRE_BACKUP', 'job1', 6, '40000000/dm/backup/FULL_BACK', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('INCRE_BACKUP', 'job2', 1, 2, 1, 126, 0, '23:00:00', NULL, '2024-10-20 00:10:50', NULL, '');
call SP_JOB_CONFIG_COMMIT('INCRE_BACKUP');
11. 数据库日常管理
11.1 调整TEMP表空间大小
- 使用 SYSDBA 用户
ALTER SYSTEM SET 'TEMP_SIZE' = 100 SPFILE;
11.2 创建视图VIEW_ADDR
- 在 TEST 用户下
CREATE VIEW VIEW_ADDR AS
SELECT STUDENT_NAME, STUDENT_ADDR
FROM STUDENTS
WHERE STUDENT_ADDR LIKE '%武汉市洪山区%';
11.3 创建视图VIEW_CNAME
- 在 TEST 用户下
CREATE VIEW VIEW_CNAME AS
SELECT STUDENT_NAME, COURSE_NAME
FROM STUDENTS s, COURSES c
WHERE s.STUDENT_MAJOR = c.MAJOR_ID AND c.COURSE_NAME = '平面设计';
11.4 创建索引IND_STU_NAME
- 在 TEST 用户下
CREATE INDEX IND_STU_NAME ON STUDENTS(STUDENT_NAME);
12. 数据库开发配置
12.1 安装ODBC驱动
- 命令行方式,使用 root 用户
12.1.1 解压安装包
- 假设安装包名为 unixODBC-2.3.0.tar.gz ,根据实际情况调整:
tar -zxvf /opt/unixODBC-2.3.0.tar.gz -C /usr/local
12.1.2 进入解压后的目录并安装
cd /usr/local/unixODBC-2.3.0
./configure
make
make install
12.1.3 配置ODBC连接
- root用户修改
- 修改配置文件
# 修改 odbc.ini 文件(位于 /usr/local/etc/ ,如果不存在则创建):
[dm8]
Description = DM ODBC Connection
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = TEST
PWD = Dameng123
TCP_PORT = 5238
# 修改 odbcinst.ini 文件(位于 /usr/local/etc/ ,如果不存在则创建):
[DM8 ODBC DRIVER]
Description = ODBC Driver for DM8
Driver = /dm/bin/libdodbc.so
12.1.4 ODBC连接
dmdba用户执行
isql dm8