正德厚生,臻于至善

03.达梦DCA认证课程-DM数据库体系结构

1.存储结构

表空间是 DM 数据库的最大存储单元,所有数据都存储在表空间中。
表空间采用段(segment)、簇(extent)和页(page,对应 block)的方式管理。
一个表空间可以包含一个或多个数据文件。一个数据文件仅能归属于一个表空间。
DM 物理文件包含:配置文件、控制文件、数据文件、联机日志(此四个文件必不可少,缺少一个将无法正常启动)。

1.1 三大文件查看

查看数据文件:

SQL> select GROUP_ID,PATH,ID,STATUS$ from v$datafile;

行号     GROUP_ID    PATH                                                 ID          STATUS$    
---------- ----------- ---------------------------------------------------- ----------- -----------
1          0           /home/dmdba/dmdbms/data/ECARD/SYSTEM.DBF             0           1
2          1           /home/dmdba/dmdbms/data/ECARD/ROLL.DBF               0           1
3          3           /home/dmdba/dmdbms/data/ECARD/TEMP.DBF               0           1
4          4           /home/dmdba/dmdbms/data/ECARD/MAIN.DBF               0           1
5          5           /home/dmdba/dmdbms/data/ECARD/DMHR.DBF               0           1
6          6           /home/dmdba/dmdbms/data/ECARD/V8_TABLESPACE.dbf      0           1
7          7           /home/dmdba/dmdbms/data/ECARD/OPENPLARTFORM_DATA.dbf 0           1
8          8           /home/dmdba/dmdbms/data/ECARD/CHANNEL_DATA_01.dbf    0           1
9          8           /home/dmdba/dmdbms/data/ECARD/CHANNEL_DATA_02.dbf    1           1
10         8           /home/dmdba/dmdbms/data/ECARD/CHANNEL_DATA_03.dbf    2           1
11         8           /home/dmdba/dmdbms/data/ECARD/CHANNEL_DATA_04.dbf    3           1

行号     GROUP_ID    PATH                                              ID          STATUS$    
---------- ----------- ------------------------------------------------- ----------- -----------
12         8           /home/dmdba/dmdbms/data/ECARD/CHANNEL_DATA_05.dbf 4           1

12 rows got

查看重做日志文件:

SQL>  select path from v$rlogfile;

行号     PATH                                     
---------- -----------------------------------------
1          /home/dmdba/dmdbms/data/ECARD/ECARD01.log
2          /home/dmdba/dmdbms/data/ECARD/ECARD02.log
3          /home/dmdba/dmdbms/data/ECARD/ECARD03.log

已用时间: 0.730(毫秒). 执行号:1308.
SQL>  select path,rlog_size/1024/1024 from v$rlogfile;

行号     PATH                                      RLOG_SIZE/1024/1024 
---------- ----------------------------------------- --------------------
1          /home/dmdba/dmdbms/data/ECARD/ECARD01.log 256
2          /home/dmdba/dmdbms/data/ECARD/ECARD02.log 256
3          /home/dmdba/dmdbms/data/ECARD/ECARD03.log 256

已用时间: 0.989(毫秒). 执行号:1309.

查看控制文件:

SQL> select para_name,para_value from v$dm_ini where para_name= 'CTL_PATH';

行号     PARA_NAME PARA_VALUE                          
---------- --------- ------------------------------------
1          CTL_PATH  /home/dmdba/dmdbms/data/ECARD/dm.ctl

已用时间: 10.951(毫秒). 执行号:1313.
SQL> select para_name,para_value from v$dm_ini where para_name='CTL_BAK_PATH';

行号     PARA_NAME    PARA_VALUE                           
---------- ------------ -------------------------------------
1          CTL_BAK_PATH /home/dmdba/dmdbms/data/ECARD/ctl_bak

已用时间: 4.678(毫秒). 执行号:1314.
SQL> select para_name,para_value from v$dm_ini where para_name='CTL_BAK_NUM';

行号     PARA_NAME   PARA_VALUE
---------- ----------- ----------
1          CTL_BAK_NUM 10

已用时间: 6.657(毫秒). 执行号:1315.
SQL> select para_name,para_value from v$dm_ini where para_name in ('CTL_PATH','CTL_BAK_PATH','CTL_BAK_NUM');

1.2 表空间管理

1.2.1 表空间介绍

DM 默认预定义 SYSTEM、ROLL、MAIN、TEMP、HMAIN 五个表空间。

  • SYSTEM

系统表空间,存放数据字典等信息(表、字段、视图等对象的定义、用户角色权限信息等,部分隐含参数写入 SYSTEM 表空间),SYSTEM 表空间自动扩展不允许关闭。

  • ROLL

回滚表空间,存放回滚页,数据库中的 DML 操作对应都会生成 redo 和 undo,undo 信息放入 ROLL 表空间对应的数据文件中,redo 信息写入联机日志文件,用于保证数据的一致性。
ROLL 回滚段数据包含 Active、unexpired、expired 三种状态。遇到查询记录过旧的错误(等同于 oracle 的快照过旧的错误)。

解决方法:

1.增大 undo_retention(回滚段的保留时长), 及时、分段提交。扩大 ROLL 表空间。
2.查询时间过长导致,可以考虑优化查询
SQL> select NAME,TYPE,VALUE,SYS_VALUE,FILE_VALUE,DESCRIPTION from v$parameter where name='UNDO_RETENTION';

行号     NAME           TYPE VALUE      SYS_VALUE  FILE_VALUE
---------- -------------- ---- ---------- ---------- ----------
           DESCRIPTION                                                                             
           ----------------------------------------------------------------------------------------
1          UNDO_RETENTION SYS  180.000000 180.000000 90.000000
           Maximum retention time in seconds for undo pages since relative transaction is committed
  • MAIN

用户默认表空间,当创建用户时,如果为指定用户的默认表空间,则 MAIN 为用户的默认表空间。相当于 Oracle 的 USERS 表空间。

  • 临时表空间

临时表空间,存放临时表数据、临时结果集等,当大量的数据排序或创建索引等占用临时表空间。DM 中临时表空间大小由参数 TEMP_SIZE 指定,不支持单独创建临时表空间。

达梦 TEMP 表空间,数据库启动时会按照如下参数重建 TEMP 表空间。

SQL> select name, value, type from v$parameter t where name like 'TEMP%';

行号     NAME             VALUE                  TYPE     
---------- ---------------- ---------------------- ---------
1          TEMP_PATH        /dm8/dmdbms/data/ECARD READ ONLY
2          TEMP_SIZE        10                     IN FILE
3          TEMP_SPACE_LIMIT 0                      SYS

相关参数说明:

TEMP_SIZE:临时表空间初始大小
TEMP_PATH:临时表空间路径
TEMP_SPACE_LIMIT:临时表空间的空间限制,0 表示不限制。

收缩 TEMP 表空间的方法:

