DM8软件的安装

安装环境配置

创建安装用户和组
安装用户和组:dmdba,dinstall,-d用户登录的起始目录 -m自动创建用户登入的目录 -s用户登录后使用的shell。

[root@localhost /]# groupadd dinstall 
[root@localhost /]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
[root@localhost /]# passwd dmdba
[root@localhost /]# id dmdba

达梦数据库(DM8)基本使用-编程知识网
规划软件的安装路径
对应安装路径的权限为root,需要修改对应的权限用户组和用户,不然无法安装到对应的目录。

[root@localhost /]# mkdir -p /dm8 
[root@localhost /]# chown dmdba:dinstall -R /dm8
[root@localhost /]# ls -ld /dm8

DM8软件安装

挂载安装软件

[root@localhost opt]# mount -o loop /opt/dm8_20220701_x86_rh6_64_ent_8.1.2.128.iso /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.

安装数据库
(1)图形化安装

[dmdba@localhost mnt]$ ./DMInstall.bin

(2)命令行安装

[dmdba@localhost mnt]$ ./DMInstall.bin -i

DM8软件卸载

达梦数据库(DM8)基本使用-编程知识网
图形化

[dmdba@localhost dm8]$ ./uninstall.sh

命令行

[dmdba@localhost dm8]$ ./uninstall.sh -i

安装目录结束
script脚本文件,/script/root下与数据库服务相关
web:达梦的dem,可以监控数据库的性能,部署数据库守护集群等,数据迁移等
sample:一些示例库的脚本文件
tool:各种客户端

数据库实例管理

创建数据库实例
(1)配置助手创建
若安装使用图形化可以直接点击初始化,若命令行方式,可以进入/dm8/tool下执行./dbca.sh。注:使用用户dmdba创建数据库实例
达梦数据库(DM8)基本使用-编程知识网
库名和实例名创建后不能修改,端口号可以修改。
达梦数据库(DM8)基本使用-编程知识网
达梦数据库(DM8)基本使用-编程知识网
数据库创建完成后一定要用root去执行配置脚本文件

[root@localhost 桌 面 ]# mv /dm8/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service 
[root@localhost 桌面]# systemctl enable DmServiceDMSERVER.service [root@localhost 桌面]# systemctl start DmServiceDMSERVER.service 

(2)dminit创建
在/dm8/bin目录下执行,命令行创建成功后没有服务,需要去执行脚本文件注册。

[dmdba@localhost bin]$ ./dminit db_name=TEST instance_name=TEST port_num=5237 path=/dm8/data

无法通过服务的方式后台启动数据库,可以通过root用户命令行手动注册数据库服务,也可以通过图形化的方式去注册服务

[root@localhost root]# ./dm_service_installer.sh -t dmserver -p TEST -dm_ini /dm8/data/TEST/dm.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceTEST.service → /usr/lib/systemd/system/DmServiceTEST.service.
创建服务(DmServiceTEST)完成

设置开机自动启动数据库服务

[root@localhost root]# systemctl enable DmServiceTEST.service

数据库连接
(1)disql工具
disql在bin目录下、tool目录下也有,连接方法不同
在bin目录下

