前言
达梦公司从1988年研制我国第一个自主版权的数据库管理系统CRDS开始,经过不断的迭代与发展,在吸收主流数据库产品优点的同时,逐步形成了自身的特点,如今达梦数据库已经受到业界和用户的广泛认同。达梦数据库也有了一套完善的认证体系,如图所示:
其中DCA考察的主要内容为DM8数据安装、创建数据库及实例管理、DMSQL、DM8体系结构、表空间管理、用户管理、模式对象管理、数据库的备份还原、作业管理、DM8开发。下面就是我对达梦数据库DM8-DCA认证的一些学习感悟分享。操作系统:Linux
1.DM8数据库的卸载和安装
1.1 卸载数据库(卸载和安装部分建议反过来看)
1.1.1 运行uninstall.sh
脚本所在位置为DM8数据库安装所在目录
# 进入DM数据库所在安装目录
cd /dm8
# 运行卸载脚本
./uninstall.sh
1.1.2 查看安装目录剩下的文件
1.1.3 清空安装目录
# 在该目录下执行如下命令,删除所有文件
rm -rf *
# 查看安装目录是否清空
ls
1.2 安装数据库
1.2.1 创建用户组和用户
# 创建用户组
groupadd dinstall
# 创建用户
useradd -g dinstall dmdba
# 为dmdba用户设置密码
passwd dmdba
# 创建完成后使用以下命令查看是否成功
id dmdba
1.2.2 规划软件安装路径
# 创建数据库安装路径,注意该文件夹为root用户创建
mkdir /dm8
# 授予dmdba用户操作dm8文件夹的权限
chown dmdba:dinstall /dm8
# 查看是否授予成功,正确结果如下图所示
ll -ld /dm8
1.2.3 设置文件最大打开数
Linux系统对文件打开的数量有最大的限制,它通常设置为1024,这个数值很容易会达到,从而造成系统程序或系统的瓶颈。所有在进行DM8的安装之前建议修改文件最大打开数。
# 查看最大可打开文件数
ulimit -a
# 临时设置,仅当前会话生效
ulimit -n 65536
# 永久设置,需要root用户操作
vi /etc/security/limits.conf
# 然后写入如下内容,保存退出,重启服务器生效
dmdba soft nofile 65536
dmdba hard nofile 65536
root soft nofile 65536
root hard nofile 65536
之后用 ulimit -a 查看是否修改成功
1.2.4 挂载安装文件
# 挂载镜像 mount /镜像地址 /挂载的目标路径
mount -o loop /opt/dm8_20220525_x86_rh6_64.iso /mnt
1.2.5 图形化界面安装
此时需要设置DISPLAY,否则调用图形化界面会失败,先来个错误示范
# 切换到dmdba用户
su - dmdba
# 进入到挂载目录
cd /mnt
# 查看目录下的文件
ls
# 执行安装程序
./DMInstall.bin
从上图我们可以看出,之所以失败是因为初始化图形界面失败,此时我们就需要设置DISPLAY的值才能成功调用图形化界面
# 打开终端,需要root用户,执行如下命令
xhost +
# 查看DISPLAY变量值
echo $DISPLAY
# 切换到dmdba用户
su - dmdba
# 设置DISPLAY值,为root用户下查出的DISPLAY变量值,注意仅对当前会话生效
export DISPLAY=:0
# 然后执行如下命令,即可在该会话下调用图形化界面(额,其实好像不加下面这个命令也可以调用,也许只是为了确认设置成功了吧)
xhost +
# 接着进入到挂载目录
cd /mnt
# 执行图形化安装程序
./DMInstall.bin
然后你就可以根据自己的需求进行相应的设置了,key路径可以不用填,一般如果你没有什么特殊要求的话,就只要改个安装路径就行,其余不用动,然后注意根据它的提示进行相应的操作,慢慢来,看清,不要错过了一些步骤设置,相信图形化肯定难不倒你,所以此处省略n张图片。
1.2.6 命令行安装
# 与图形化安装唯一不同的就是加了一个 -i
./DMInstall.bin -i
同样慢慢来,看清,不要错过一些步骤设置,如这个设置:
2.数据库实例管理
2.1 创建数据库实例
2.1.1 图形化创建
# 进入DM的工具目录
cd /dm8/tool
# 启动DM配置助手
./dbca.sh
这里就不一一展示之后的图形化步骤了(此处省略9张或者更多图片),然后你就可以根据自己的需求进行相应的配置,唯一需要注意的就是下面这个,如果没用root执行这三个脚本命令,可能会导致数据库服务创建失败,数据库无法启动。
2.1.2 命令行创建
手动建库
# dmdba用户执行
cd /dm8/bin
# 查看帮助手册
./dminit help
# 创建数据库
./dminit db_name=TEST instance_name=TEST port_num=5237 path=/dm8/data
手动注册服务
# root用户执行
cd /dm8/script/
# 注册数据库服务,-p 设置服务名后缀
./dm_service_installer.sh -t dmserver -p TEST -dm_ini /dm8/data/TEST/dm.ini
设置开机自动启动数据库服务,注意数据库服务名前缀是定死了的,为DmService
# root用户执行
systemctl enable DmServiceTEST.service
2.2 数据库连接
2.2.1 disql 工具
1 ) /dm8/bin 类似于oracle sqlplus username/passwd
# 进入到bin目录
cd /dm8/bin
# 本地连接可省略ip
./disql SYSDBA/SYSDBA:5236
# 连接远程服务器需要加上ip
./disql SYSDBA/SYSDBA@223.254.16.66:5236
2 ) /dm8/tool 类似于oracle sqlplus /nolog
connect username/passwd
# 进入到tool目录
cd /dm8/tool
# 使用disql连接,本地连接可省略ip
./disql
# 然后 connect 用户名/密码:端口号
connect SYSDBA/SYSDBA:5236
2.2.2 manager工具
# 进入到tool目录
cd /dm8/tool
# 运行manager工具
./manager
2.3 数据库的启动和关闭
2.3.1 数据库的实例状态
DM 数据库的启动顺序: shutdown -> mount ->open
Oracle 启动: shutdown -> nomount -> mount ->open
Shutdown: 关闭状态。
MOUNT :配置状态,此状态下不能访问数据库中数据文件的数据,可以访问 v$ 开头来源于
控制文件或内存中的表数据。配置状态,数据库不能对外提供正常服务,业务不能正常运行。
设置归档、迁移联机日志、设置主备集群主机、备机需要在配置状态。
OPEN 状态:打开状态,此时数据库对外提供正常服务。可以读写数据文件中的数据。
SUSPEND 状态:挂起状态,此时数据库只能读不能写。
DM 中 mount 和 open 可以相互转换, Oracle 中 mount 只能到 open , open 不能到 mount ;
DM 的 suspend 和 open 可以相互转换,但 mount 和 suspend 不能相互转换。
DM 没有 NOMOUNT 状态( oracle 有 NOMOUNT 状态)
2.3.2 数据库启动和关闭
(1)服务方式启动:使用systemctl命令,root用户执行
# 查看服务状态
systemctl status DmServiceTEST.service
# 关闭数据库服务
systemctl stop DmServiceTEST.service
# 启动数据库服务
systemctl start DmServiceTEST.service
# 重启数据库服务
systemctl restart DmServiceTEST.service
(2)DM服务查看器,root用户执行
cd /dm8/tool/
./dmservice.sh
(3)使用后台启动方式,dmdba用户执行(DmServiceXXXX,XXXX 是实例名)
#进入安装目录的bin目录下
cd /dm8/bin
# 启动数据库服务
./DmServiceTEST start
# 关闭数据库服务
./DmServiceTEST stop
# 启动到mount状态
./DmServiceTEST start mount
(4)使用前台启动方式,dmdba用户执行,前面三种启动,前提都是数据库已经注册 linux 服务。 前台启动方式没有这个限制。前台启动方式可以启动到 mount,也可以到 open。 按 CTRL+C 或者输入 exit 数据库即会关闭。
cd /dm8/bin
# 默认启动到 OPEN 状态
./dmserver /dm8/data/DMOA/dm.ini
# 启动到 mount 状态
./dmserver /dm8/data/DMOA/dm.ini mount
3.DMSQL
3.1 SQL分类
DML(Data Mannipulation Language) 数据操纵语言:
查询、操纵数据表资料行,包含: INSERT 、 DELETE 、 UPDATE 、 SELECT 、 MERGE
DDL(Data Definition Language) 数据定义语言:
建立、修改、删除数据库中数据表对象,包含: CREATE 、 ALTER 、 TRUNCATE 、 DROP 、
COMMENT ;
DCL(Data Control Language) 数据控制语言:
用于执行权限授予与收回操作,包含 :GRANT 、 REVOKE
TCL(Transactional Control Language) 事物控制语言:
维护数据的一致性,包含: commit 、 rollback 、 savepoint ;
TRUNCATE 和 DELETE 的区别:
DELETE 是 DML 语句, delete 操作会产生 redo 和 undo ,所以大量的 delete 数据很慢。 Delete 可以删除部分数据(带 where 条件删除),支持回滚 rollback 。 Delete 的数据支持闪回查询。 Delete 不立即释放空间。
TRUNCATE 是 DDL 语句,不会产生 redo 和 undo ,整表删除数据,大表的 truncate 也很快。 不支持删除部分数据,只支持整表删除,不支持回滚。不支持闪回查询。truncate 立即释放空间。
3.2 SQL查询
Select 查询字段信息,聚合函数
From 表名 / 视图名 / 子查询
Where 条件过滤 (>= 、 = , < , <>, in, like , is null, is not null , between and 等等 )
Group by 分组列( cube 、 rollup 小计合计)
Having 分组后聚合条件的过滤
Order by 排序列
3.3 按要求创建视图
CREATE VIEW TEST.VIEW_SALARY AS
SELECT B.DEPARTMENT_ID,B.DEPARTMENT_NAME,SUM(A.SALARY) SUMSALARY
FROM TEST.EMPLOYEE A,TEST.DEPARTMENT B
WHERE A.DEPARTMENT_ID=B.DEPARTMENT_ID
HAVING SUM(A.SALARY)>80000
GROUP BY B.DEPARTMENT_ID,B.DEPARTMENT_NAME;
总结
通过这次达梦数据库DM8-DCA的培训学习及考试,让我对达梦数据库有了更深的了解,不仅对我后续工作有很大帮助外,更是让我对达梦数据库的发展充满了信心。祝愿达梦数据库产品越来越好,构筑大数据中国梦。