DM8数据库体系架构

DM8数据库体系架构

DMSERVER:C/S 架构,由客户端和服务器两块构成。
数据库文件:配置文件、控制文件、数据文件、重做日志文件、归档日志文件、跟踪日志文 件、备份文件。
实例:一组后台进程或者线程+共享内存,实例又分为单实例和集群(dsc)。
单实例数据库:一个实例来管理一个数据库。
多实例数据库(集群):多个实例管理一个数据库,dsc(用于多并发,高负载)是多个实例管理一个数据库。

1.DM8数据库组成

DM8 数据库是由数据库和实例构成

  • 数据库
    DM数据库指的是磁盘上存放在DM数据库中的数据的集合。
  • 实例
    实例一般是由一组正在运行的DM后台进程/线程以及一个大型的共享内存构成。

2.DM8 存储结构

2.1物理存储结构

1).配置文件
配置文件是以.ini 结尾的文件(服务配置,守护配置,复制配置,审计配置)包括控制文件,数据文件,重做日志文件,备份文件,归档日志文件,跟踪日志文件等。

查询视图
SQL>desc v$dm_ini 
SQL>select para_name,para_value,para_type from v$dm_ini;

在这里插入图片描述
注:
Sys:系统级,影响全局
Session:会话级,只针对当前会话有效
Readonly:只读,只能手动编辑参数文件
Infile:静态参数,实例重启才能生效
修改参数有以下三种方法:
(1)直接 vi dm.ini ,无论是动态还是静态参数,都需要重启。
(2)调用函数 SP_SET_PARA_VALUE(参数类型,’参数名’,参数值);、SP_SET_PARA_DOUBLE_VALUE(参数类型,’参数名’,参数值);和
SP_SET_PARA_STRING_VALUE(参数类型,’参数名’,参数值) ;
:参数是动态参数不需要重启,静态参数需要重启 。参数类型是指:静态参数或者动态参数。1 是动态参数,相当于 both,会改内存和参数文件中的值;2 是静态参数,相当于 infile ,只会更改参数文件中的值。
(3)console 工具修改参数,无论是动态还是静态,也都要重启数据库才能生效。
例1:修改数据库口令策略为:长度不小于9,至少包含一个大写字母 。
PWD_POLICY 动态参数(1) :设置系统默认口令策略
0: 无策略;
1: 禁止与用户名相同;
2: 口令长度不小于 9;
4: 至少包含一个大写字母(A-Z);
8 :至少包含 一个数字(0-9);
16:至少包含一个标点符号(英文输入法状态下,除―和空格外的所有符号);
若为其他数字,则表示配置值的和,如 3=1+2,表示同时启用第 1 项和第 2 项策略。当COMPATIBLE_MODE=1 时,PWD_POLICY 的实 际值均为 0。

查看默认参数值:
SQL> select para_name,para_value,para_type from v$dm_ini where para_name='PWD_POLICY';
更改参数值:
SQL> SP_SET_PARA_VALUE(1,'PWD_POLICY',6);

查看默认参数值
更改参数值
例 2: 修改 dm 数据库为兼容 oracle
COMPATIBLE_MODE 静态参数(2) :是否兼容其他数据库模式
0:不兼容
1:兼容 SQL92 标准
2:部分兼容 ORACLE,
3:部分兼容 MS SQL SERVER,
4:部分兼容 MYSQL,
5:兼容 DM6,
6:部分兼容 TERADATA

SQL>sp_set_para_value(2,'COMPATIBLE_MODE',2);
重启数据库后生效:./DmServiceDMSERVER restart

2).控制文件
控制文件以.ctl 结尾,是一个二进制文件.控制文件记录了数据库的模式、数据库的版本、数据文件的版本、数据库名、oguid,启动次数,上一次启动时间,表空间和数据文件的信息。
dm.ctl(利用dmctlcvt工具查看控制文件中内容,将ctl文件转换为txt文档进行修改,修改完成之后再将txt转换为ctl,TYPE参数:1:转换控制文件为文本文件2:转换文本文件为控制文件)

查看帮助 
[dmdba@localhost bin]$ ./dmctlcvt help
示例:
./dmctlcvt TYPE=1 SRC=/data/dmdata/DAMENG/dm.ctl DEST=/data/dmdata/dmctl.txt
./dmctlcvt TYPE=2 SRC=/data/dmdata/dmctl.txt DEST=/data/dmdata/DAMENG/dm.ctl 
查看控制文件相关信息
SQL>select para_name,para_value,para_type from v$dm_ini where para_name like '%PATH%';

3).数据文件
以.DBF 结尾的文件,存放的是真实数据。

查看数据文件相关信息
SQL> select file_name,status from dba_data_files;

在这里插入图片描述
4).重做日志文件
重做日志文件记录的是数据库发生变化的信息。达梦没有日志组,至少需要两个重做日志文件默认两个日志文件为 DAMENG01.log、DAMENG02.log,这两个文件循环使用。重做日志文件的特点:循环写,可覆盖。重做日志文件可以重命名、扩展大小、新增,但不能被删除。当插入表数据时,先写重做日志文件,再写表里的数据(保证数据安全性和一致性)。

查询重做日志文件视图:
SQL> desc v$rlogfile;
查询重做日志文件信息 :
SQL> select file_id,path,rlog_size from v$rlogfile;

重做日志文件频繁切换,会对数据库产生较大的影响,应该添加日志文件,resize 日志文件大小。

新增重做日志文件 
SQL>alter database add logfile 'dm8/data/DAMENG01/DAMENG03.log' size 300;
resize 重做日志文件大小 
SQL>alter database resize logfile '/dm8/data/DAMENG/DAMENG01.log' to 300; 
迁移重做日志文件(只允许在mount状态下执行)
SQL>alter database mount; 
SQL>alter database rename logfile '/dm8/data/DAMENG/DAMENG01.log' to '/dm8/DAMENG01.LOG'; 
SQL>alter database open; 
查看数据库状态
SQL> select instance_name,status$ from v$instance;