[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@192.168.127.137:5237
服务器[192.168.127.137:5237]:处于普通打开状态
登录使用时间 : 2.133(ms)
disql V8

达梦数据库(DM8)基本使用-编程知识网
在tool目录下,需要connect

[dmdba@localhost tool]$ ./disql
disql V8
SQL> connect SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.027(ms)

(2)manager工具
dmdba用户在tool下启动manager工具,输入实例信息连接
达梦数据库(DM8)基本使用-编程知识网
数据库状态
状态与状态之间可以切换,OPEN和MOUNT状态,OPEN和SUSPEN可以相互切换,不能MOUNT到SUSPEND之间切换。
达梦数据库(DM8)基本使用-编程知识网MOUNT:可以进行一些数据库的配置,如归档等;
SUSPEN:挂起状态,只读不能写;
OPEN:打开状态,能正常对外提供服务;
SHUTDOWN:数据库关闭状态。

SQL> select status$ from v$instance;行号     STATUS$
---------- -------
1          MOUNT已用时间: 0.598(毫秒). 执行号:701.
SQL> alter database suspend;
alter database suspend;
第1 行附近出现错误[-510]:系统处于MOUNT状态.
已用时间: 0.679(毫秒). 执行号:0.

数据库的启动和关闭
(1)通过前台的方法启动和关闭数据库
比较适用于没有注册数据库服务,关闭直接输入exit

[dmdba@localhost bin]$ ./dmserver /dm8/data/TEST/dm.ini

(2)进程的形式启动和关闭数据库(后台,需要注册数据库服务)。

[dmdba@localhost bin]$ ./DmServiceTEST start
Starting DmServiceTEST:                                    [ OK ]
[dmdba@localhost bin]$ ./DmServiceTEST stop
Stopping DmServiceTEST:                                    [ OK ]

(3)通过服务查看器的形式启动和关闭数据库,需要使用root用户

DM常用工具介绍

DM管理工具manager
数据库日常的运维,对数据库、表空间、表做热备。
DM控制台工具console
查看和修改服务器的参数,做数据库的冷备,整库还原和表空间还原。
DM迁移工具dts
达梦数据库(DM8)基本使用-编程知识网
一个表分为表结构定义,表数据。对每个表使用单独的数据脚本文件(每一个表都会单独的生成一个sql文件,需要指定目录),指定表定义和表数据目录。
达梦数据库(DM8)基本使用-编程知识网
创建成功对应目录下会生成脚本文件。
达梦数据库(DM8)基本使用-编程知识网
DM性能监视工具monitor
实现数据库简便的运维
达梦数据库(DM8)基本使用-编程知识网

DMSQL

== 分类
DML:数据操纵语言,查询、操纵数据库表信息
DDL:数据库定义语言,建立,修改,删除表数据表对象
DCL:数据控制语言,和权限相关,执行权限的授予与收回
TCL:事务控制语言,维护数据的一致性,commit,rollback
字符串大小写敏感
简单查询
(1)select () from ();
第一个括号:对列起别名,表达式,连接列||,去重
(2)自动补全代码设置
点击窗口-选项启动。达梦数据库(DM8)基本使用-编程知识网
过滤查询
select () from () where()
第三个括号可以为比较运算符、逻辑运算符等。
is null为空但不等于0
Like 模糊查询
%匹配0个活多个字符
_匹配一个字符
排序
分为降序(DES)和升序(AES),默认情况为升序。
select employee_name,salary
from dmhr.EMPLOYEE
order by 2;–2指的是查询中的第二列
分组汇总
聚合函数:count、sum、avg、min、max
select () from () where() group by() having()
分组之前可以使用where进行过滤,分组之后还要进行进一步过滤是就要使用having,没有分组就不能进行having,与where条件有点相似。
除了count等聚合函数外,其他的都要出现在group by之后,才可以成为查询列。
例:统计部门人数大于20个人的

select count(*),department_id 
from dmhr.EMPLOYEE
group by EMPLOYEE.DEPARTMENT_ID
having count(*)>20;

内连接
只返回满足条件的记录
自然连接,交叉连接(笛卡尔积)、hash join、USING子句、ON子句,自连接。
(1)自然连接:自动去做连接,以两个表中具有相同名字的列为条件创建等值连接(如果只是列名相同而数据类型不同,则会产生错误),不需要手动执行连接列。natural join
(2)交叉连接:cross join两个表的乘积,工作中避免写笛卡尔积,不给连接条件也是笛卡尔积
(3)using子句:当出现多个连接列时,可以指定一个连接列,不能对其起别名,加前缀等。
(4)on子句

select  a.EMPLOYEE_NAME,b.DEPARTMENT_NAME
from DMHR.EMPLOYEE a
join DMHR.DEPARTMENT b
on a.DEPARTMENT_ID=b.DEPARTMENT_ID;
--等价于
select  a.EMPLOYEE_NAME,b.DEPARTMENT_NAME
from DMHR.EMPLOYEE a,DMHR.DEPARTMENT b
where a.DEPARTMENT_ID=b.DEPARTMENT_ID;

(5)hash join:两个大表做hash join性能更高一些,没有涉及到排序

外连接
不满足条件的也返回用null代替
左右外连接,全外连接
(1)左外连接:左边对应列的值全部返回,右边的对应一一匹配
(2)右外连接:右边对应全部列都返回,左边的一一对应,没有的用null返回
(3)全外连接(full outer join)
子查询
当一个查询是另一个查询的条件的时候,子查询先运行。
单行子查询:子查询的结果只返回一条 ==,>=,<=
多行子查询:子查询的结果返回多条记录

DM8体系结构

DMSERVER:数据库实例(一组后台进程或线程+共享内存)+数据库(数据库文件:配置文件、控制文件、重做日志文件、数据文件、归档文件、日志文件、备份文件、事件日志文件)
单实例:一个实例管理一个数据库
DMDSC:多个实例管理一个数据库
查看进程 ps -ef|grep dmserver
查看线程 select * from v$threads;

物理存储

(1)修改配置文件
查询视图 select para_name,para_value,para_type from vdmini;参数类型:session,sys,infile,readonlySession:会话级,针对当前会话有效Sys:动态,系统级的参数,即改即生效Infile:静态参数,修改参数后,重启数据库实例生效Readonly:只读参数,只能通过vi去修改。查不出来可能是隐含参数需要通过vdm_ini; 参数类型:session,sys,infile,read only Session:会话级,针对当前会话有效 Sys:动态,系统级的参数,即改即生效 Infile:静态参数,修改参数后,重启数据库实例生效 Read only:只读参数,只能通过 vi 去修改。 查不出来可能是隐含参数需要通过vdmini;参数类型:session,sys,infile,readonlySession:会话级,针对当前会话有效Sys:动态,系统级的参数,即改即生效Infile:静态参数,修改参数后,重启数据库实例生效Readonly:只读参数,只能通过vi去修改。查不出来可能是隐含参数需要通过vdm_ini视图去查找
1、sp_set_para_value(参数类型,参数名,参数值)
参数类型为 1:动态参数 参数类型为 2:静态参数
2、alter system set
静态spfile 动态both
3、vi/console
通过 Vi /console 工具修改参数,无论是静态参数还是动态参数都需要重启数据库生 效;read only (手动)类型参数不能通过方法 1 和方法 2 修改,只能通过方法 3 修改,隐含参数只能通过方法1和方法2中修改,因为在vi中无法查看到。
(2)控制文件
dm控制文件只有一个,以.ctl结尾的文件,不能做多路复用。
(3)重做日志文件
达梦数据库默认由两个重做日志文件,记录数据库发生变更的信息。日志文件特点:循环写,可覆盖。达梦数据库没有重做日志组,重做日志文件可以增加但是不能删除,不能改大不能改小。
(4)数据文件
在建表空间的时候会去建数据文件。
(5)日志文件
(6)备份文件
备份文件是数据库在某个时间点做的副本
.meta 备份元数据的信息。
.bak 备份的数据库的真实的信息
(7)归档日志文件
数据库开启归档后,在重组日志覆盖前拷贝到归档路径下做副本。

逻辑结构

连续的页组成簇,页创建之后不能修改,段可以跨多个数据文件(索引段,回滚段,会占用存储空间),表空间(段是存放在表空间中的)。

表空间管理

select * from v$tablespace;
SYSTEM:达梦的系统表空间,存放数据库关键性的信息。例如:数据字典和动态视图。
ROLL:达梦的回滚表空间,存放的数据库在运行中产生的回滚记录。
MAIN:达梦的默认表空间,创建用户时不指定表空间,默认表空间就是 MAIN。
TEMP:达梦的临时表空间,用来排序,临时表的存放。

创建表空间

创建表空间 TBS,数据文件存放路径/dm8/data/DAMENG,包含两个数据文件,分别为 TBS01.DBF 和 TBS02.DB,每个数据文件的初始大小为 100M,开启自动扩展,每次扩展 2M,最 大可扩充到 10G.
达梦数据库(DM8)基本使用-编程知识网

create tablespace "TBS" datafile '/dm8/data/DAMENG/TBS01.DBF' size 100 autoextend on next 2 maxsize 10240, '/dm8/data/DAMENG/TBS02.DBF' size 100 autoextend on next 2 maxsize 10240 CACHE = NORMAL;

维护表空间

(1)表空间不足
添加数据文件

SQL> alter tablespace "TEST" add datafile '/dm8/data/DAMENG/TEST02.DBF' size 32 autoextend on next 1 maxsize 1024;

resize数据文件大小

alter tablespace "TEST" resize datafile 'TEST01.DBF' to 100;

(2)迁移表空间数据文件
查看表空间状态

select tablespace_name,status from dba_tablespaces;

0 代表:在线,联机 1 代表:离线,脱机
图形化界面直接修改表空间到对应目录就行
达梦数据库(DM8)基本使用-编程知识网达梦数据库(DM8)基本使用-编程知识网

alter tablespace "TEST" offline;
alter tablespace "TEST" rename datafile 'TEST01.DBF' to '/dm8/TEST01.DBF';
alter tablespace "TEST" online;

(3)修改TEMP表空间大小

sp_set_para_value(2,'TEMP_SIZE',100)

(4)表空间删除

drop tablespace "TEST";

用户管理

查看用户

select * from dba_users;
企业版用户:
SYSDBA:数据库管理员
SYS:不能登录,存放的是数据字典和动态性能视图
SYSAUDITOR:数据库审计员,可以创建审计账号,审计策略,查看审计记录。
SYSSO:数据库安全员,可以创建数据库安全员和安全规则。
安全版用户:在企业版基础上,新增数据库对象操作员 SYSDBO。

创建用户

权限:系统权限(创建和删除表之类的权限)、对象权限(对表中的数据进行增删改查之类)、角色。
存储位置:表空间,如果不指定表空间,默认表空间就是 main
创建 TEST 用户,密码为 Dameng123,默认表空间为 TEST。用户拥有创建表、创建视图的权 限。

create user "TEST" identified by "Dameng123" password_policy 0
default tablespace "TEST";
grant "PUBLIC","SOI","VTI" to "TEST";
grant CREATE TABLE,CREATE VIEW to "TEST";
grant select on DMHR.EMPLOYEE to "TEST";

创建角色

角色就是一组权限的集合,使用角色可以方便权限管理,角色可以被授予给角色,也可以被授予给用户。

create role "R1";
grant "RESOURCE" to "R1";
grant CREATE TABLE,CREATE INDEX to "R1";
grant SELECT on "DMHR"."CITY" to "R1" with grant option;
grant UPDATE("EMPLOYEE_NAME") on "DMHR"."EMPLOYEE" to "R1";

权限授予grant
权限回收revoke

revoke CREATE INDEX from "R1";
revoke UPDATE("EMPLOYEE_NAME") on "DMHR"."EMPLOYEE" from "R1" cascade;--列级回收不行
revoke update on dmhr.employee from r1;

达梦权限授予可以到列级别,权限回收必须按表级回收。

修改用户

锁定/解锁用户
alter user test account lock;
alter user test account unlock;
修改用户的权限
达梦数据库(DM8)基本使用-编程知识网

模式对象管理

模式管理

模式:一组数据库对象的集合。
模式对象:表、视图、约束、索引、序列、触发器、存储过程/函数、包、同义词、类、域。
(1)模式切换
set schema dmhr;
达梦数据库(DM8)基本使用-编程知识网
(2)创建模式
模式创建好后不能再修改模式对应的拥有者。

CREATE SCHEMA "ABC" AUTHORIZATION "SYSDBA";

(3)删除模式

drop schema "ABC" cascade;

一个用户可以有多个模式,一个模式只能属于一个用户。

表管理

DM 数据库分为系统表和用户表。
系统表是数据库初始化创建的表,存放的是数据库关键性的信息。
用户表是自定义的表,存放真实数据。
约束:非空约束、唯一约束、主键约束、外键约束、检查约束
非空约束
create table test.test1(id int not null);–不能为空
获取表结构信息 select SYS.DBMS_METADATA.get_ddl(‘TABLE’,‘TEST1’,‘TEST’) from dual;
达梦数据库(DM8)基本使用-编程知识网 唯一约束
用图形化界面时候,默认大小写敏感,尽量用大写,在编辑器中没有用引号之类的会自动转换为大写。
达梦数据库(DM8)基本使用-编程知识网

create table "TEST"."TEST2"
("ID" INT,"NAME" VARCHAR(30)
)
storage(initial 1, next 1, minextents 1, fillfactor 0);
alter table "TEST"."TEST2" add  unique("NAME");
--建表时创建约束
create table test.test3(id int,name varchar(30) unique);

主键约束
主键约束=非空+唯一约束,一个表只能有一个主键

--增加约束
alter table "TEST"."TEST4" add constraint "PK_ID" primary key("ID");
--建表时创建
create table test.test4(id int constraint pk_id primary key,name varchar(20));
--删除约束
alter table drop constraint pk_id;

外键约束
必须依赖参照于某个表的主键

--创建表时添加外键约束,外键约束到test4的id字段
create table test.test5(id int references test.test4(id),name varchar(20));
--创建表后添加外键约束
alter table "TEST"."TEST5" add constraint "CONS134218868" foreign key("ID") references "TEST"."TEST4"("ID");

检查约束

create table test.test7(id int,name varchar(30),check(id >20));
alter table test.test5 ADD CHECK(id>20);

修改表

--增加列
alter table test.test1 add column(name varchar(50));
--删除列
alter table test.test1 drop column "NAME";
--对表进行重命名
alter table test.test6 rename to test8;
--对列进行重命名
alter table test.test1 rename column name to name2;
--修改列的数据类型
alter table test.test1 modify "NAME" varchar2(50);
--删除表
drop table test.test1 restrict;

视图管理

DM 视图:简单视图、复杂视图、物化视图
创建视图
创建视图的语法: create view **** as select ****;

create view test.view_data as
select a.employee_name,a.SALARY,b.DEPARTMENT_NAME
from DMHR.EMPLOYEE a,dmhr.DEPARTMENT b
where A.DEPARTMENT_ID=B.DEPARTMENT_ID
and a.DEPARTMENT_ID=101;

更新视图
更新视图时不能更新复杂视图
删除视图
drop view test.VIEW_DATA restrict;

索引管理

索引是一种数据库对象,索引会占用存储空间。 索引作用:加快查询速度,对少量更新数据可以提高速度,延迟插入。
创建索引
create index dmhr.ind_emp_name dmhr.employee(employee_name);
重建索引
alter index dmhr.ind_emp_name repuild;
删除索引
drop index dmhr.ind_emp_name;

备份还原

冷备(脱机备份)不需要开启归档,热备需要开启归档
完全备份:备份整个数据库或者备份整个表空间所有的数 据;
增量备份:在上一次完全备份、增量备份后,以后每次只备份修改过的数据页
还原是备份的逆向过程,通过读取备份的信息,将备份中的信息重新生成文件拷贝到数据库 对应的目录下。
恢复分为:完全恢复和不完全恢复。
恢复通过归档日志恢复,还原通过备份集还原。
后缀.bak的文件,是备份成功后生成的一个或多个备份片文,用来存放备份数据。
后缀.meta是备份的元数据文件。
数据库、归档可以热备,但表和表空间必须热备,表备份热备无需开归档;DM 仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具 DMRMAN 执行。执行表还原,数据库必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行表还原。表还原不需要配置归档,因为表还原是联机完全备份还原,所以不需要借助本地归档日志进行恢复。

物理备份还原

(1)冷备
冷备需要数据库关闭,dmap服务开启
图形化console(不支持联机备份)

[dmdba@localhost tool]$ ./console

达梦数据库(DM8)基本使用-编程知识网
dmrman工具(只能做冷备)

RMAN> backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/backup';

(2) 热备
热备需要数据库打开,开启归档模式,dmap服务开启
点击”管理服务器“-》”系统设置“-》点击”归档“-》“转换”-》“归档配置”-》“打开”-》“转换”。
达梦数据库(DM8)基本使用-编程知识网
达梦数据库(DM8)基本使用-编程知识网

alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/dm8/arch, TYPE=LOCAL, FILE_SIZE=64, SPACE_LIMIT=0, ARCH_FLUSH_BUF_SIZE=0';
alter database open;
--查看归档模式
select name,arch_mode from v$database;

1、整库备份
backup database full backupset '/dm8/backup/full’;
2、表空间备份
图形化
达梦数据库(DM8)基本使用-编程知识网backup tablespace full backupset '/dm8/backup/ts’;
3、表备份
达梦数据库(DM8)基本使用-编程知识网backup table test.test2;
(3)还原恢复
1、整库还原恢复
校验备份集

RMAN> check backupset '/dm8/backup';
check backupset '/dm8/backup';
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]                                 
check backupset successfully.
time used: 196.673(ms)