1.重启数据库,TEMP 表空间数据文件会重建。
2.在线收缩临时表空间使用 SP_TRUNC_TS_FILE 函数
SQL>  select id,name from v$ifun where name='SP_TRUNC_TS_FILE';

行号     ID          NAME            
---------- ----------- ----------------
1          1298        SP_TRUNC_TS_FILE
SQL> select * from v$ifun_arg where id=1298;

行号     ID          NAME    SEQ         DATA_TYPE        LEN         PREC        IO_TYPE COMMENT$
---------- ----------- ------- ----------- ---------------- ----------- ----------- ------- --------
1          1298        RVAL    -1          UNKNOWN DATATYPE 0           0           RETURN  NULL
2          1298        TS_ID   0           INTEGER          4           0           IN      NULL
3          1298        FILE_ID 1           INTEGER          4           0           IN      NULL
4          1298        TO_SIZE 2           INTEGER          4           0           IN      NULL

调大temp表空间的方法:

--可以直接修改temp文件的大小,但重启后会重建为temp_size指定的大小
alter tablespace temp resize datafile 'TEMP.DBF' to 50;
--永久修改大小方法
alter system set 'TEMP_SIZE' =50 spfile;
  • HMAIN

HUGE 表的默认表空间(HTS 表空间)

1.2.1 创建表空间

创建名为tbs1的表空间,并指定该空间上拥有 2个数据文件,每个数据文件的大小为50M ,设置自动扩展

-- 达梦表空间数据文件单位默认为M,不需要带单位,路径可以省略,使用system_path的路径
create tablespace tbs1 datafile '/home/dmdba/dmdbms/data/ECARD/TBS101.DBF' size 50 autoextend on next 10 maxsize 10240,'/home/dmdba/dmdbms/data/ECARD/TBS102.DBF' size 50 autoextend on next 10 maxsize 10240;

1.2.2 修改表空间名

DM 预定义表空间不支持重命名,自定义表空间支持重命名。

alter tablespace tbs1 rename to tbs1_new;

1.2.3 修改表空间状态

用户表空间有联机和脱机两种状态。系统表空间、回滚表空间、重做日志表空间和临时文件表空间不允许脱机。

设置表空间状态为脱机状态时,如果该表空间有未提交的事务,则脱机失败报错。 脱机后可对表
空间的数据进行备份.

alter tablespace tbs1 offline;
alter tablespace tbs1 online;

1.2.4 修改表空间数据缓冲区

用户表空间可以切换使用的数据缓冲区,系统表空间、回滚表空间、重做日志表空间和临时文件表空间不允许修改数据缓冲区。可以使用的数据缓冲区有 NORMAL 和 KEEP。表空间修改成功后,并不会立即生效,而是需要服务器重启。缓冲池名 KEEP 是达梦的保留关键字,使用时必须加双引号。

SQL> alter tablespace tbs1_new cache="KEEP";
SQL> select name,cache from v$tablespace;
SQL> alter tablespace tbs1_new cache="NORMAL";

1.2.5 删除表空间

只可以删除用户创建的表空间并且只能删除未使用过的表空间,删除表空间时会删除其拥有的所有数据文件。

drop tablespace tbs1;

1.2.6 管理数据文件

1.添加数据文件

--可以使用相对路径
alter tablespace tbs1 add datafile 'TBS103.DBF' size 50;

2.设置数据文件自动扩展

alter tablespace tbs1 datafile 'TBS103.DBF' autoextend on next 2 maxsize 20480;
alter tablespace tbs1 datafile 'TBS101.DBF' autoextend off;

3.修改数据文件大小

--dm老版本不支持将数据文件改小,2022年9月份以后的版本支持
alter tablespace tbs1 resize datafile 'TBS103.DBF' TO 100;

4.迁移自定义表空间数据文件

alter tablespace tbs offline;
--Oracle19c之前,需要手动拷贝数据文件,然后再进行rename
alter tablespace tbs rename datafile 'TBS01.DBF' TO '/dm8/data/DM/TBS/TBS01.DBF';
alter tablespace tbs rename datafile 'TBS02.DBF' TO '/dm8/data/DM/TBS/TBS02.DBF';
alter tablespace tbs online;

1.2.7 表空间相关查询

相关数据字典:

select * from dba_tablespaces;
select * from DBA_DATA_FILES;
select * from v$tablespace;
select * from v$datafile;
--查询数据文件剩余空间
select * from DBA_FREE_SPACE; 

表空间和数据文件对应关系查询:

SQL> SELECT df.GROUP_ID,ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID= df.GROUP_ID;

行号     GROUP_ID    NAME   PATH                             
---------- ----------- ------ ---------------------------------
1          0           SYSTEM /dm8/dmdbms/data/ECARD/SYSTEM.DBF
2          7           TEST   /dm8/dmdbms/data/ECARD/TEST02.DBF
3          7           TEST   /dm8/dmdbms/data/ECARD/TEST01.DBF
4          5           DMHR   /dm8/dmdbms/data/ECARD/DMHR.DBF
5          4           MAIN   /dm8/dmdbms/data/ECARD/MAIN.DBF
6          3           TEMP   /dm8/dmdbms/data/ECARD/TEMP.DBF
7          1           ROLL   /dm8/dmdbms/data/ECARD/ROLL.DBF

7 rows got
-- file_id是针对某个表空间内部排序的
SQL> select TABLESPACE_NAME,FILE_ID,FILE_NAME from dba_data_files order by 1,2;

行号     TABLESPACE_NAME FILE_ID     FILE_NAME                        
---------- --------------- ----------- ---------------------------------
1          DMHR            0           /dm8/dmdbms/data/ECARD/DMHR.DBF
2          MAIN            0           /dm8/dmdbms/data/ECARD/MAIN.DBF
3          ROLL            0           /dm8/dmdbms/data/ECARD/ROLL.DBF
4          SYSTEM          0           /dm8/dmdbms/data/ECARD/SYSTEM.DBF
5          TEMP            0           /dm8/dmdbms/data/ECARD/TEMP.DBF
6          TEST            0           /dm8/dmdbms/data/ECARD/TEST01.DBF
7          TEST            1           /dm8/dmdbms/data/ECARD/TEST02.DBF

7 rows got

1.3 重做日志文件管理

重做日志包含联机日志和归档日志(数据库在归档模式下才会产生归档日志文件)。

联机重做日志:存放 redo 信息,循环使用,不断覆盖,默认重做日志大小256M。联机日志 v$rlog 中记录有日志序列号(LSN: Log Sequence Number)。

DM 数据库联机日志自动切换,不能手工切换,无法删除重做日志。DM 联机日志没有日志组。

1.3.1 调整重做日志大小

--建议所有日志大小一样
alter database resize logifle 'DAMENG01.log' to 500;
alter database resize logifle 'DAMENG02.log' to 500;

1.3.2 添加重做日志

alter database add logfile 'DAMENG03.log' SIZE 500;

1.3.3 修改重做日志路径

