dm8数据库的安装和使⽤讲解Dm8数据库
1、数据库⾏业
1.1 关系型数据库
Oracle 20c
DB2(烟草、邮政)
Sqlserver 2014 2017
Mysql 8 开源(电商平台)
PG postgresql 开源
达梦 8 ⾃主、原创
⾦仓 PG
神通混元 pg mysql
南通 pg
⾼斯 pg
Oceanbase 阿⾥(蚂蚁⾦服)
TDSQL 腾讯
Sybase erp
1.2 ⾮关系型数据库
Mongodb ⽂档
Redis 内存Mem
cache 内存
TimesTen
hadoop 集合数据库
2、DM8 安装
2.1 查看软硬件信息
查看 cpu 信息
[root@localhost ~]# cat /proc/cpuinfo
要注意国产 cpu(飞腾、龙芯)
查看内存信息
[root@localhost ~]# free -m
注意:物理内存⾄少为 1G,swap 分区⼀般是物理内存的 1.5 倍
查看磁盘及分区信息[root@localhost ~]# fdisk -l
[root@localhost ~]# df -h
⽹络要求:
100m ⽹卡,⽀持 TCP/IP 协议
数据库要远程访问,应该要关闭防⽕墙或者是开放对应的端⼝号。
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# systemctl status firewalld
系统要求:
内核要在 2.6 以上
[root@localhost ~]# uname -ar
安装 gcc 包
[root@pos.d]# yum install -y gcc
2.2 规划路径
[root@pos.d]# mkdir -p /dm8
2.3 规划安装⽤户(不建议⽤ root)
[root@localhost dm8]# groupadd dinstall
[root@localhost dm8]# useradd -g dinstall dmdba
[root@localhost dm8]# passwd dmdba
更改⽤户 dmdba 的密码。
新的密码:
⽆效的密码:密码少于 8 个字符
重新输⼊新的密码:
passwd:所有的⾝份验证令牌已经成功更新。
drwxr-xr-x. 2 root root 6 11 ⽉ 23 11:06 /dm8
[root@localhost dm8]# chown dmdba:dinstall -R /dm8
[root@localhost dm8]# ls -ld /dm8
drwxr-xr-x. 2 dmdba dinstall 6 11 ⽉ 23 11:06 /dm8
2.4dmdba ⽤户环境变量配置(可选项)
[root@localhost dm8]# su - dmdba
[dmdba@localhost ~]# vi .bash_profile
// 在.bash_profile最后增加
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export DM_HOME=/dm8
export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH:$HOME/bin
export LD_LIBRARY_PATH=/dm8/bin:$LD_LIBRARY_PATH
环境变量⽣效:[dmdba@localhost ~]$ source .bash_profile
2.5 设置⽂件最⼤打开数
重启服务器⽣效
[root@localhost ~]# vi /etc/f
dmdba soft nofile 4096
dmdba hard nofile 65536
临时⽣效
[root@localhost ~]# ulimit -n 65536
2.6 数据库版本
开发版:不能作为商⽤,⽤时间和并发限制
标准版:⼩型应⽤,不⽀持集等⾼级特性
企业版:⽀持数据库⾼级特性,⽣产环境中使⽤最多
安全版:在企业版基础上,四权分⽴,安全性有进⼀步提⾼
2.7 数据库软件安装
GUI:
[root@localhost home]# mount -o loop /home/dm8_setup_rh7.iso /mnt mount: /dev/loop0 写保护,将以只读⽅式挂载
[dmdba@localhost ~]$ cd /mnt
[dmdba@localhost mnt]$ ./DMInstall.bin选择 key,点击下⼀步
没有 key 也可以安装,替换 key 在路径 $DM_HOME/bin,重启数据库实例⽣效。选择典型安装:选择安装路径:安装⼩结:
安装中:⽤ root 账号执⾏脚本:
查看 DmAP 服务
[dmdba@localhost bin]$ ./DmAPService status
[dmdba@localhost tool]$ ./dmservice.sh
bin:达梦数据库命令,服务,库⽂件
bin2 : utf8
drivers :驱动
:许可信息
:版本信息
uninstall uninstall.sh:数据库卸载脚本
include :c 语⾔头⽂件
samples :⽰例
desktop :桌⾯
jar:jar 包(快速装载,导⼊导出,⽇志挖掘)
log:数据库⽇志信息
script:脚本
Web :dem 相当于 oracle oem
doc:⼿册
jdk :java 包
tool :客户端⼯具
CLI(命令⾏安装):
[dmdba@localhost mnt]$ ./DMInstall.bin -i
2.8 数据库软件的卸载
GUI:
[dmdba@localhost dm8]$./uninstall.sh
CLI:
[dmdba@localhost dm8]$ ./uninstall.sh -i
注意:⽣产环境中在卸载数据库之前,⼀定要记得先做好备份。
3、创建数据库实例
⼀个数据库软件是可以创建多个实例,通过端⼝号区别,达梦默认端⼝号是 5236 GUI:
[root@localhost ~]# su - dmdba
connect和join的区别
上⼀次登录:⼀ 11 ⽉ 23 11:30:46 CST 2020pts/3 上
[dmdba@localhost ~]$ export DISPLAY=192.168.128.1:0.0
[dmdba@localhost ~]$ xhost +
access control disabled, clients can connect from any host
xhost: must be on local machine to enable or disable accesscontrol. [dmdba@localhost ~]$ cd /dm8/tool/
[dmdba@localhost tool]$ ./dbca.shroot 执⾏脚本查看数据库是否启动:
[root@localhost ~]# ps -ef|grep dmserver
[root@localhost ~]# netstat -ntl|grep 5236
[dmdba@localhost bin]$ ./DmServiceDMSERVER status
[dmdba@localhost tool]$ ./dmservice.sh
CLI:
建库查看帮助:[dmdba@localhost bin]$ ./dminit help
[dmdba@localhost
bin]$
./dminit
db_name=DAMENG02
instance_name=DMSERVER2
port_num=5237 path=/dm8/data
注册服务查看帮助:
脚本所在路径 /dm8/script/root
[root@localhost root]# ./dm_service_installer.sh -h
[root@localhost root]# ./dm_service_installer.sh
-t dmserver -p DMSERVER2 -dm_ini
/dm8/data/DAMENG02/dm.ini
4、数据库实例管理
4.1 数据库状态
Shutdown:关闭状态
Mount:配置状态
Open:数据库打开状态,对外提供服务
Suspend:挂起状态
4.2 数据库状态切换
Shutdown - mount
Shutdown - open
Mount - open
Open - mount(oracle 不⽀持)
Suspend - open
Open - suspend
Open - shutdown
Suspend 状态只能查询,不能写
4.3 数据库启动过程
Shutdown-mount
根据 dm.ini 配置⽂件中的参数分配内存,启动后台进程或者线程,到控制⽂件并打开控
制⽂件。
Mount-open
根据控制⽂件打开所有的数据⽂件以及重做⽇志⽂件,校验数据库是否处于⼀致性状态。
4.4 数据库启动关闭
4.4.1 通过前台⽅式启动关闭数据库
[dmdba@localhost bin]$ ./dmserver /dm8/data/DAMENG/dm.ini
[dmdba@localhost bin]$ exit
4.4.2 通过后台进程形式启动关闭数据库
[dmdba@localhost bin]$ ./DmServiceDMSERVER start
[dmdba@localhost bin]$ ./DmServiceDMSERVER stop
4.4.3 通过服务查看器启停数据库(root)
5、数据库⼯具
5.1 disql
bin
[dmdba@localhost bin]$ ./disql sysdba/Dameng123:5236
tool 相当于是 oracle 的 sqlplus /nolog
[dmdba@localhost tool]$ ./disql
disql V8
SQL> select status$ from v$instance;
未连接
SQL> conn sysdba/Dameng123:5236
5.2manager
[dmdba@localhost tool]$ ./manager
5.3console
[dmdba@localhost tool]$ ./console
查看和修改参数
做冷备和恢复
5.4DTS 迁移⼯具
5.5 性能监视⼯具
monitor
6、DMSQL
SQL:结构化查询语⾔
DMSQL 基于 sql92,sql99 标准
6.1DMSQL 分类
DML(数据库管理):select、insert、update、deleteDDL(数据库定义):create drop alter table truncate DCL(权限控制):grant、revoke
TCL(事务控制):commit rollback
6.2 sql 的书写规范
关键字不能被拆分
不区分⼤⼩写,除了“”’’以外
可以换⾏
6.3 简单查询
语法
Select () from ();
单列查询
查询员⼯表的姓名
SQL> select employee_name ployee;
多列查询
查询员⼯表的姓名,部门编号,⼯资
select employee_name,department_id,salary ployee;
查询所有列
select * ployee;
对列起别名
查询员⼯的姓名和⼯资
select employee_name,salary as ployee;
select employee_name,salary ployee;
连接||
查询“***的⼯资是:***”
select employee_name||'的⼯资是:'||salary ployee;
去重复 distinct(隐藏排序)
查询部门编号
select distinct department_id ployee
表达式: salary+1000
为所有⼈⼯资加 1000
select employee_name,salary,salary+1000 as total ployee;
6.4 过滤查询
语法
Select () from () where ()
⽐较运算符、逻辑运算、in、is null/is not null,between*** and,like
⽐较运算符:= > >= < <= <> !=
Select employee_name,ployee where employee_name='马学铭'; Select employee_name,salary ployee where salary>=30000;
逻辑运算符:and or not
select employee_name,department_id,salary ployee
where department_id=101
and salary>=10000;
select employee_name,department_id,salary ployee
where department_id=103
or salary>=25000;
模糊查询:like % _
%匹配 0 个或多个字符
Select employee_name,salary ployee where employee_name like '李%';
_匹配 1 个字符
Select employee_name,salary ployee where employee_name like '李_';
IN
select employee_name,department_id
ployee where department_id in
(101,102);
Is null/is not null null 为空,不等于 0
select employee_name,job_id ployee where job_id is null; and ...
select employee_name,department_id,salary ployee where
salary between 10000 and 20000;
6.5 排序
升序 asc
select employee_name,salary ployee order by salary asc;
降序 desc
select employee_name,salary ployee order by salary desc;
6.6 分组函数
Count max min avg sum
语法:
Select () from () where () group by () having ();
除了聚合函数不⽤跟在 group by 后⾯,其他 select 列必须要跟在 group by 后⾯,having 是对 group by 的进⼀步过滤,不能单独使⽤。
求部门⼯资和⼤于 10 万的部门
select department_id,sum (salary) ployee
group by department_id
having sum (salary) >100000;
6.7 多表连接查询
6.7.1 内连接
结果集只显⽰满⾜条件的记录
⾃然连接
查询不需要指定连接列,根据列名⾃⼰过滤,两个表连接的列名和数据类型要⼀致。
select employee_name,department_id,department_name ployee natural join dmhr.department;
交叉连接(笛卡集)
select count(*) ployee;--856
select count(*) from dmhr.department;--46
39376
select count(*) ployee cross join dmhr.department;
select count(*) ployee,dmhr.department;
USING
在满⾜多个连接列时,可以指定⼀个列做连接,连接的列前⾯不能加表名或者是前缀。
select
employee_name,department_name,department_id
from
join
dmhr.department
using (department_id);
ON
select a.city_name,b.street_address from dmhr.city a join dmhr.locationb
on a.city_id=b.city_id
Hash join
可以通过 hint 强制⾛ hash join
优化器 CBO 根据⼩表的连接列⽣成 hash 值,根据 hash 值去连接⼤表,扫描⼤表ployee_name,d.department_name ployee e inner hash join
dmhr.department d
on e.department_id=d.department_id;
6.7.2 外连接
结果集除了显⽰满⾜条件的记录,不满⾜的也显⽰,⽤ null 代替
左外连接 left join
把 left join 左边的全部显⽰出来,右边的只显⽰满⾜条件的记录,不满⾜条件的⽤ null 代替
select a.city_name,b.street_address from dmhr.city a left join dmhr.locationb
on a.city_id=b.city_id;
右外连接 right join
把 right join 右边的全部显⽰出来,左边的只显⽰满⾜条件的记录,不满⾜条件的⽤ null 代
select a.city_name,b.street_address from dmhr.city a right join dmhr.locationb
on a.city_id=b.city_id;
全外连接 full join
左外+右外
select a.city_name,b.street_address from dmhr.city a full join dmhr.locationb
on a.city_id=b.city_id;
6.8 ⼦查询
当⼀个查询是另⼀个查询的条件时,就叫⼦查询。⼦查询先运⾏,⼦查询的结果是主查询的
件。⼦查询可以嵌套⼦查询,⼦查询可以做为临时表做连接。
单⾏⼦查询
⼀次只返回⼀条记录
select
employee_name,department_id
from
where
EMPLOYEE.DEPARTMENT_ID=(select EMPLOYEE.DEPARTMENT_ID ployee
where employee_name='马学铭');
多⾏⼦查询
⼀次返回多条记录
select employee_name,department_id,salary ployee where salary > all(select
salary ployee
where department_id=102);
7. DM8体系结构
DMSERVER:C/S架构,由客户端+服务器构成
数据库=数据库⽂件+实例
数据库⽂件:配置⽂件、控制⽂件、数据⽂件、重做⽇志⽂件、归档⽇志⽂件、跟踪⽇志⽂件、
备份⽂件
实例:⼀组进程/线程+共享内存
实例⼜分为单实例和集(dsc)
单实例就是⼀个实例管理⼀个数据库,dsc是多个实例管理⼀个数据库,类似于oracle rac。
7.1DM8存储结构
7.1.1物理结构
配置⽂件
以.ini结尾的⽂件
dm.ini满⾜oracle pfile+spfile⽂件
可以查看视图v$dm_ini
select para_name,para_value,para_type from v$dm_ini ;
Sys:系统级,影响全局
Session:会话级,针对当前会话有效
Readonly:只读,只能⼿动编辑参数⽂件
Infile:静态参数,实例重启才能⽣效。
修改参数有以下⼏种⽅法:
1)Vi dm.ini 修改完成之后,⽆论是动态还是静态参数,都需要重启数据服务;
2)Sp_set_para_value(参数类型,’参数名’,参数值) ;
1等于both,即改即⽣效,会同时改变内存中和参数中的值。
2等于infile,只改变参数中的值,需要重启才能⽣效。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。