console恢复
数据库还原
达梦数据库(DM8)基本使用-编程知识网
数据库恢复,选择从指定归档恢复
达梦数据库(DM8)基本使用-编程知识网
更新魔数db_magic
达梦数据库(DM8)基本使用-编程知识网
dmrman工具

RMAN> restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup';
RMAN> recover database '/dm8/data/DAMENG/dm.ini'  with archivedir '/dm8/arch';
RMAN> recover database  '/dm8/data/DAMENG/dm.ini' update db_magic;

2、表空间还原
表空间备份只能联机备份,表空间还原只能脱机还原,表空间还原不需要更新魔数。
console工具
表空间还原
达梦数据库(DM8)基本使用-编程知识网
表空间恢复
达梦数据库(DM8)基本使用-编程知识网
dmrman工具

RMAN> restore database '/dm8/data/DAMENG/dm.ini' tablespace bookshop from backupset '/dm8/backup';
RMAN> recover database '/dm8/data/DAMENG/dm.ini' tablespace bookshop;

逻辑备份还原

(1)导出
四种级别:
Full:全库导出
Owner:用户级别
Shcemas:模式级别
Tables:表
1、整库导出

达梦数据库(DM8)基本使用-编程知识网
[dmdba@localhost bin]$ ./dexp SYSDBA/SYSDBA@LOCALHOST:5236 DIRECTORY=/dm8/backup FILE=full.dmp FULL=Y LOG=full.log
2、用户级别导出

