【无标题】

1. 数据库软件安装

(1) 以 dmdba 用户身份安装数据库,安装目录在 /dm/dmdbs 目录下 (目录需自己创建)

复制代码
[root@localhost ~]# groupadd dinstall
[root@localhost ~]# useradd -g dinstall -m dmdba
[root@localhost ~]# passwd dmdba
更改用户 dmdba 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# mkdir -r /dm/dmdbms
[root@localhost ~]# chown dmdba:dinstall /dm -R
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.
[root@localhost ~]# ls /mnt
'DM8 Install.pdf'   DMInstall.bin
[root@localhost ~]# cp /mnt/DMInstall.bin /home/dmdba
[root@localhost ~]# chmod 755 /home/dmdba/DMInstall.bin 

------------------------窗口2
[dmdba@localhost ~]$ ls
DMInstall.bin
[dmdba@localhost ~]$ ./DMInstall.bin -i

请以root系统用户执行命令:
/dm/dmdbms/script/root/root_installer.sh

安装结束

[dmdba@localhost ~]$ sudo /dm/dmdbms/script/root/root_installer.sh

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] dmdba 的密码:
dmdba 不在 sudoers 文件中。此事将被报告。

----------------------------窗口1
[root@localhost ~]# /dm/dmdbms/script/root/root_installer.sh

----------------------------窗口2
[dmdba@localhost ~]$ vi ~/.bash_profile 
export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH

(2) 需要使用 root 身份执行的脚本请使用 dmdba 用户增加 sudo 执行 (脚本前加 sudo)。

2. 创建数据库实例

复制代码
[dmdba@localhost ~]$ dbca.sh
数据库名 : EXAMDB
实例名 : EXAMSVR
数据库目录 : /dm/data
端口 : 5238
路径拼接数据库名 : 是

控制文件 : 
/dm/data/EXAMDB/dm.ctl

数据文件 : 
/dm/data/EXAMDB/SYSTEM.DBF
/dm/data/EXAMDB/ROLL.DBF
/dm/data/EXAMDB/TEMP.DBF
/dm/data/EXAMDB/MAIN.DBF

日志文件 : 
/dm/data/EXAMDB/EXAMDB01.log
/dm/data/EXAMDB/EXAMDB02.log
/dm/data/EXAMDB/EXAMDB03.log

ELOG : 
/dm/data/EXAMDB/

簇大小 : 32页
页大小 : 16K
日志文件大小 : 256M
时区设置 : +08:00
页面检查 : 默认
字符集 : UTF-8
USBKEY-PIN : 
页分片大小 : 4096
标识符大小写敏感 : 是
空格填充模式 : 否
改进的字符串HASH算法 : 是
启用日志文件加密 : 否
启用全库加密 : 否

启用加密 : 否

修改 SYSDBA的口令
修改 SYSAUDITOR的口令

---窗口1
[root@localhost /]# mv /dm/dmdbms/bin/DmServiceEXAMSVR.service /usr/lib/systemd/system/DmServiceEXAMSVR.service
[root@localhost /]# systemctl enable DmServiceEXAMSVR.service
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceEXAMSVR.service → /usr/lib/systemd/system/DmServiceEXAMSVR.service.
[root@localhost /]# 
[root@localhost /]# 
[root@localhost /]# systemctl start DmServiceEXAMSVR.service
[root@localhost /]# systemctl restart DmServiceEXAMSVR.service

(1) 实例的数据文件存放目录:在 /dm/data/ 目录下。

(2) 数据库名设置为 EXAMDB,实例名设置为 EXAMSVR,端口号设置为 5238

(3) 数据库管理员 SYSDBA 和 SYSAUDITOR 密码统一设置为 Dameng123。

(4) 设置簇大小为 32 页,页大小为 16K、字符集为 GB18030

(5) 设置数据库日志文件大小为 256M,3 个联机日志文件。

3. 存储管理

复制代码
[dmdba@localhost ~]$ manager

(1) 创建表空间 EXDATA:

a) 表空间数据文件存储在 /dm/data/EXAMDB。

b) 表空间包含两个数据文件,分别为 EXDATA01.DBF 和 EXDATA02.DBF。

c) 每个数据文件初始大小为 128M,打开文件的自动扩展功能,每次扩展 20M,每个数据文件最大 20G。

(2) 创建表空间 EXIDX:

a) 表空间数据文件存储在 /dm/data/EXAMDB 目录,包含 1 个数据文件 EXIDX.DBF 数据文件初始大小为 64M,打开文件的自动扩展功能,每次扩展 10M,每个数据文件最大 10G

4. 用户和用户资源管理

(1) 为提高密码安全性,创建资源限制 PRO_EXAM 管理密码安全,要求密码 180 天后过期,并且用户必须把密码修改过 3 次后,才能使用过去用过的密码。

(2) 创建角色 ROLE_EXAM,角色 ROLE_EXAM 具有创建表、视图、索引、物化视图、存储过程的权限。

(3) 为数据库创建用户 EXAM,密码为 Dameng123,默认数据表空间为 EXDATA,默认索引表空间为 EXIDX,使用资源限制 PRO_EXAM 管理 EXAM 用户的资源限制,使用角色 ROLE_EXAM 管理用户的权限

5. 表管理