alter database mount;
alter database RENAME LOGFILE 'DM01.log' TO '/dm8/data/DM/REDO/DM01.log';
alter database RENAME LOGFILE 'DM02.log' TO '/dm8/data/DM/REDO/DM02.log';
alter database RENAME LOGFILE 'DM03.log' TO '/dm8/data/DM/REDO/DM03.log';
alter database open;

1.3.4 重做日志相关查询

相关视图:

select * from v$rlogfile;
--cur_file表示正在使用的联机日志
select * from v$rlog; 

查询redo日志相关信息:

--查询redo log日志信息
SQL> select group_id,file_id,path,rlog_size/1024/1024 M from v$rlogfile;

行号     GROUP_ID    FILE_ID     PATH                               M                   
---------- ----------- ----------- ---------------------------------- --------------------
1          2           0           /dm8/dmdbms/data/ECARD/ECARD01.log 256
2          2           1           /dm8/dmdbms/data/ECARD/ECARD02.log 256

2.数据库参数

2.1 参数分类

手动,静态和动态三种类型。分别对应 v$parameter 视图中 type 的 read only,in file,sys 和 session.
**手动参数(read only):**不能通过 SQL 命令或函数修改,只能通过修改 dm.ini 文本文件修改此参数(需要重启数据库才能生效)。
**静态参数(IN FILE) :**不能修改内存中的值,只能修改参数文件中的值,可以通过 SQL 命令或函数修改,但需要重启数据库才能生效。
动态参数(SYS 和SESSION ):ini 文件和内存可同时修改, 修改后即时生效。其中,SYS为动态系统级参数,修改后会影响所有的会话;SESSION 为动态会话级参数,修改后只针对当前会话生效。

-- v$parameter和v$dm_ini均可以查询dm数据库的参数
SQL> desc v$parameter;

行号     NAME          TYPE$         NULLABLE
---------- ------------- ------------- --------
1          ID            INTEGER       Y
2          NAME          VARCHAR(80)   Y
3          TYPE          VARCHAR(200)  Y
4          VALUE         VARCHAR(4000) Y
5          SYS_VALUE     VARCHAR(4000) Y
6          FILE_VALUE    VARCHAR(4000) Y
7          DESCRIPTION   VARCHAR(255)  Y
8          DEFAULT_VALUE VARCHAR(256)  Y
9          ISDEFAULT     INTEGER       Y

9 rows got
已用时间: 2.155(毫秒). 执行号:1605
SQL> desc v$dm_ini;

行号     NAME          TYPE$        NULLABLE
---------- ------------- ------------ --------
1          PARA_NAME     VARCHAR(128) Y
2          PARA_VALUE    VARCHAR(256) Y
3          MIN_VALUE     VARCHAR(256) Y
4          MAX_VALUE     VARCHAR(256) Y
5          DEFAULT_VALUE VARCHAR(256) Y
6          MPP_CHK       CHAR(1)      Y
7          SESS_VALUE    VARCHAR(256) Y
8          FILE_VALUE    VARCHAR(256) Y
9          DESCRIPTION   VARCHAR(256) Y
10         PARA_TYPE     VARCHAR(200) Y

10 rows got

已用时间: 10.981(毫秒). 执行号:1604.
--查询参数类型
SQL> select distinct type from v$parameter;

行号     TYPE     
---------- ---------
1          READ ONLY
2          SYS
3          IN FILE
4          SESSION

2.2 查看数据库参数

2.2.1 通过dm.ini文件查看

达梦的ini参数文件在实例路径中,文件名为dm_ini,可以直接查看该文件,获取具体ini的参数信息。

[dmdba@dmserver ECARD]$ pwd
/home/dmdba/dmdbms/data/ECARD
[dmdba@dmserver ECARD]$ head dm.ini 
#DaMeng Database Server Configuration file
#this is comments

#file location of dm.ctl
		CTL_PATH                        = /home/dmdba/dmdbms/data/ECARD/dm.ctl     #ctl file path
		CTL_BAK_PATH                    = /home/dmdba/dmdbms/data/ECARD/ctl_bak    #dm.ctl backup path
		CTL_BAK_NUM                     = 10                                                     #backup number of dm.ctl, allowed to keep one more backup file besides specified number.
		SYSTEM_PATH                     = /home/dmdba/dmdbms/data/ECARD               #system path
		CONFIG_PATH                     = /home/dmdba/dmdbms/data/ECARD               #config path
		TEMP_PATH                       = /home/dmdba/dmdbms/data/ECARD               #temporary file path

2.2.2 通过参数动态视图查看

相关视图有V$PARAMETER和V$DM_INI。 同时系统视图查看参数对比查看dm.ini文件的优点是,如果要重新配置参数,可以知道参数配置的值的范围、参数类型,及其配置生效的条件和范围等。视图有V$PARAMETER和V$DM_INI,内容比dm.ini文件多一些。

通过v$parameter查看:

SQL> select name,type,value from v$parameter limit 5;

行号     NAME         TYPE      VALUE                                
---------- ------------ --------- -------------------------------------
1          CTL_PATH     READ ONLY /home/dmdba/dmdbms/data/ECARD/dm.ctl
2          CTL_BAK_PATH READ ONLY /home/dmdba/dmdbms/data/ECARD/ctl_bak
3          CTL_BAK_NUM  SYS       10
4          SYSTEM_PATH  READ ONLY /home/dmdba/dmdbms/data/ECARD
5          CONFIG_PATH  READ ONLY /home/dmdba/dmdbms/data/ECARD

通过v$dm_ini查看:

SQL> select PARA_NAME,PARA_VALUE from v$dm_ini limit 5;

行号     PARA_NAME    PARA_VALUE                           
---------- ------------ -------------------------------------
1          CTL_PATH     /home/dmdba/dmdbms/data/ECARD/dm.ctl
2          CTL_BAK_PATH /home/dmdba/dmdbms/data/ECARD/ctl_bak
3          CTL_BAK_NUM  10
4          SYSTEM_PATH  /home/dmdba/dmdbms/data/ECARD
5          CONFIG_PATH  /home/dmdba/dmdbms/data/ECARD

2.2.3 通过系统函数查看

在DM达梦数据库中,有3个系统函数可以查看参数配置情况。

分别是SF_GET_PARA_VALUE、SF_GET_PARA_DOUBLE_VALUE和SF_GET_PARA_STRING_VALUE三个函数,分别对应参数值为数值类型、浮点类型、字符串类型的参数时使用。

语法格式:

-- 其中,SCOPE参数为1表示获取INI文件中配置参数的值,为2表示获取内存中配置参数的值
SF_GET_PARA_VALUE(scope int, paraname varchar(256))
SF_GET_PARA_DOUBLE_VALUE(scope int, paraname varchar(8187))
SF_GET_PARA_STRING_VALUE(scope int, paraname varchar(8187))

使用示例:

--查看数据库实例最大连接数,在文件和内存中的配置
SQL> SELECT SF_GET_PARA_VALUE(1, 'MAX_SESSIONS');

