首页 > 数据库 > 国内数据库 > DM8达梦数据库运维管理
在 DM8 中存储的层次结构如下:
1. 数据库由一个或多个表空间组成;
2. 每个表空间由一个或多个数据文件组成;
3. 每个数据文件由一个或多个簇组成;
4. 段是簇的上级逻辑单元,一个段可以跨多个数据文件;
5. 簇由磁盘上连续的页组成,一个簇总是在一个数据文件中;
6. 页是数据库中最小的分配单元,也是数据库中使用的最小的 IO 单元。

页:
数据页(也称数据块)是 DM 数据库中最小的数据存储单元。页的大小对应物理存储空间上特定数量的存储字节,在 DM 数据库中,页大小可以为 4KB、8KB、16KB 或者 32KB, 用户在创建数据库时可以指定,建议设置16KB,
注意:一旦创建好了数据库,则在该库的整个生命周期内,页大小都不能改变。
图 1.2 显示了 DM 数据库页的典型格式:

簇:
簇是数据页的上级逻辑单元,由同一个数据文件中 16 个或 32 个或 64 个连续的数据页组成。
在 DM 数据库中,簇的大小由用户在创建数据库时指定,默认大小为 16。
和数据页的大小一样,一旦创建好数据库,此后该数据库的簇的大小就不能够改变。
段:
段是簇的上级逻辑分区单元,它由一组簇组成。在同一个表空间中,段可以包含来自不
同文件的簇,即一个段可以跨越不同的文件。而一个簇以及该簇所包含的数据页则只能来自一个文件,是连续的 16 或者 32 个数据页。
由于簇的数量是按需分配的,数据段中的不同簇在磁盘上不一定连续。
段的分配和释放完全由 DM 数据库自动完成,可以在创建表/索引时设置存储参数来决定数据段的簇如何分配。
DM 数据库使用了磁盘上大量的物理存储结构来保存和管理用户数据。典型的物理存储结构包括:用于进行功能设置的配置文件;用于记录文件分布的控制文件;用于保存用户实际数据的数据文件、重做日志文件、归档日志文件、备份文件;用来进行问题跟踪的跟踪日志文件等,如图 2.1 所示:

每创建一个 DM 数据库,就会自动生成 dm.ini 文件。是 DM 数据库启动所必须的配置文件,通过配置该文件可以设置 DM 数据库服务器的各种功能和性能选项。
若设置值与参数类型不兼容,则参数实际取 值为默认值;若设置值小于参数取值范围的最小值,则实际取值为最小值;若设置值大于参 数取值范围的最大值,则实际取值为最大值。
参数属性分为三种:静态、动态和手动。
静态:可以被动态修改,修改后重启服务器才 能生效。
动态:可以被动态修改,修改后即时生效。动态参数又分为会话级和系统级两种。会话 级参数被修改后,新参数值只会影响新创建的会话,之前创建的会话不受影响;系统级参数 的修改则会影响所有的会话。
手动:不能被动态修改,必须手动修改 dm.ini 参数文件,然后重启才能生效。
动态修改是指 DBA 用户可以在数据库服务器运行期间,通过调用系统过程 SP_SET_PARA_VALUE()、SP_SET_PARA_DOUBLE_VALUE()和 SP_SET_PARA_STRING_VALUE()对参数值进行修改。
dmmal.ini 是 MAL 系统的配置文件。
注意:需要用到 MAL 环境的实例,所有站点 dmmal.ini 需要保证严格一致。
dmarch.ini 用于本地归档和远程归档。
相关说明
1. 归档类型 ARCH_TYPE 有以下几种:
本地归档 LOCAL(一台主库最多配 8 个)
远程实时归档 REALTIME(一台主库最多配 8 个)
远程异步归档 ASYNC(一台主库最多配 8 个)
即时归档 TIMELY(一个主库最多配 8 个)
远程归档 REMOTE(一个主库最多配 8 个)
2. 配置名[ARCHIVE_*]表示归档名,在配置文件中必须唯一。
3. 不能存在相同实例名的不同归档;
4. 不能存在 DEST 相同的不同归档实例;
5. ARCH_TIMER_NAME 为定制的定时器名称,定时器配置见 dmtimer.ini;
6. ARCH_SPACE_LIMIT 表示归档文件的磁盘空间限制,如果归档文件总大小超过这个值,则在生成新归档文件前会删除最老的一个归档文件。
DM 安装时生成一个配置文件 dm_svc.conf,不同的平台所在目录有所不同:
1. 32 位的 DM 安装在 Win32 操作平台下,此文件位于%SystemRoot%\system32目录;
2. 64 位的 DM 安装在 Win64 操作平台下,此文件位于%SystemRoot%\system32目录;
3. 32 位的 DM 安装在 Win64 操作平台下,此文件位于%SystemRoot%\SysWOW64目录;
4. 在 Linux 平台下,此文件位于/etc 目录。
dm_svc.conf 配置文件的内容分为全局配置区和服务配置区。全局配置区在前,可配置所有的配置项,
服务配置区在后,以“[服务名]”开头,可配置除了服务名外的所有配置项。服务配置区中的配置优先级高于全局配置区。
下面是一个 dm_svc.conf 的例子:
# 以#开头的行表示是注释
# 全局配置区
O2000=(192.168.0.1:5000,192.168.0.2:5236)
O3000=(192.168.0.1:5236,192.168.0.3:4350)
TIME_ZONE=(+480) #表示+8:00 时区
LOGIN_ENCRYPT=(0)
DIRECT=(Y)
# 服务配置区
[O2000]
TIME_ZONE=(+540) #表示+9:00 时区
LOGIN_MODE=(2)
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)
注意:如果对dm_svc.conf的配置项进行了修改,需要重启客户端程序才能生效。
sqllog.ini用于sql日志的配置。当把INI参数SVR_LOG置为1,才会打开SQL日志。
如果在服务器启动过程中,修改了sqllog.ini文件。修改之后的文件,只要调用过程SP_REFRESH_SVR_LOG_CONFIG() 就会生效。
每个 DM 数据库都有一个名为 dm.ctl 的控制文件。控制文件是一个二进制文件,它记录了数据库必要的初始信息,其中主要包含以下内容:
1. 数据库名称;
2. 数据库服务器模式;
3. OGUID 唯一标识;
4. 数据库服务器版本;
5. 数据文件版本;
6. 数据库的启动次数;
7. 数据库最近一次启动时间;
8. 表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中使用的表空间,数组的方式保存起来;
9. 控制文件校验码,校验码由数据库服务器在每次修改控制文件后计算生成,保证控制文件合法性,防止文件损坏及手工修改。
在服务器运行期间,执行表空间的 DDL 等操作后,服务器内部需要同步修改控制文件内容。如果在修改过程中服务器故障,可能会导致控制文件损坏,为了避免出现这种情况,
在修改控制文件时系统内部会执行备份操作。
备份策略如下:
策略一 在修改 dm.ctl 之前,先执行一次备份,确定 dm.ctl 修改成功后,再将备份删除,如果 dm.ctl 修改失败或中途出现故障,则保留备份文件。
策略二 在修改 dm.ctl 成功之后,根据 dm.ini 中指定的CTL_BAK_PATH/CTL_BAK_NUM 对最新的 dm.ctl 执行备份,如果用户指定的CTL_BAK_PATH 是非法路径,
则不再生成备份文件,在路径有效的情况下,生成备份文件时根据指定的 CTL_BAK_NUM 判断是否删除老的备份文件。
数据文件以 dbf 为扩展名,它是数据库中最重要的文件类型,一个 DM 数据文件对应磁盘上的一个物理文件或者达梦分布式数据库中的一个逻辑文件,数据文件是真实数据存储的 地方,每个数据库至少有一个与之相关的数据文件。在实际应用中,通常有多个数据文件。
数据文件对应的逻辑单位是表空间。
重做日志(即 REDO 日志)指在 DM 数据库中添加、删除、修改对象,或者改变数据, DM 都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。重做日志文 件以 log 为扩展名。每个 DM 数据库实例必须至少有 2 个重做日志文件,默认两个日志文件 为 DAMENG01.log、DAMENG02.log,这两个文件循环使用。
重做日志文件因为是数据库正在使用的日志文件,因此被称为联机日志文件。
重做日志文件主要用于数据库的备份与恢复。理想情况下,数据库系统不会用到重做日 志文件中的信息。然而现实世界总是充满了各种意外,比如电源故障、系统故障、介质故障, 或者数据库实例进程被强制终止等,数据库缓冲区中的数据页会来不及写入数据文件。这样, 在重启 DM 实例时,通过重做日志文件中的信息,就可以将数据库的状态恢复到发生意外时的状态。
归档日志文件,就是在归档模式下,重做日志被连续写入到归档日志后,所生成了归档 日志文件。
归档日志文件以归档时间命名,扩展名也是 log。但只有在归档模式下运行时, DM 数据库才会将重做日志写入到归档日志文件中。采用归档模式会对系统的性能产生影响, 然而系统在归档模式下运行会更安全,当出现故障时其丢失数据的可能性更小,这是因为一旦出现介质故障( 如磁盘损坏时),利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点,而如果没有归档日志文件,则只能利用备份进行恢复。
归档日志文件还是数据守护功能的核心,数据守护中的备库就是通过重做归档日志中的 REDO 日志来完成与主库的数据同步的。
为了保证数据库系统的安全性,DM 数据库采用“三权分立”或“四权分立”的安全机制, “三权分立”时系统内置三种系统管理员,包括数据库管理员、数据库安全员和数据库审计 员,“四权分立”时新增了一类用户,称为数据库对象操作员。它们各司其职,互相制约,有 效地避免了将所有权限集中于一人的风险,保证了系统的安全性。
三权分立
将系统管理员分 数据库管理员(SYSDBA)、数据库安全员(SYSSSO)和数据库审计员(SYSAUDITOR)三类,其缺省口令都与用户名一致。
四权分立
在“三权分立”的基础上,新增数据库对象操作员账户SYSDBO,其缺省口令为 SYSDBO。
数据库管理员(DBA):数据库管理员既可进行系统管理和维护工作,也可对数据内容进行增删查改动作。
数据库安全员(SSO):库安全员的主要任务就是制定安全策略,定义新的数据库安全员,设置系统的安全等级、范围和组,从而全面提升系统安全性。
数据库审计员(AUDITOR):数据库审计员可以设置要审计的对象和操作、定义新的数据库审计员、查看和分析审计记录。通过设置审计,几乎可以跟踪任何人在系统内执行的任何操作,为事后追查提供便利。
数据库对象操作员(DBO):数据库对象操作员是“四权分立”新增加的一类用户,可以创建数据库对象,并对自己拥有的数据库对象具有所有的对象权限 并可以授出与回收,但其无法管理与维护数据库对象。
比如创建名为 bookshop 的表空间,并指定该空间上拥有2个数据文件,每个数据文件的大小为128M,语句如下:
CREATE TABLESPACE bookshop DATAFILE 'd:\bookshop1.dbf' SIZE 128, 'd:\bookshop2.dbf' SIZE 128;
添加表空间对应的数据文件:
比如在 bookshop 表空间中添加大小为 128M 的数据文件。
ALTER TABLESPACE bookshop ADD DATAFILE 'd:\book.dbf' SIZE 128;
注意:一个表空间中,数据文件和镜像文件一起不能超过 256 个。例如,如果创建表空间的时候已经指定了 1 个数据文件,那么添加数据文件的时候,最多只能添加 255 个了。
扩展数据文件大小:
比如扩展 bookshop 表空间中数据文件 book.dbf 大小至 1G。
ALTER TABLESPACE bookshop RESIZE DATAFILE 'd:\book.dbf' TO 1024;
指定数据文件的扩展属性
可修改表空间中已存在的数据文件的扩展属性。如修改数据文件的扩展属性为可自动扩展 (不可扩展为OFF):
ALTER TABLESPACE bookshop DATAFILE 'd:\book.dbf' AUTOEXTEND ON;
缺省情况下,文件扩展大小是1M,文件的最大大小是无限制的。
创建表空间时可指定文件的扩展属性。如创建表空间时指定数据文件的扩展属性为可自动扩展,每次扩展大小为 10M,最大可扩展到 100M:
CREATE TABLESPACE bookshop DATAFILE 'd:\book.dbf' SIZE 32 AUTOEXTEND ON NEXT 10 MAXSIZE 100;
修改表空间名
例如修改 bookshop 表空间名为 books,
ALTER TABLESPACE bookshop RENAME TO books;
删除表空间
只可以删除用户创建的表空间并且只能删除未使用过的表空间。删除表空间时会删除其拥有的所有数据文件。
DROP TABLESPACE bookshop;
修改表空间状态
系统表空间、回滚表空间、重做日志表空间和临时文件表空间不允许脱机。
ALTER TABLESPACE bookshop OFFLINE; --脱机表空间
ALTER TABLESPACE bookshop ONLINE; --联机
注意:
MPP 环境下,可能发现节点间的表空间不一致情况,如:EP01 为 ONLINE 状态,EP02 为 OFFLINE 状态。
这个时候,无论执行 ONLINE 还是 OFFLINE 都是报错。需要用户介入,才可以解决问题。用户LOCAL方式登录实例,
并执行 SP_SET_SESSION_LOCAL_TYPE(1),使得该会话可以执行DDL操作,再执行ONLINE或者OFFLINE即可。
查询表空间与数据文件对应关系
SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID = df.GROUP_ID;
修改数据文件的路径
待修改的数据文件所在表空间必须处于脱机状态,并且只可修改用户创建的表空间中文件的路径.
如修改 bookshop 表空间中文件book.dbf 的路径为 e:\ book.dbf,语句如下:
ALTER TABLESPACE bookshop RENAME DATAFILE 'd:\book.dbf' TO 'e:\book.dbf';
表空间文件失效检查
LINUX 操作系统中,被进程打开的文件仍可以在 OS 系统中被删除,因此存在 DM 数据文件可能被误删的风险。
如果数据文件被删除,DM系统能够及时检测出来,并立刻停止对其继续使用并通知用户。
在 dm.ini 中参数 FIL_CHECK_INTERVAL 的值指定检查数据文件是否仍存在的时间间隔。将其设为 0 表示不进行检查。
也可以通过系统过程 SP_FILE_SYS_CHECK()来手动的进行检查。
系统一旦检测出某个表空间内的数据文件被删除,则与该表空间所有的操作都将会失败,并报错该表空间内有数据文件被删除。
表空间失效文件恢复
LINUX系统中被删除的文件,只要其句柄没有被关闭,可以在/proc/<pid>/fd 中找到其对应的文件副本。其中<pid>指打开该文件的进程 id。
利用该方法,结合 OS 命令,DM 提供失效文件的恢复方案如下:
1、 调用系统过程 SP_TABLESPACE_PREPARE_RECOVER(tablespace_name)准备进行恢复;
2、 如果使用过程中 DM 报错表空间数据文件被删除,通过操作系统的 ps 命令找到当前dmserver 的PID:
ps –ef|grep dmserver;
3、 使用操作系统 ls 命令查看被删除文件对应的副本:ls /proc/<PID>/fd–l,会发现被删除的文件后有(deleted)字样;
4、 使用操作系统的 cp 命令将文件复制到原位置:
cp bak_fildata_file_path_dir;
5、 复制成功后,调用系统过程 SP_TABLESPACE_RECOVER(ts_name)完成表空间失效文件的恢复。
注意,要保证数据文件正确修复,需要保证在 SP_TABLESPACE_PREPARE_RECOVER后进行数据文件的复制。
数据库中的动态性能视图能自动收集数据库中的一些活动信息,根据这些信息可以了解数据库运行的基本情况,为数据库的维护和优化提供依据。
动态视图表与静态字典信息表命名方式不同,静态字典表一般以 SYS 为前缀,如系统 表 SYSINDEXES,而动态视图则以 V$为前缀,如 V$DM_INI。
在 DM8 中,动态视图提供的系统信息主要分为以下几个方面:
包括数据库版本、实例、统计信息、资源限制信息、进程信息、全局索引 IID 信息、 事件信息;涉及的动态视图有 V$SESSIONS、V$INSTANCE、V$RESOURCE_LIMIT、 V$PROCESS、V$IID、V$SYSSTAT 等。
例如查看数据库中实例信息:
SELECT * FROM V$INSTANCE;
包括数据库信息、表空间信息、数据文件信息、日志相关信息;涉及的动态视图有 V$DATAFILE、V$DATABASE、V$TABLESPACE、V$HUGE_TABLESPACE、V$RLOGFILE 等。
例如查询表空间信息:
SELECT * FROM V$TABLESPACE;
包括内存池使用情况、BUFFER 缓冲区信息、虚拟机信息、虚拟机栈帧信息;涉及的动 态视图有 V$VPOOL、V$VMS、V$STKFRM、V$BUFFERPOOL、V$BUFFER_LRU_FIRST、 V$BUFFER_UPD_FIRST、V$BUFFER_LRU_LAST、V$BUFFER_UPD_LAST、V$ RLOG_PKG、 V$COSTPARA 等。
例如查询内存池 BUFFERPOOL 的页数、读取页数和命中率信息:
SELECT NAME,N_PAGES,N_LOGIC_READS,RAT_HIT FROM V$BUFFERPOOL;
包括所有事务信息、当前事务可见的事务信息、事务锁信息(TID 锁、对象锁)、回滚 段信息、事务等待信息;涉及的动态视图有 V$TRX、V$TRXWAIT、V$TRX_VIEW、V$LOCK、 V$PURGE 等。
例如查询系统中上锁的事务、锁类型,以及表 ID 信息:
SELECT TRX_ID,LTYPE,LMODE,TABLE_ID FROM V$LOCK;
包括所有活动线程信息、线程作业信息、线程锁信息、线程的资源等待信息;涉及的动 态视图有 V$THREADS、V$LATCHES 等。
例如查看系统中所有活动的线程信息:
SELECT * FROM V$threads;
包括 SQL 历史信息、SQL 执行节点历史信息、检查点历史信息、命令行历史信息、线 程等待历史信息、死锁历史信息、回滚段历史信息、运行时错误历史信息、DMSQL 程序中 执行 DDL 语句的历史信息、返回大数据量结果集的历史信息、所有活动过线程的历史信息; 涉及的动态视图有 V$CKPT_HISTORY、V$CMD_HISTORY、V$DEADLOCK_HISTORY、 V$PLSQL_DDL_HISTORY、V$PRE_RETURN_HISTORY、V$RUNTIME_ERR_HISTORY、 V$WAIT_HISTORY、V$WTHRD_HISTORY、V$SQL_HISTORY、V$SQL_NODE_HISTORY、 V$SQL_NODE_NAME 等。
例如查询系统执行的 SQL 历史信息:
SELECT SESS_ID,TOP_SQL_TEXT,TIME_USED FROM V$SQL_HISTORY;
包括 SQL 语句缓存、执行计划缓存、结果集缓存、字典缓存信息、字典缓存中的对象 信息、代价信息;涉及的动态视图有 V$CACHEITEM、V$SQL_PLAN、V$CACHERS、 V$CACHESQL、V$DICT_CACHE_ITEM、V$DICT_CACHE 等。
例如查看字典缓存的信息:
SELECT * FROM V$DICT_CACHE;
包括连接信息、会话信息;涉及的动态视图有 V$CONNECT、V$STMTS、V$SESSIONS 等。 例如查看会话信息:
SELECT SESS_ID,SQL_TEXT,STATE,CREATE_TIME,CLNT_HOST FROM V$SESSIONS;
捕获信息涉及的视图为 V$CAPTURE。查看捕获信息:
SELECT * FROM V$CAPTURE;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69998466/viewspace-2769121/ ,如需转载,请注明出处,否则将追究法律责任。