在 EXAM 用户下创建表 COURSES、STUDENTS、SCORES。三个表的结构设计如下:

课程表(COURSES):存储课程信息

表格

字段名 数据类型 约束 说明(建表时不需要体现说明部分)

COURSE_ID INT PRIMARY KEY 课程 ID(主键)

COURSE_NAME VARCHAR(50) NOT NULL 课程名称

CREDIT NUMBER(3,1) NOT NULL 学分

COURSE_TYPE BIT NOT NULL 课程类型;1: 必修,0: 选修

TEACHER VARCHAR(50) NOT NULL 任课教师

学生表(STUDENTS):存储学生基本信息

字段名 数据类型 约束 说明(建表时不需要体现说明部分)

STU_ID INT PRIMARY KEY 学生ID(主键)

STU_NAME VARCHAR(50) NOT NULL 学生姓名

GENDER BIT NOT NULL 性别;0:男,1:女

BIRTH_DATE DATE NOT NULL 出生日期

CLASS VARCHAR(20) NULL 班级

EMAIL VARCHAR(50) NULL 邮箱

成绩表 (SCORES):存储学生成绩信息

字段名 数据类型 约束 说明(建表时不需要体现说明部分)

SCORE_ID INT PRIMARY KEY 成绩 ID (主键)

STUDENT_ID INT FOREIGN KEY 学生 ID (外键)

COURSE_ID INT FOREIGN KEY 课程 ID (外键)

EXAM_DATE DATE NOT NULL 考试日期

SCORE NUMBER(5,2) CHECK(0<=SCORE<=100) 成绩 (0-100)

补充要求:

其中:

(1) 根据表结构设计给三张表创建主键。

(2) 根据表结构设计,创建外键参照列和检验约束。

6. 数据统计和优化

(1) 执行/opt/exam/SQL目录下三个 sql 脚本,将数据导入至 COURSES 表、STUDENTS 表、SCORES 表。

(2) 在 EXAM 用户下按要求创建视图,要求如下:

a) 创建视图V_SCORESUMTOP,查询学生总成绩,按总成绩排行,取前十行的学生,展示学生姓名,学生总成绩。

b) 创建视图V_STUSCORE,查询展示平均分数 85 以上的学生及该学生各科成绩,展示学生姓名、课程名称、课程分数、平均分数,按平均分倒序排序 (平均分最大的排在最前面)。

(3) 在 EXAM 用户下创建物化视图MV_OSDBSCORE,查询课程名"Database systems"和"operating systems"两科的学生成绩,展示学生名、课程名和课程分数。

(4) 为了提升查询效率,请在学生表 STUDENTS 的 STU_NAME 姓名列添加索引IND_STU_NAME,索引数据存放在 EXIDX 表空间。

(三) 数据安全

7. 数据库逻辑导入导出

(1) 对 EXAM 用户逻辑导出,要求如下:

a) 备份文件存放在/dm/backup/dexp中,备份文件命名为EXAM.dmp,日志文件命名为EXAM.log。

b) 逻辑备份文件存放在其他路径下,本小题不得分。。

(2) 导入数据

a) 创建用户 TESTEXP,密码 Dameng123,并赋予 TESTEXP 用户 RESOURCE、SOI、VTI 角色相关权限。

b) 将 EXAM 用户下所有对象和数据导入到 TESTEXP 用户下。

8. 编写存储函数,查询学生成绩总分

(1) 在 EXAM 用户下创建函数EXAM.F_GETSCORE,根据指定的学生编号,返回该学生成绩总分。

(2) 如果没有该学生,抛出异常,返回 - 99。

9. 数据库安装环境配置

(1) 使用 python3 安装 dmPython 驱动,源码在达梦安装目录/dm/dmdbs/drivers/python/dmPython下,安装至默认路径。

复制代码
[dmdba@localhost ~]$ cd /dm/dmdbms/drivers/python/dmPython
[dmdba@localhost dmPython]$ python3 setup.py install

(2) 编写/opt/exam/目录下test.py脚本,使其连接 DM 数据库并查询学生表 STUDENTS 的数据。

(3) 执行python3 /opt/exam/test.py成功。

相关推荐
TDengine (老段)2 小时前
TDengine 扫描算子 — TableScan、TagScan 与下推优化
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
放下华子我只抽RuiKe52 小时前
FastAPI 全栈后端(三):数据库与 ORM
前端·数据库·react.js·oracle·性能优化·前端框架·fastapi
BAGAE2 小时前
星链卫星数据获取:从太空安全到实时通信的技术革命
网络·数据结构·数据库·算法·云计算·hbase
zh_xuan2 小时前
Android导出并查看数据库
数据库·sqlite
小短腿的代码世界3 小时前
Qt定时器高精度架构:从QTimer源码到纳秒级定时调度
数据库·qt·架构
herinspace3 小时前
管家婆辉煌软件如何新增往来单位档案分类
服务器·数据库·电脑·管家婆软件
程序猿乐锅3 小时前
【MySQL | 第九篇】MySQL 存储过程
数据库·mysql
栗子~~3 小时前
金融场景下BigDecimal 运算规范 + 常用场景使用 + 数据库字段设计详解
java·数据库·金融
他们叫我技术总监3 小时前
Kettle(PDI)连接TDengine数据库实战:一个有趣的小现象
大数据·数据库·tdengine