5).归档日志文件
归档日志文件就是重做日志文件的副本,可循环、可覆盖。用来做数据库备份恢复、数据库守护集群、dmhs 的同步。

查看数据库是否开启归档
SQL> select name,arch_mode from v$database;

在这里插入图片描述
6).备份文件
以.bak 为扩展名的文件。备份文件就是数据库在某一个时间点的副本,当客户利用管理工具或直接发出备份的 SQL 命令时,DM Server 会自动进行备份并产生一个或多个备份文件,备份文件自身包含了备份的名称、对应的数据库、备份类型和备份时间等信息,备份文件和归档文件是结合起来使用的。

7).跟踪日志文件
跟踪日志文件默认是关闭的,记录的是各会话执行 sql 信息,数据库错误信息,性能相关问题,值为 0 就是没开启。用户在 dm.ini 中配置 SVR_LOG 和SVR_LOG_SWITCH_COUNT 参数后就会打开跟踪日志。跟踪日志文件是一个纯文本文件,以“dm_commit_日期_时间”命名,默认生成在 DM安装目录的 log 子目录下面。

查看跟踪日志文件状态:
SQL> select para_name,para_value from v$dm_ini where para_name='SVR_LOG'; 

在这里插入图片描述

2.2逻辑结构

:默认为 8k,用户在创建数据库时可以指定,支持 4k、8k、16k、32k。页是数据库最小的分配和使用单元,页对应的是操作系统块,一旦创建好了数据库,则在该库的整个生命周期内,页大小都不能够改变。页包含了页头信息、数据、空闲空间、行偏移数组。
在这里插入图片描述
页头信息记录的页类型、页地址。行偏移数组,记录的是页上的空间占用情况和数据比例(filefactor)。
:默认为 16 个页,支持 16、32 个页。簇是一组连续的页组成,一个簇总是在一个数据文件中。
:段是簇的上级逻辑单元,段可以跨多个数据文件。段又分为数据段(表、索引)、回滚段、临时段(占据空间的才叫段,视图不是段)。

查询段:
SQL>desc dba_segments; 

表空间:一个数据库拥有多个表空间,一个表空间可以拥有一个或多个数据文件,一个数据文件只能属于一个表空间。
在这里插入图片描述

3.内存结构

3.1内存池

DM Server 的内存池包括共享内存池和其他一些运行时内存池。
共享内存池:主要是减少系统调用。共享内存池是 dmserver 启动时,从操作系统申请的一大 片内存,实例在运行中可以向内存池申请或释放内存。

查看内存池主要参数:
SQL> select para_name,para_value from v$dm_ini where para_name like '%MEMORY%';
SQL>desc dba_segments; 

在这里插入图片描述
Memory_target 为 0 表示不限制内存使用
运行时内存池:给特定模块单独使用,例如会话内存池,虚拟机内存池。

3.2缓冲区

(1)数据缓冲区 参数:BUFFER,是从磁盘读出的数据页在内存中的镜像,提高数据库的性能。

查看数据缓冲区
SQL> select para_name,para_value from v$dm_ini where para_name='BUFFER'; 

参考值
OLTP:物理内存的 40%-60%
OLAP:物理内存的 60%-80%
缓存的是数据页(空闲、干净、脏、正在使用)
数据缓冲区有 4 种类型:
Normal /keep:可以手动调整
Fast/recycle:系统自动管理。Fast 主要是 undo 数据,recycle 主要是临时数据。

(2)重做日志缓冲区 参数:RLOG_BUF_SIZE,存放是重做日志信息,单位是页,提升数据库的性能。

查询重做日志缓冲区
SQL> select para_name,para_value from v$dm_ini where para_name='RLOG_BUF_SIZE';

(3)字典缓冲区 参数:DICT_BUF_SIZE,主要缓存的是数据字典的信息,包含表、列的信息。数据库存在大量分区表时,应该要调整字典缓冲区。
(4)SQL 缓冲区(SCP) 参数:CACHE_POOL_SIZE,用来存放包信息(PACKAGE)、执行计划、SQL 结果集和包。系统中 SQL 类别比较多,应该调整SQL 缓冲区,建议将该参数调大。

3.3排序区

排序区 参数:SORT_BUF_SIZE,是 SQL 排序需要的内存空间,SQL 在排序区空间不够时,转移到磁盘上(临时表空间)
在这里插入图片描述

3.4哈希区

Hash区 参数:HJ_BUF_SIZE,是虚拟的内存区,只有在生成 hash 连接时,才会生成。
在这里插入图片描述

4.DM8线程结构

4.1监听线程

检测来自客户端的连接请求,生成任务,把任务交给工作线程。

4.2 IO线程

将数据页从磁盘读入到数据缓冲区中,将数据缓冲区的脏页在一定机制下(缓冲区满,执行检查点,数据库关闭)刷到磁盘中。

4.3日志刷新线程

将重做日志缓冲区中的重做记录在一定机制(事务提交,每 3 秒,执行检查点)下,刷到重做日志文件中。

4.4日志归档线程

将重做日志文件在切换时拷贝到归档路径。

4.5日志重做线程

主要是用于数据库恢复,日志重做线程根据REDO日志进行并行的故障恢复。

4.6调度线程

检查系统级的时间触发器,清理 SQL 缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项,动态缓冲区检查,根据需要动态扩展或动态收缩系统缓冲池,自动执行检查点,会话超时检测,必要时执行数据更新页刷盘,唤醒等待的工作线程 。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值