行号     SF_GET_PARA_VALUE(1,'MAX_SESSIONS')
---------- -----------------------------------
1          1500

已用时间: 4.974(毫秒). 执行号:1405.
SQL> SELECT SF_GET_PARA_VALUE(2, 'MAX_SESSIONS');

行号     SF_GET_PARA_VALUE(2,'MAX_SESSIONS')
---------- -----------------------------------
1          1500

已用时间: 0.770(毫秒). 执行号:1406.

2.3 修改数据库参数

查看数据库参数之后,通常需要根据应用系统和业务及数据库运行情况对参数进行修改。DM达梦数据库修改参数的方法一般有四种。

2.3.1 通过console 控制台工具修改

图形化界面方式修改,不管修改什么类型参数都需要重启数据库才能生效

2.3.1. 通过编辑dm.ini文件修改

通常在linux系统里,使用VI工具对dm.ini文件进行参数修改,然后对数据库进行重启,使得参数值生效。

2.3.2 通过alter语句修改

1.alter system

语法:

alter system set  '<参数名称>'=<参数值> [DEFERRED] [MEMORY|BOTH|SPFILE];

参数说明:

DEFERRED: 只适用于动态参数,指定 DEFERRED,参数值延迟生效,对当前 session 不生效,只对新创建的会话生效;缺省为立即生效,对当前会话和新创建的会话都生效。
MEMORY: 只对内存中的值做修改即时生效;
SPFILE: 只对 INI 文件中的值做修改;
BOTH: 内存和 INI 文件都做修改。默认情况下,为MEMORY。对于静态参数,只能指定SPFILE。

使用示例:

1)修改COMPATIBLE_MODE参数

# 查询服务器兼容模式设置,value当前会话,sys_value系统,file_value参数文件
SQL> select name,type,value,sys_value,file_value from v$parameter where name='COMPATIBLE_MODE';

行号     NAME            TYPE    VALUE SYS_VALUE FILE_VALUE
---------- --------------- ------- ----- --------- ----------
1          COMPATIBLE_MODE IN FILE 0     0         0

已用时间: 11.199(毫秒). 执行号:1702.
# 修改静态参数COMPATIBLE_MODE为2,兼容oracle
SQL> alter system set 'COMPATIBLE_MODE'=2 spfile;
DMSQL 过程已成功完成
已用时间: 11.896(毫秒). 执行号:1704.
SQL> select name,type,value,sys_value,file_value from v$parameter where name='COMPATIBLE_MODE';

行号     NAME            TYPE    VALUE SYS_VALUE FILE_VALUE
---------- --------------- ------- ----- --------- ----------
1          COMPATIBLE_MODE IN FILE 0     0         2

2)修改UNDO_RETENTION参数

# 系统级动态参数
SQL>  select name,type,value,sys_value,file_value from v$parameter where name='UNDO_RETENTION';

行号     NAME           TYPE VALUE     SYS_VALUE FILE_VALUE
---------- -------------- ---- --------- --------- ----------
1          UNDO_RETENTION SYS  90.000000 90.000000 90.000000
SQL> select name,type,value,sys_value,file_value from v$parameter where name='UNDO_RETENTION';

行号     NAME           TYPE VALUE      SYS_VALUE  FILE_VALUE
---------- -------------- ---- ---------- ---------- ----------
1          UNDO_RETENTION SYS  180.000000 180.000000 90.000000

3)修改buffer

SQL> select name,type,value,sys_value,file_value from v$parameter where name='BUFFER';

行号     NAME   TYPE    VALUE SYS_VALUE FILE_VALUE
---------- ------ ------- ----- --------- ----------
1          BUFFER IN FILE 1000  1000      1000

已用时间: 10.933(毫秒). 执行号:1800.
SQL> alter system set 'BUFFER'=2000 spfile;

2.alter session

语法:

alter session set '<参数名称>'=<参数值> [purge];

参数说明:

PURGE:指是否清理执行计划。设置后的值只对当前会话有效。当包含 PURGE 选项时会清除服务器保存的所有执行计划。

使用示例:

SQL> select name,type,value,sys_value,file_value from v$parameter where name='LIST_TABLE';

行号     NAME       TYPE    VALUE SYS_VALUE FILE_VALUE
---------- ---------- ------- ----- --------- ----------
1          LIST_TABLE SESSION 0     0         0

已用时间: 7.494(毫秒). 执行号:1710.
SQL> alter session set 'LIST_TABLE'=1;
DMSQL 过程已成功完成
已用时间: 1.013(毫秒). 执行号:1711.
SQL> select name,type,value,sys_value,file_value from v$parameter where name='LIST_TABLE';

行号     NAME       TYPE    VALUE SYS_VALUE FILE_VALUE
---------- ---------- ------- ----- --------- ----------
1          LIST_TABLE SESSION 1     0         0

已用时间: 5.848(毫秒). 执行号:1712.

2.3.3 通过系统函数修改

通常使用较多的有以下5个,分别是:
SP_SET_PARA_VALUE、SP_SET_PARA_DOUBLE_VALUE、SP_SET_PARA_STRING_VALUE;
和 SF_SET_SESSION_PARA_VALUE、SF_SET_SYSTEM_PARA_VALUE;

SQL> select name,id from v$ifun t where t.name like 'SP_SET_PARA%';

行号     NAME                     ID         
---------- ------------------------ -----------
1          SP_SET_PARA_DOUBLE_VALUE 2902
2          SP_SET_PARA_DOUBLE_VALUE 586
3          SP_SET_PARA_STRING_VALUE 2901
4          SP_SET_PARA_STRING_VALUE 585
5          SP_SET_PARA_VALUE        2900
6          SP_SET_PARA_VALUE        584
SQL> select * from v$ifun_arg  where id=586;

行号     ID          NAME     SEQ         DATA_TYPE        LEN         PREC        IO_TYPE COMMENT$
---------- ----------- -------- ----------- ---------------- ----------- ----------- ------- --------
1          586         RVAL     -1          UNKNOWN DATATYPE 0           0           RETURN  NULL
2          586         SCOPE    0           INTEGER          4           0           IN      NULL
3          586         PARANAME 1           VARCHAR          256         0           IN      NULL
4          586         VALUE    2           DOUBLE           8           0           IN      NULL

1.SP_SET_PARA_VALUE 函数:
作用:

设置 dm.ini 文件中非浮点和字符串类型的参数值

语法:

SP_SET_PARA_VALUE (scope int, ini_param_name varchar(256) ,value bigint)

参数说明:

SCOPE:修改范围(0:memory;1:both;2:spfile)

2.SP_SET_PARA_DOUBLE_VALUE 函数
作用:

设置 dm.ini 参数中浮点型的参数值

语法:

