达梦体系结构:数据库文件
- 存储结构
- 表空间与数据文件
- 配置参数文件
- 控制文件
- 其他数据库文件
达梦数据库由数据库和实例构成:
- 数据库是指磁盘上存放的数据库文件的集合,包括参数文件、控制文件、数据文件、日志文件等。
- 实例是指一组运行的数据库进程/线程以及一块大型的共享内存。
存储结构
达梦数据库文件包括:
- 配置文件:服务配置文件
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种方式修改:
-
通过编辑
dm.ini
参数文件修改:需要重启数据库才能生效。 -
通过console图形化控制台修改:需要重启数据库才能生效,因为实际上修改的是
dm.ini
参数文件。 -
通过系统函数修改:
这种方法可以修改静态参数和动态参数。静态参数修改后需要重启数据库生效。根据修改参数的数据类型,分别使用:
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';
🐍 注:可以发现函数修改的这种方式的可读性较差,不建议日常使用。
- 通过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
)。