注册
认识达梦
专栏/培训园地/ 文章详情 /

认识达梦

漏油刘⸂⸂⸜👊⸝⸃⸃ 2024/10/10 400 0 0
摘要

认识达梦

信息技术应用创新产业,不仅是数字经济的重要支撑,更是实现经济高质量发展的关键驱动力。在基础设施层的芯片、操作系统、数据库等核心领域,由于我国相关产业发展相对较晚,技术壁垒相对较高,已成为国产化替代的重点。尤其是在数据库领域,数据库作为企业存储和管理数据的核心系统软件,对上层软件应用或数据驱动商业决策起着关键的支撑作用,长期使用国外厂商产品,安全隐患较大。可以说,数据库的全面国产化,是大多数企业国产化替代的“重中之重”。

一. 达梦数据库的发展现状

国内自主研发关系型数据库的企业,单位基本上都是发源于上世纪90年代的,而且都是以大学,科研机构为主。到今天,形成四大数据库厂商:

  1. 达梦:由华中理工冯玉才教授创办,完全自主研发。以Oracle为参照,追赶对象。

  2. 人大金仓:由人民大学王珊教授创办,自主研发。普通的关系型数据库。

  3. 神舟通用:神舟集团与南大通用合作研发的关系型数据库。更多地用于数据分析领域。

  4. 南大通用:南开大学的背景,2010年左右自主研发的,基于列式储存的,面向数据分析,数据仓库的数据库系统。

二. 达梦数据库的基本概念介绍
达梦书数据库也属于关系型数据库 主要有以下几个概念:数据库、实实例、用户、表空间、模式、表、角色、数据文件。

1.数据库:
数据存储的物理介质。广义上讲仁和存储数据的物理介质都可以叫做数据库,例如一张excel,一份word文档。但是实际上,我们说的数据库一般指代MYSQL,MONGODB,ORACLE等之类的软件系统,这些系统出了提供数据的存储外,还提供一整套的相关工具或者接口进行对数据的管理,达梦数据库就是这样的一种系统。

2.数据库实例:
已实例化可存储数据的仓库,达梦数据库与Mysql数据库有一个很大区别是:Mysql服务启动后通过createdatabase语句创建N个数据库(数据库实例);而达梦数据库一个实例就只能挂一个数据库(即一个实例就是一个数据库),如果想创建多个数据库,则需配置启动相应数量的实例。达梦数据库的每一个实例有一些列的后台进程和内存结构嘛,这些都是相互独立的;

3.用户:
达梦数据库用户是创建在实例下的,因为实例是相互独立的,所有达梦数据库不同的实例下可以有相同的用户名。另外,在达梦数据中通过create user语句创建用户时,会同时创建一个同名的“模式”;也可以通过create schema 语句单独创建模式(特别注意的:在Oracle中,用户与schema是意义对应的,不能单独从创建模式,要想创建模式的需要通过创建一个同名的用户来实现),并授权给某个已存在的用户,因此在达梦数据库中用户是1:N的关系。(注:如果先通过create schema 创建了模式,在通过crate user创建同名用户,不能创建成功);
4.表空间:
是一个用来管理数据存储的概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属于一个表空间。可以将表空间理解为对应一块物理存储区,专门用来存储数据文具。实例化达梦数据库时,默认创建MAIN,ROLL,SYSTEM,TEAM及HAMIN五个表空间。ROLL,SYSTEM,TEAM表空间,系统会自行进行维护,用户所创建表(如果未指定存档表空间的话)默认存放在MAIN表空间。用户可以自定义表空间,然后创建用户时指定为默认表空间,也可以在建表时通过“tablespace SpaceName” 语句动态指定该表的存储表空间;

5.模式(schema):
如果仅使用过Mysql,而没有ORACLE数据库使用经验比较难理解。

关于模式有几点需要记住:

一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema;
一个用户还可以使用其他的schema(Oracle数据库也可通过权限管理实现访问其他schema);
创建模式不指定用户时,该模式默认为SYSDBA拥有;
在同一模式下不能存在同名对象,但在不同模式中的对象名称可以相同;
用户可以直接访问同名模式对象,但如果要要访问其他模式对象,则必须具有对象权限;
当用户要访问其他模式对象时,必须附加模式名作后缀(schema.table);
用户是用来连接数据库对象,而模式是用来创建及管理对象的。
6.表:
就是一个表空间

7.角色:
在达梦数据库中,每个用户都有角色。你可以为他分配特殊的权限,他决定了该用户有什么权限,比如DBA,拥有最高权限。补充说明一点是:实例化的数据库默认有三种角色DBA ,PUBLIC,RESOURECE.新建的用户只拥有PUBLIC角色,该用户基本上没有什么用,需要单独对他设置权限授权:

8.数据文件:
数据的物理载体, 说明一下:

“我们可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的床,Table(床)被放入每个房间中,不能放置在房间之外,那岂不是晚上睡觉无家可归了,然后床上可以放置很多物品,就好比 Table上可以放置很多列和行一样,数据库中存储数据的基本单元是Table,现实中每个仓库放置物品的基本单位就是床, User就是每个Schema的主人,(所以Schema包含的是Object,而不是User),user和schema是一一对应的,每个user在没有特别指定下只能使用自己schema(房间)的东西,如果一个user想使用其他schema(房间)的东西,那就要看那个schema(房间)的user(主人)有没有给你这个权限了,或者看这个仓库的老大(DBA)有没有给你这个权限了。换句话说,如果你是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是你的(包括房间),你有完全的操作权,可以扔掉不用的东西从每个房间,也可以放置一些有用的东西到某一个房间,你还可以给每个User分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Role了。”—摘自网络