SP_SET_PARA_DOUBLE_VALUE (scope int, ini_param_name varchar(256),value double

3.SP_SET_PARA_STRING_VALUE 函数

作用:

设置 dm.ini 文件中的字符串型参数值

语法:

SP_SET_PARA_STRING_VALUE (scope int, ini_param_name varchar(256) ,value varchar(8187))

4.SF_SET_SESSION_PARA_VALUE 函数

作用:

设置会话级INI参数的值

语法:

SF_SET_SESSION_PARA_VALUE (paraname varchar(8187),value bigint)

参数说明:

paraname: 会话级 INI 参数的参数名

5.SF_SET_SYSTEM_PARA_VALUE 函数

作用:

修改系统整型、double、varchar的静态配置参数或动态配置参数。

语法:

SF_SET_SYSTEM_PARA_VALUE (paraname varchar(256), value bigint/double/varchar(256),deferred int, scope int)

参数说明:

paraname:ini 参数的参数名。
value:要设置的新值。
deferred:是否立即生效。为 0 表示当前 session 修改的参数立即生效,为 1 表示当前
session 不生效,后续再生效,默认为 0。
scope:取值为 0、1、2 。0 表示修改内存中的参数值,1 表示修改内存和 INI 文件中参数值,0 和 1 都只能修改动态的配置参数。2 表示修改 INI 文件中参数,此时可用来修改静态配置参数和动态配置参数

使用示例:

SQL> SP_SET_PARA_VALUE (2, 'MAX_SESSIONS', 200)
SQL> SELECT SF_GET_PARA_VALUE(1, 'MAX_SESSIONS');
SQL> SELECT SF_GET_PARA_VALUE(2, 'MAX_SESSIONS');

3.内存结构

3.1 数据缓冲区

用于缓存数据文件中的数据页。BUFFER 是从磁盘读出的数据页在内存中的镜像,包含四个类型,分别是normal、fast、recycle、keep,由 INI 配置中的 BUFFER、FAST_POOL_PAGES、RECYCLE、KEEP 等确定大小,不同类型的缓冲区主要表现为淘汰机制不同。

数据缓冲区的大小影响数据库的读写性能,OLTP 数据缓冲区占内存 40-60%,OLAP 可以稍大;系统应尽量减少物理读,提高逻辑读。

--查询数据缓冲区,四种类型的空间配置,如果安装时勾选自动优化,会调整数据缓冲区配置
SQL> select name,type,value,sys_value,file_value,description from v$parameter where name in ('BUFFER','FAST_POOL_PAGES','RECYCLE','KEEP');

行号     NAME            TYPE    VALUE SYS_VALUE FILE_VALUE DESCRIPTION                                 
---------- --------------- ------- ----- --------- ---------- ---------------------------
1          BUFFER          IN FILE 1000  1000      2000       Initial System Buffer Size In Megabytes
2          FAST_POOL_PAGES IN FILE 3000  3000      3000       Fast Pool Pages
3          KEEP            IN FILE 8     8         8          Initial System KEEP Buffer Size In Megabytes
4          RECYCLE         IN FILE 300   300       300        Initial System KEEP Buffer Size In Megabytes

已用时间: 9.918(毫秒). 执行号:1901.
--查看数据缓冲区信息
SQL> select * from v$bufferpool

3.2 重做日志缓冲区

重做日志是数据库与磁盘间的一层缓存,将随机的磁盘写转换成顺序写,日志缓冲区是数据库和日志间的缓存,对应 INI 参数 RLOG_BUF_SIZE。

SQL> select name,type,value,sys_value,file_value,description from v$parameter where name in ('RLOG_BUF_SIZE');

行号     NAME          TYPE    VALUE SYS_VALUE FILE_VALUE DESCRIPTION                              
---------- ------------- ------- ----- --------- ---------- -----------------------------
1          RLOG_BUF_SIZE IN FILE 1024  1024      1024       The Number Of Log Pages In One Log Buffer

已用时间: 9.359(毫秒). 执行号:1903.
--查询页大小
SQL> select page;

行号     PAGE       
---------- -----------
1          8192

已用时间: 0.681(毫秒). 执行号:1904.

3.3 SQL缓冲区

SQL CACHE POOL,简称 SCP,对应 INI 参数 CACHE_POOL_SIZE,是用来存储包信息(PACKAGE)、执行计划、结果集缓存的一片专用缓存区域,对于 SQL 类别比较多,或者 PKG比较多、复杂的系统,建议将该参数调大。

SQL> select name,type,value,sys_value,file_value,description from v$parameter where name in ('CACHE_POOL_SIZE');

行号     NAME            TYPE    VALUE SYS_VALUE FILE_VALUE DESCRIPTION                 
---------- --------------- ------- ----- --------- ---------- ----------------------------
1          CACHE_POOL_SIZE IN FILE 100   100       100        SQL buffer size in megabytes

已用时间: 13.914(毫秒). 执行号:1905.

参数为 USE_PLN_POOL,是否启动计划重用;为 0 时禁止计划重用,1 表示启动,默认为 1。RS_CAN_CACHE,是否启动结果集缓存,默认为 0,不启用。

SQL> select name,type,value,sys_value,file_value,description from v$parameter where name in ('USE_PLN_POOL','RS_CAN_CACHE');

行号     NAME         TYPE    VALUE SYS_VALUE FILE_VALUE
---------- ------------ ------- ----- --------- ----------
           DESCRIPTION                                                                                                 
           ------------------------------------------------------------------------------------------------------------
1          USE_PLN_POOL IN FILE 1     1         1
           Query Plan Reuse Mode, 0: Forbidden; 1:strictly reuse, 2:parsing reuse, 3:mixed parsing reuse

2          RS_CAN_CACHE IN FILE 0     0         0
           Resultset cache mode. 0: Forbidden; 1: Allowed only if the USE_PLN_POOL is non-zero; 2: Allowed only be set 

已用时间: 7.582(毫秒). 执行号:1906.

相关视图:

select * from v$cacheitem;
select * from v$cachesql;
select * from v$cachepln;
select * from v$cachers

3.4 字典缓冲区

字典缓冲区是存在数据库对象的一片缓冲区,对应 INI 参数 DICT_BUF_SIZE,DM8 里面数据对象其实对应的是系统表上的一些信息,内存中的数据对象是通过将系统表上的信息取出并解析出来得到的,该缓冲区一是避免了频繁向磁盘请求获取系统表信息,二是可以减少系统表信息解析开销。

SQL> select name,type,value,sys_value,file_value,description from v$parameter where name='DICT_BUF_SIZE';

行号     NAME          TYPE    VALUE SYS_VALUE FILE_VALUE DESCRIPTION     
---------- ------------- ------- ----- --------- ---------- ----------------
1          DICT_BUF_SIZE IN FILE 50    50        50         dict buffer size

已用时间: 11.512(毫秒). 执行号:1909.

相关视图:

select * from v$dynamic_tables t where T.NAME like '%DICT%';
select * from V$DICT_CACHE_ITEM;
select * from V$DICT_CACHE;

3.5 主内存池

当其他内存池(比如运行时内存池:虚拟内存池 vm pool 和会话池 session pool 等)不够时,会先向主内存池申请空间。

服务器启动时从操作系统申请的一大片内存,后续服务器运行过程中,一般情况下,很多需要内存分配的地方都是从该池分配,如果需要的内存大于配置值(MEMORY_POOL),共享内存池也可进行自动扩展,INI 参数 MEMORY_EXTENT_SIZE 指定了共享内存池每次扩展的大小,参数 MEMORY_TARGET 则指定了共享内存池能扩展到的最大大小。

相关查询:

select * from V$mem_pool;
select name, type, value, sys_value, file_value from v$parameter t where name like 'MEMORY%';

参数说明:

MEMORY_POOL:初始大小
MEMORY_EXTENT_SIZE:扩展大小
MEMORY_TARGET:目标大小
MEMORY_N_POOL:共享内存池个数,默认为 1,高并发时可设置多个。
MAX_OS_MEMORY:内存占用操作系统内存的比例,默认 100,建议调整到 80-90%。

3.6 运行时内存

特点:

使用时申请,用完即释放。包含:虚拟内存池 vm pool、会话池 session pool、排序区、HASH 区等。HASH 区和排序区都属于虚拟缓冲区 ,实际申请时使用虚拟内存池或会话内存池。

**排序区:**SORT_BUF_SIZE
少量的数据排序,优先在内存中排序,此时占用排序区;
大量的数据排序,内存中放不下,占用临时表空间排序。
如果业务经常有排序,可以适当调大排序区,提高效率。

select name, type, value, sys_value, file_value from v$parameter t where name like 'SORT%';

**HASH 区:**HJ_BUF_SIZE
HASH 连接、HASH 分区占用哈希区。如果业务 hash 连接较多,可以调大哈希区。

select name, type, value, sys_value, file_value from v$parameter t where name
like 'HJ%';

4.数据库进程

达梦为单进程多线程架构,Oracle 是多进程架构。DM 进程中主要包括监听线程、IO 线程、工作线程、调度线程、日志线程等,可以通过 DM 的动态性能视图查看线程的相关信息。

4.1 相关视图

主要相关的线程视图有如下 4 个:

V$LATCHES :记录当前正在等待的线程信息。
V$THREADS :记录当前系统中活动线程的信息,以及描述信息。
V$WTHRD_HISTORY :记录自系统启动以来,所有活动过线程的相关历史信息。
V$PROCESS :记录服务器进程信息

使用示例:

SQL> select * from v$process;

行号     PID         PNAME    TRACE_NAME TYPE$      
---------- ----------- -------- ---------- -----------
1          20921       dmserver            1

已用时间: 3.474(毫秒). 执行号:1500.
SQL>  select distinct name,count(1) from v$threads group by name order by 2 desc;

行号     NAME           COUNT(1)            
---------- -------------- --------------------
1          dm_lpq_thd     10
2          dm_purge_thd   10
3          dm_wrkgrp_thd  8
4          dm_io_thd      8
5          dm_tskwrk_thd  4
6          dm_hio_thd     4
7          dm_sql_thd     3
8          dm_sqllog_thd  2
9          dm_sql_aux_thd 1
10         dm_sched_thd   1
11         dm_redolog_thd 1

行号     NAME          COUNT(1)            
---------- ------------- --------------------
12         dm_chkpnt_thd 1
13         dm_trctsk_thd 1
14         dm_quit_thd   1
15         dm_lsnr_thd   1
16         dm_audit_thd  1

16 rows got

已用时间: 4.437(毫秒). 执行号:1501.

4.2 查看数据库进程

查看数据库进程:

[root@dmserver ~]#  ps -ef|grep dmserver
dmdba     2761     1  0 11月12 ?      00:02:28 /dm8/dmdbms/bin/dmserver path=/dm8/dmdbms/data/FACE/dm.ini -noconsole

查看数据库线程:

[root@dmserver ~]# ps -T -p 2761
  PID  SPID TTY          TIME CMD
 2761  2761 ?        00:00:00 dmserver
 2761  2764 ?        00:00:01 dm_sqllog_thd
 2761  2766 ?        00:00:00 dm_quit_thd
 2761  2767 ?        00:00:00 dm_io_thd
 2761  2768 ?        00:00:00 dm_io_thd
 2761  2769 ?        00:00:00 dm_io_thd
 2761  2770 ?        00:00:00 dm_io_thd
 2761  2771 ?        00:00:00 dm_io_thd
 2761  2772 ?        00:00:00 dm_io_thd
 2761  2773 ?        00:00:00 dm_io_thd
 2761  2774 ?        00:00:00 dm_io_thd
 2761  2775 ?        00:00:00 dm_io_thd
 2761  2776 ?        00:00:00 dm_io_thd
 2761  2777 ?        00:00:00 dm_io_thd
 2761  2778 ?        00:00:00 dm_io_thd
 2761  2779 ?        00:00:00 dm_io_thd
 2761  2780 ?        00:00:00 dm_io_thd
 2761  2781 ?        00:00:00 dm_io_thd
 2761  2782 ?        00:00:00 dm_io_thd
 2761  2783 ?        00:00:05 dmserver
 2761  2786 ?        00:00:00 dm_chkpnt_thd
 2761  2787 ?        00:00:07 dm_redolog_thd
 2761  2789 ?        00:00:00 dm_hio_thd
 2761  2790 ?        00:00:00 dm_hio_thd
 2761  2791 ?        00:00:00 dm_hio_thd
 2761  2792 ?        00:00:00 dm_hio_thd
 2761  2793 ?        00:00:01 dm_tskwrk_thd
 2761  2794 ?        00:00:01 dm_tskwrk_thd
 2761  2795 ?        00:00:01 dm_tskwrk_thd
 2761  2796 ?        00:00:01 dm_tskwrk_thd
 2761  2797 ?        00:00:01 dm_tskwrk_thd
 2761  2798 ?        00:00:01 dm_tskwrk_thd
 2761  2799 ?        00:00:01 dm_tskwrk_thd
 2761  2800 ?        00:00:01 dm_tskwrk_thd
 2761  2801 ?        00:00:01 dm_tskwrk_thd
 2761  2802 ?        00:00:01 dm_tskwrk_thd
 2761  2803 ?        00:00:01 dm_tskwrk_thd
 2761  2804 ?        00:00:01 dm_tskwrk_thd
 2761  2805 ?        00:00:01 dm_tskwrk_thd
 2761  2806 ?        00:00:01 dm_tskwrk_thd
 2761  2807 ?        00:00:01 dm_tskwrk_thd
 2761  2808 ?        00:00:01 dm_tskwrk_thd
 2761  2809 ?        00:00:01 dm_sqllog_thd
 2761  2810 ?        00:00:00 dm_sql_aux_thd
 2761  2811 ?        00:00:13 dm_purge_thd
 2761  2812 ?        00:00:05 dmserver

top 命令查看达梦数据库 CPU 资源占用:

[dmdba@dmserver script]$ cd ../bin
[dmdba@dmserver bin]$ ./DmServiceECARD status
DmServiceECARD (pid 3068) is running.
[dmdba@dmserver bin]$ ps -ef|grep dm.ini
dmdba     2761     1  0 11月12 ?      00:02:28 /dm8/dmdbms/bin/dmserver path=/dm8/dmdbms/data/FACE/dm.ini -noconsole
dmdba     3068     1  0 11月12 ?      00:02:30 /dm8/dmdbms/bin/dmserver path=/dm8/dmdbms/data/ECARD/dm.ini -noconsole
dmdba    24043 23880  0 23:49 pts/5    00:00:00 grep --color=auto dm.ini
[dmdba@dmserver bin]$ top -Hp 2761
Threads:  66 total,   0 running,  66 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8172916 total,  1469456 free,  4174348 used,  2529112 buff/cache
KiB Swap:  8388604 total,  8387316 free,     1288 used.  3669488 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                         
 2761 dmdba     20   0 3126724 545116  17528 S  0.0  6.7   0:00.48 dmserver                                                                        
 2764 dmdba     20   0 3126724 545116  17528 S  0.0  6.7   0:01.12 dm_sqllog_thd                                                                   
 2766 dmdba     20   0 3126724 545116  17528 S  0.0  6.7   0:00.00 dm_quit_thd                                                                     
 2767 dmdba     20   0 3126724 545116  17528 S  0.0  6.7   0:00.00 dm_io_thd                                                                       
 2768 dmdba     20   0 3126724 545116  17528 S  0.0  6.7   0:00.00 dm_io_thd                                                                       
 2769 dmdba     20   0 3126724 545116  17528 S  0.0  6.7   0:00.00 dm_io_thd                                                                       
 2770 dmdba     20   0 3126724 545116  17528 S  0.0  6.7   0:00.01 dm_io_thd

5.归档日志

5.1 开启归档

归档配置有 三 种方式:

  1. SQL 语句完成 dmarch.ini 和 ARCH_INI 配置;
  2. 手动编写 dmarch.ini 文件和设置参数 ARCH_INI;
  3. 利用 manager 图形化工具配置。

5.1.1 通过sql命令开归档

-- 1.查看当前的归档模式
select arch_mode from v$database;
-- 2.启动到mount状态,状态3为mount
alter database mount;
select status$ from v$database; 
-- 3.添加存放归档的目录,dm没有默认归档路径,file_sie达到多大切换另一个归档,space_limit设置归档空间限制
alter database add archivelog 'dest= /dm8/dmdbms/arch,type=local,file_size=64,space_limit=10240';
-- 4.开归档
SQL> alter database archivelog;
-- 5.启动到open状态,状态4为open
alter database open;
select status$ from v$database;
-- 6.查看归档配置
select arch_mode from v$database;
select arch_name,arch_type,arch_dest,arch_file_size,arch_space_limit from v$dm_arch_ini;
-- 7.检查归档线程
select DISTINCT name, thread_desc from v$threads;

说明:

1. V$database 中的 status$用数字来表示状态的,这里一共有 6 种状态,如下:
   1:启动;2:启动,redo 完成;3 :MOUNT ;4 :打开;5:挂起;6:关闭
2. Roles$:角色,也是用数字表示。
   0:普通;1:主库;2:备库

5.1.2 修改dm.ini 与dmarch.ini开归档

# 1.使用配置文件开关归档
[dmdba@dmserver DAMENG]$ cd /opt/dm8/data/DAMENG
# 2.开启dmarch.ini配置文件
[dmdba@dmserver DAMENG]$ cat dm.ini | grep -i arch_ini
ARCH_INI = 1 #启用dmarch.ini
# 3.手动编辑dmarch.ini 文件,之后保存 。dmarch.ini文件中添加内容如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/arch
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 0
[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/arch1
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 0
# 4.重启数据库服务生效
[dmdba@dmserver DAMENG]$ DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]
[dmdba@dmserver DAMENG]$ DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]
# 5.检查验证
SQL> select arch_mode from v$database;
SQL> select arch_name,arch_type,arch_dest,arch_file_size,arch_space_limit from v$dm_arch_ini;