达梦数据库(DM8)基本使用-编程知识网
[dmdba@localhost bin]$ ./dexp SYSDBA/SYSDBA DIRECTORY=/dm8/backup FILE=test2.dmp OWNER=TEST LOG=test2.log
3、模式级别导出
达梦数据库(DM8)基本使用-编程知识网[dmdba@localhost bin]$ ./dexp SYSDBA/SYSDBA DIRECTORY=/dm8/backup FILE=dmhr2.dmp SCHEMAS=DMHR LOG=dmhr2.log

4、表级别导出
达梦数据库(DM8)基本使用-编程知识网[dmdba@localhost bin]$ ./dexp SYSDBA/SYSDBA DIRECTORY=/dm8/backup FILE=tables2.dmp TABLES=DMHR.DEPARTMENT LOG=tables2.log
(2)导入
将 DMHR 模式的数据导入到 TEST 模式
./dimp SYSDBA/SYSDBA directory=/dm8/backup file=dmhr.dmp log=imp_dmhr.log remap_schema=DMHR:TEST

作业管理

创建代理环境
(1)命令行创建代理环境

SP_INIT_JOB_SYS(1);

(2)图形化
达梦数据库(DM8)基本使用-编程知识网新建作业
创建 JOB1,每周日 22:00 对数据库做完全备份。
达梦数据库(DM8)基本使用-编程知识网
达梦数据库(DM8)基本使用-编程知识网