三. 达梦数据库的基本使用
1.查询表空间
select * from V$TABLESPACE;
2.查询模式
//根据表空间查询表
select * from dba_tables where tablespace_name=‘TEMP’;

//object_name指模式名, UTAB用户表,STAB系统表
SELECT * FROM SYSOBJECTS WHERE schid = (SELECT object_id from all_objects where object_name = ‘CTISYS’ and object_type = ‘SCH’) and (SUBTYPE$ = ‘UTAB’ or SUBTYPE$ = ‘STAB’);
3.表空间脱机及上线
alter tablespace “DMHR” offline;
//同一表空间可以存在同名对象
alter tablespace “DMHR” online;
4.模式切换
//查询当前模式
SELECT SYS_CONTEXT (‘userenv’, ‘current_schema’) FROM DUAL;
//设置当前登录用户的默认模式
SET SCHEMA “SYSDBA”;
5.数据大小
//数据库占用空间
SELECT SUM(bytes) from dba_data_files;
//表大小
SELECT TABLE_USED_SPACE(‘DMHR’, ‘REGION’) * 1024;
6.归档模式
//归档是否打开
select arch_mode from v$database;
//归档信息
select * from V$DM_ARCH_INI;
7.系统数据查询
//系统所有表查询
select * from dba_tables;
//登录用户所有表查询
select * from user_tables;
//表空间查询
select * from user_tablespaces;
//系统所有用户查询
select * from dba_users;
四. 表空间
1.DM7表空间概述
在DM7数据库中,表空间是一种逻辑存储结构,数据库的对象如表、索引等在逻辑上都是存储在指定的表空间。数据库在初始化的时候,系统自动创建五个默认表空间SYSTEM,MAIN,ROLL,TEMP和HMAIN表空间。其中SYSTEM表空间是系统表空间,存储有数据字典信息,用户数据不能放在该表空间上。TOLL,TEMP和HAMIN表空间,有系统自动维护,不需要用户干预。初始的MAIN表空间为用户默认表空间。表空间只是一种逻辑结构,对应的物理储存结构为数据文件。也即是,用户的数据储存在表空间的对应数据文件上面。DM7数据库中,物理存储结构的数据文件后缀为DBF。系统提供v$tabalespace和v$datafile视图查询表空间和数据文件。

--查询表空间
SQL>select * from v$tablespace;

--查询数据文件
SQL>select * from v$datafile;

--查询表空间对应的数据文件
SELECT
ts.NAME,
df.PATH
FROM
V$TABLESPACE AS ts,
V$DATAFILE AS df
WHERE
ts.ID = df.GROUP_ID;
2.DM7表空间的穿件与删除
--创建表空间,最简洁形式
--仅指定数据文件路径,以及数据文件初始大小,单位为(MB)
--注意大小仅为数字,不能带M符号
CREATE TABLESPACE bookshop DATAFILE '/opt/bookshop.dbf' SIZE 128;

--创建表空间会自动创建如下属性
autoextend on
maxsize 33554431
CAHE = NORMAL
属性分别指:数据文件自动扩展,扩展最大大小,数据也的缓冲池名称

--创建表空间,指定非自动扩展
CREATE TABLESPACE bookshop DATAFILE '/opt/bookshop.dbf' SIZE 128 autoextend off;

--删除表空间
drop tablespace bookshop;

删除表空间时,改表空间上必须没有数据库对象,否则会删除失败

3.DM7表空间扩展
当未指定表空间自动扩展,或者是某一操作系统目录空间不足,数据库需要新的空间是,可以对表空间进行扩展操作。扩展有两种操作,一是新增数据文件;另外一种是增大已有的数据文件。

--表空间脱机处理
ALTER TABLESPACE bookshop OFFLINE;

--更改数据文件路径
ALTER TABLESPACE bookshop RENAME DATAFILE '/opt/book.dbf' TO '/data/book.dbf';

当该表空间有事务操作时,脱机处理会失败。更改数据文件路径,系统会自动修改控制文件,并将操作系统文件移动到新的路径。

--在使用脱机处理失效时,可以将数据库系统进行关闭处理,然后手动修改控制文件,并移动数据文件至新的目录后,重新启动数据库系统。
4.DM7表空间监控
监控表空间使用空间情况

--DM7 查询表空间使用
select
t.name tablespace_name,
d.free_sizeSF_GET_PAGE_SIZE()/1024/1024
||'M' free_space,
d.total_size
SF_GET_PAGE_SIZE()/1024/1024
||'M' total_space,
d.free_size*100/d.total_size "% FREE"
from
v$tablespace t,
v$datafile d
where
t.id=d.group_id;
5.DM7表空间备份
DM7数据库支持用户表空间的备份还原操作。表空间备份需要在联机状态下执行,并且需要开启数据库归档模式。这是因为,表空间的数据库对象的字典信息是存储在数据库的系统SYSTEM表空间中。表空间的还原恢复,只能在备份源库上联机执行。

--表空间全量备份
BACKUP TABLESPACE t1 FULL TO TS_BAK BAKFILE '/opt/tablespace_bak.bak' ;

--表空间还原
ALTER TABLESPACE t1 OFFLINE;
RESTORE TABLESPACE t1 FROM '/opt/tablespace_bak.bak' IDENTIFIED BY ABCDEF;
ALTER TABLESPACE t1 ONLINE;

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服