参数说明:

ARCH_TYPE:归档类型,有以下几种: 本地归档 LOCAL(一台主库最多配 8 个)、 远程实时归档REALTIME(一台主库最多配 8 个)、远程异步归档 ASYNC(一台主库最多配 8 个)、即时归档 TIMELY(一个主库最多配 8 个)、远程归档 REMOTE(一个主库最多配 8 个)
ARCH_DEST: 归档路径
ARCH_FILE_SIZE:单个归档文件大小,单位 MB,取值范围(64~2048),默认为 1024MB,即 1G
ARCH_SPACE_LIMIT:归档文件空间限制,单位 MB,取值范围(1024~4294967294),0表示无空间限制

5.1.3 使用manager工具开归档

使用manager图像化工具来开启归档。

5.2 关闭归档

alter database mount;
alter database noarchivelog;
-- 删除归档路径配置,可以不做
ALTER DATABASE DELETE ARCHIVELOG 'dest=/home/dmdba/arc';
ALTER DATABASE DELETE ARCHIVELOG 'dest=/home/dmdba/arc1';
alter database open;
select arch_mode from v$database;

5.3 归档切换

数据库自动完成归档的切换,DM 支持手工切换归档。

--三条语句功能一样,选择一条执行即可,产生新的归档日志,redo日志并不会切换
alter database archivelog current;
alter system archive log current;
alter system switch logfile; --oracle中是切换联机日志的,达梦中是切换归档的

