达梦体系结构:数据库文件

达梦数据库由数据库实例构成:

  • 数据库是指磁盘上存放的数据库文件的集合,包括参数文件、控制文件、数据文件、日志文件等。
  • 实例是指一组运行的数据库进程/线程以及一块大型的共享内存。

存储结构

达梦数据库文件包括:

  • 配置文件:服务配置文件dm.ini 、守护配置文件、复制配置文件、审计配置文件;
  • 控制文件:dm.ctl,记录文件分布的二进制文件;
  • 数据文件:存储表空间数据,例如SYSTEM.DBF、MAIN.DBF、ROLL.DBF、TEMP.DBF等;
  • 联机日志文件:记录数据库操作的REDO日志,例如DAMENG01.log、DAMENG02.log等;
  • 归档日志文件、备份文件、审计文件(audit_*.log)、跟踪日志文件(dmsql_*.log)等其他文件。

表空间与数据文件

达梦数据库中的最大存储单元是表空间。

表空间从上往下可以继续划分为段(segment)、簇(extent)、页(page,对应Oracle中的数据块)。

一个表空间下往往包含多个磁盘上存在的数据文件。每个数据文件只能属于一个表空间。

配置参数文件

服务配置文件dm.ini中记录了数据库初始化相关的参数。

达梦数据库中的参数可以分为如下几种类型:

  • READ ONLY:静态只读参数,不能通过SQL命令或函数修改。只能通过修改dm.ini文件来变更,需要重启数据库生效。
  • IN FILE:静态文件参数,不能修改内存中的值,只能修改参数文件中的值。可以通过SQL命令或函数修改,但需要重启数据库生效。
  • SYS:动态系统级参数,可以修改内存中的值、参数文件中的值。可以通过SQL命令或系统函数修改,无需重启数据库即可生效。
  • SESSION:动态会话级参数,可以修改内存中的值、参数文件中的值,还可以只修改当前会话中的值。可以通过SQL命令或函数修改。可以只对当前会话生效。

查看参数文件中的参数值与类型:

select para_name,para_value,para_type from v$dm_ini;

数据库参数可以通过以下4种方式修改:

  1. 通过编辑dm.ini参数文件修改:需要重启数据库才能生效。

  2. 通过console图形化控制台修改:需要重启数据库才能生效,因为实际上修改的是dm.ini参数文件。

  3. 通过系统函数修改

这种方法可以修改静态参数和动态参数。静态参数修改后需要重启数据库生效。根据修改参数的数据类型,分别使用:

  • SP_SET_PARA_VALUE:修改整数型参数的值。
  • SP_SET_PARA_DOUBLE_VALUE:修改浮点型参数的值。
  • SP_SET_PARA_STRING_VALUE:修改字符型参数的值。
select name from v$ifun t where name like 'SP_SET_PARA%';

还可以i通过指定SCOPE来限制参数修改的范围:

  • 0:表示只修改内存中的值,相当于Oracle中的scope=memory
  • 1:表示同时修改内存和参数文件中的值,相当于Oracle中的scope=both
  • 2:表示只修改参数文件中的值,相当于Oracle中的scope=spfile
call SP_SET_PARA_VALUE(2, 'COMPATIBLE_MODE', 0);   -- 静态文件参数,2表示修改参数文件中的值
select name,type,value,sys_value,file_value from v$parameter where name='COMPATIBLE_MODE';

call SP_SET_PARA_VALUE(1, 'LIST_TABLE', 0);        -- 动态会话参数,1表示同时修改内存和文件中的值
select name,type,value,sys_value,file_value from v$parameter where name='LIST_TABLE';

🐍 :可以发现函数修改的这种方式的可读性较差,不建议日常使用。

  1. 通过SQL命令修改

通过ALTER SYSTEM|SESSION SET语句修改参数值,类似于Oracle中的方式(但没有scope关键字)。

修改系统级别参数:

alter system set 'COMPATIBLE_MODE'=0 spfile;

alter system set 'LIST_TABLE'=0 memory;
alter system set 'LIST_TABLE'=0 spfile;
alter system set 'LIST_TABLE'=0 both;

修改会话级别参数:

alter session set 'LIST_TABLE'=0;

控制文件

控制文件dm.ctl记录了OGUID、数据库状态、数据库名称、最后启动时间、表空间信息、数据文件信息、联机日志文件信息等内容。

控制文件是一个二进制文件,无法直接打开,但是可以通过dmctlcvt工具转化为可读的文本文件。

#控制文件转文本文件
$DM_HOME/bin/dmctlcvt TYPE=1 SRC=/dm8/data/DBNAME/dm.ctl DEST=/home/dmdba/dmctl.txt

#文本文件转控制文件
$DM_HOME/bin/dmctlcvt TYPE=2 SRC=/home/dmdba/dmctl.txt DEST=/home/dmdba/dm.ctl

其他数据库文件

联机日志文件用于存放redo日志信息,循环使用(DBNAME_01.log、DBNAME_02.log)。

如果开启了归档模式,还会生成归档日志文件。

如果做了数据库备份,则会生成备份集文件。

如果开启了数据库审计,则会生成审计日志文件(audit_*.log)。

如果开启了SQL跟踪,还会生成跟踪日志文件(dmsql_*.log)。

相关推荐

  1. 体系结构数据库文件

    2024-04-05 11:42:04       42 阅读
  2. 数据库文档

    2024-04-05 11:42:04       63 阅读
  3. 体系结构:内存架构

    2024-04-05 11:42:04       38 阅读
  4. 体系结构:进程架构

    2024-04-05 11:42:04       30 阅读
  5. 数据库

    2024-04-05 11:42:04       30 阅读
  6. 数据库-学习

    2024-04-05 11:42:04       28 阅读
  7. 数据库适配Springboot+MybatisPlus+数据库

    2024-04-05 11:42:04       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-05 11:42:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-05 11:42:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-05 11:42:04       82 阅读
  4. Python语言-面向对象

    2024-04-05 11:42:04       91 阅读

热门阅读

  1. ChatGPT 之 PPT 大师

    2024-04-05 11:42:04       52 阅读
  2. Swagger 简单上

    2024-04-05 11:42:04       37 阅读
  3. 每日一题 六十九期 洛谷 回文日期

    2024-04-05 11:42:04       39 阅读
  4. 数据库更新两张相关联的表

    2024-04-05 11:42:04       35 阅读
  5. 【leetcode】向字符串添加空格

    2024-04-05 11:42:04       31 阅读
  6. 2024.3.17力扣每日一题——最小高度树

    2024-04-05 11:42:04       33 阅读
  7. Apache Spark 的基本概念和在大数据分析中的应用

    2024-04-05 11:42:04       42 阅读