5.4 归档日志清理

--归档删除相关的系统函数
SQL> select name from v$ifun t where name like 'SF_ARCHIVELOG_%';

行号     NAME                            
---------- --------------------------------
1          SF_ARCHIVELOG_DELETE_BEFORE_LSN
2          SF_ARCHIVELOG_DELETE_BEFORE_TIME
--删除10天前的归档日志。
Select SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-10);
--删除某个lsn之前的归档
select SF_ARCHIVELOG_DELETE_BEFORE_LSN(803946);

归档自动删除:

#dmarch.ini,可以设置保留期,到期自动清理
arch_reserver_time #归档日志保留时间,单位分钟

针对业务繁忙期间,出现磁盘 IO 不定时繁忙的情况,因为配置了归档的空间上限(归档达到此上限),生成新的归档日志前删除旧的归档日志文件造成了 IO 的不定时繁忙。
解决方案:配置 JOB 作业,在业务空间期定时清理 N 天之前的归档文件。

5.5 归档日志检测

可以通过dmrachk检查归档日志连续性.

dmrachk帮助信息:

[dmdba@dmserver ~]$ dmrachk 
rachk V8
version: 03134283904-20220630-163817-20005
格式: dmrachk keyword=value

例程: dmrachk arch_fil=/opt/a.log

强制参数: 必须指定arch_fil或者arch_path

关键字              说明(默认值)
--------------------------------------------------------------------------------
ARCH_FIL            指定一个归档文件
CMP_FIL             指定一个用于比较的归档文件
ARCH_PATH           指定一个归档目录
CMP_PATH            指定一个用于比较的归档目录
RECV_PATH           指定一个待修复的归档目录
TRUNC_FIL           指定新的文件,用于存储从错误归档中,抽取的有效数据。
EXTRACT_FIL         指定新的文件,用于存储从指定的seq范围的归档文件中抽取数据
ARCH_BAK_PATH       指定备份文件路径,用于存储归档修复过程中的重复文件
CHECK               校验级别(0, 1, 2, 3, 4) 0: 文件校验, 1: 包校验(seq & magic),2:ptx校验,3:rrec校验, 4:清理无效的归档文件, 5:修复归档文件到free之后的最后一个有效日志包。默认(0)
BEGIN_LSN           指定归档目录时,指定排除小于该LSN的文件
END_LSN             指定归档目录时,指定排除大于该LSN的文件
BEGIN_SEQ           指定归档目录时,抽取大于该SEQ的文件
END_SEQ             指定归档目录时,抽取小于该SEQ的文件
BEFORE_LSN          CHECK=4,指定归档目录,删除该LSN之前的文件。默认为0,所有LSN范围内日志均删除
BEFORE_SEQ          CHECK=4,指定归档目录,删除该SEQ之前的文件。默认为0,所有SEQ范围内日志均删除
BEFORE_TIME         CHECK=4,指定归档目录,删除该时间点之前的文件。默认删除所有时间点的归档
EXCLUDE_DB_MAGIC    CHECK=4,指定归档目录,删除指定的DB_MAGIC之外的文件。
OUTPUT_FIL          LOG可以指定输出到文件
DCR_INI             指定dmdcr.ini路径,若未指定,则不使用
DM_INI              目标库dm.ini的路径,用于获取日志加密信息
AFTER_FREE          指定TRUNC_FIL时,是否校验并抽取FREE之后的内容。0 不抽取;1 抽取。默认0
CYT_UPDATE          是否更新归档密钥,需要与ARCH_PATH同时使用。0 不更新;1 更新。默认0。
CYT_UPDATED_PATH    归档密钥更新目标文件所在目录。未指定时,直接在原文件上更新;若指定,则更新到新的路径,原文件保持不变
HELP                显示帮助信息

dmrachk检测归档日志:

dmrachk arch_path=/dm8/dmdbms/arch

5.6 相关数据字典

V$ARCHIVED_LOG:显示当前实例的所有归档日志文件信息。
V$DM_ARCH_INI :用来存放归档路径等相关归档参数信息。
V$ARCH_FILE :查询本地归档日志信息。对DMDSC集群,除了显示本地归档外,也显示远程归档信息。
V$ARCH_QUEUE :显示当前归档任务队列信息。
V$ARCH_SEND_INFO:用于在主库上查询各备库的日志发送统计信息。
V$ARCH_STATUS :查询归档状态信息,归档状态是由主库记录和维护的,此视图只在主库上查询有效,备库上的查询结果没有实际意义。
V$BACKUPSET_ARCH: 显示备份集的归档信息。
V$BACKUPSET_SEARCH_DIRS: 查询 V$BACKUPSET_SEARCH_DIRS 显示当前会话已添加的备份目录,即备份集搜索目录。若用户没有添加备份目录,那么仅显示默认的备份目录。

6.服务管理

6.1 数据库服务状态

Mount:不能访问数据,只能对归档模式,数据库模式等进行维护
Open:可以访问数据,对外正常提供服务
Suspend:不允许对数据更改,写日志,限制磁盘写入,否则挂起
Mount 与 open 状态可以互切 ,open 与 suspend 状态可以互切,但是 mount 与 suspend不能互切

6.2 数据库模式

Normal:默认打开服务时是 open,第一次初始化打开时不允许 mount 打开.
Primary :无论是否指定状态,打开服务时是 mount
Standby:无论是否指定状态,打开服务时是 mount
以上三种模式,在 mount 状态下允许切换

6.3 数据库服务的启动

方式1:

[dmdba@dmserver ~]$ DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]
或  mount--->open
[dmdba@dmserver ~]$ DmServiceDMSERVER start  mount
Starting DmServiceDMSERVER: [ OK ]
[dmdba@dmserver arch]$ disql sysdba/dmdba123
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间: 14.063(毫秒)
SQL> select status$ from v$instance;
行号 status$
---------- -------
1 MOUNT
SQL> alter database open;
SQL> alter database mount;
Mount 与 open 可以互切.

方式2:

[dmdba@dmserver ~]$dmserver /opt/dm8/data/DAMENG/dm.ini -noconsole mount &
[dmdba@dmserver ~]$dmserver /opt/dm8/data/DAMENG/dm.ini -noconsole
Dmserver help 查看帮助
最好调到后台启动
disql sysdba/dmdba123
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间: 13.229(毫秒)
SQL> select status$ from v$instance;
行号 status$
---------- -------
1 MOUNT
SQL>alter database open;
注意此处加& 和不加的区别:加&时,在当前窗口执行 ctrl+c,服务的状态不受影响

方式3:

[root@dmserver ~]# systemctl enable DmServiceDMSERVER.service
[root@dmserver ~]# systemctl start  DmServiceDMSERVER.service
[root@dmserver ~]# systemctl status DmServiceDMSERVER.service

方式4:类似于windows的服务管理方式

调用图形,所在位置:/opt/dm8/tool/dmservice.sh

[dmdba@dmserver tool]$ dmservice.sh

6.4 数据库服务的关闭

方式1:

[dmdba@dmserver ~]$ DmServiceECARD status
DmServiceECARD (pid 6880) is running.
[dmdba@dmserver ~]$ DmServiceECARD stop
Stopping DmServiceECARD:                                   [ OK ]

方式2:

[dmdba@dmserver ~]$ disql sysdba/Newcapec.2022

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 4.157(ms)
disql V8
SQL> shutdown immediate;
或
SQL> shutdown abort;
操作已执行
已用时间: 1.331(毫秒). 执行号:0.
SQL> exit
[dmdba@dmserver ~]$ DmServiceECARD status
DmServiceECARD dead but pid file exists

方式3:

[root@dmserver ~]# systemctl stop DmServiceECARD.service

方式4:

使用图形化工具:dmservice.sh

7.数据库版本查询

方式1:

SQL> select * from v$version;

行号     BANNER                           
---------- ---------------------------------
1          DM Database Server 64 V8
2          8.1
3          企业版
4          DB Version: 0x7000c
5          03134283904-20220630-163817-20005

已用时间: 0.339(毫秒). 执行号:56802.

方式2:

SQL> select id_code;

行号     ID_CODE                            
---------- -----------------------------------
1          --03134283904-20220630-163817-20005

已用时间: 1.932(毫秒). 执行号:56803.
赞(0) 打赏
未经允许不得转载:徐万新之路 » 03.达梦DCA认证课程-DM数据库体系结构

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册