暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DM8_Linux服务脚本、动态试图等常用脚本

原创 BinGoSTop 2025-05-19
109

DM8_Linux服务脚本

1 服务脚本

在 Linux(Unix)系统中,很多程序的进程是以后台运行的方式启动的,进程以后台方式运行能够保证进程不因终端窗口的关闭而关闭,而且这些进程大多是常驻的,需要长期运行且不中断的。DM 中也有许多这样的程序,这些程序的稳定运行保证了 DM 数据库实例或 DM 集群的正常运行,这些程序就是 DM 服务程序。为了方便用户能够使 DM 服务程序以后台运行的方式启动,我们为 DM 服务程序提供了对应的服务脚本模板。

DM 服务脚本

DM 提供了 14 个服务脚本模板,分为两类:

第一类 位于 bin 目录下,不支持修改模板名称的脚本。分别为:DmAPService 服务、DmAuditMonitor 服务、DmJobMonitor 服务、DmInstanceMonitor 服务。

第二类 位于 bin/service_template 目录下,支持修改模板名称的脚本。分别为:DmServer 服务、DmWatchService 服务、DmMonitorService 服务、DmASMSvrService 服务、DmASMSvrmService 服务、DmCSSService 服务、DmCSSMonitorService 服务。

服务数量管理

不同的脚本服务可运行的数量各不相同。下面分别进行介绍:

第一类服务脚本模板对应的 DM 服务程序,一个 DM 系统只需要运行一个。

第二类服务脚本模板对应的 DM 服务程序,每一种进程均可在同一物理机器上运行一个或多个,同样一台物理机器也可以运行多种服务脚本。用户可以将第二类服务脚本模板拷贝到其他目录,并修改脚本名称。建议用户将服务脚本模板名称作为新服务脚本名称的前缀。

1.3 服务脚本参数修改

使用这些服务脚本前,需要先手动修改服务脚本的参数。

以下将详细讲解各种服务脚本需要设置的参数。

1.3.1 DmAPService

达梦数据库辅助插件服务。dmap 对应的服务脚本模板,不需要修改脚本参数。DmAPService 服务为单实例,即当前达梦数据库系统只可运行一个 DmAPService 服务。

参数名称

参数说明

DMAP_INI_PATH

服务脚本所需要的 ini 文件路径,即 dmap.ini 文件路径

IS_DISABLED

是否禁用服务脚本,是指为 true 则禁用此脚本

SAVE_PROC_OUT

是否在脚本服务日志文件中记录脚本服务运行过程中产生的日志。TRUE:是;FALSE:否。缺省为 FALSE

1.3.2 DmAuditMonitor

达梦数据库实时审计监控服务。dmamon 对应的服务脚本模板,DmAuditMonitor 服务为单实例,即当前达梦数据库系统只可运行一个 DmAuditMonitor 服务。

参数名称

参数说明

INI_PATH

服务脚本所需要的 ini 文件路径,即 dmamon.ini 文件路径

DCR_INI_PATH

服务脚本所需要的 ini 文件路径,即 dmdcr.ini 文件路径

USER_ID

数据库连接字符串,格式为 username/password@servername:port

SSL_PATH

加密通讯(SSL)数据库的 SSL 文件的路径

SSL_PWD

加密通讯(SSL)数据库的 SSL 文件的密码

IS_DISABLED

是否禁用服务脚本,是指为 true 则禁用此脚本

SAVE_PROC_OUT

是否在脚本服务日志文件中记录脚本服务运行过程中产生的日志。TRUE:是;FALSE:否。缺省为 FALSE

1.3.3 DmJobMonitor

达梦数据库实时作业监控。dmjmon 对应的服务脚本模板,DmJobMonitor 服务为单实例,即当前达梦数据库系统只可运行一个 DmJobMonitor 服务。

参数名称

参数说明

USER_ID

数据库连接字符串,格式为 username/password@servername:port

SSL_PATH

加密通讯(SSL)数据库的 SSL 文件的路径

SSL_PWD

加密通讯(SSL)数据库的 SSL 文件的密码

IS_DISABLED

是否禁用服务脚本,是指为 true 则禁用此脚本

SAVE_PROC_OUT

是否在脚本服务日志文件中记录脚本服务运行过程中产生的日志。TRUE:是;FALSE:否。缺省为 FALSE

1.3.4 DmInstanceMonitor

达梦数据库实例实时监控服务。dmimon 对应的服务脚本模板,除了 SAVE_PROC_OUT 参数,其他参数不需要修改。DmInstanceMonitor 服务为单实例,即当前达梦数据库系统只可运行一个 DmInstanceMonitor 服务。

参数名称

参数说明

SAVE_PROC_OUT

是否在脚本服务日志文件中记录脚本服务运行过程中产生的日志。TRUE:是;FALSE:否。缺省为 FALSE

1.3.5 DmService

达梦数据库实例服务。dmserver 对应的服务脚本模板,一台物理主机可以运行多个 dmserver 实例,同样一台物理主机也可以运行多个 dmserver 的服务脚本。用户可以将服务脚本模板拷贝到其他目录,并修改脚本名称。

参数名称

参数说明

INI_PATH

服务脚本所需要的 ini 文件路径,即 dm.ini 文件路径

DCR_INI_PATH

服务脚本所需要的 ini 文件路径,即 dmdcr.ini 文件路径

DPC_MODE

DPC 中的实例角色,参数为 BP、MP、SP

SIGNKEY_PASS

GmSSL signkey.pem 证书文件的口令密码

ENCKEY_PASS

GmSSL enckey.pem 证书文件的口令密码

START_MODE

服务启动模式,即 dmserver 启动模式,参数为 open 和 mount

IS_DISABLED

是否禁用服务脚本,是指为 true 则禁用此脚本

SAVE_PROC_OUT

是否在脚本服务日志文件中记录脚本服务运行过程中产生的日志。TRUE:是;FALSE:否。缺省为 FALSE

1.3.6 DmWatcherService

达梦数据库数据守护服务(V4.0)。dmwatcher 对应的服务脚本模板。

参数名称

参数说明

INI_PATH

服务脚本所需要的 ini 文件路径,即 dmwatcher.ini 文件路径

IS_DISABLED

是否禁用服务脚本,是指为 true 则禁用此脚本

SAVE_PROC_OUT

是否在脚本服务日志文件中记录脚本服务运行过程中产生的日志。TRUE:是;FALSE:否。缺省为 FALSE

1.3.7 DmMonitorService

达梦数据库数据守护监视器服务(V4.0)。dmmonitor 对应的服务脚本模板。

参数名称

参数说明

INI_PATH

服务脚本所需要的 ini 文件路径,即 dmmonitor.ini 文件路径

IS_DISABLED

是否禁用服务脚本,是指为 true 则禁用此脚本

SAVE_PROC_OUT

是否在脚本服务日志文件中记录脚本服务运行过程中产生的日志。TRUE:是;FALSE:否。缺省为 FALSE

1.3.8 DmASMSvrService

达梦数据库集群同步服务。dmasmsvr 对应的服务脚本模板。

参数名称

参数说明

DCR_INI_PATH

服务脚本所需要的 ini 文件路径,即 dmdcr.ini 文件路径

IS_DISABLED

是否禁用服务脚本,是指为 true 则禁用此脚本

SAVE_PROC_OUT

是否在脚本服务日志文件中记录脚本服务运行过程中产生的日志。TRUE:是;FALSE:否。缺省为 FALSE

1.3.9 DmASMSvrmService

达梦数据库集群同步服务,专门用于 DMASM 镜像环境。dmasmsvrm 对应的服务脚本模板。

参数名称

参数说明

DCR_INI_PATH

服务脚本所需要的 ini 文件路径,即 dmdcr.ini 文件路径

IS_DISABLED

是否禁用服务脚本,是指为 true 则禁用此脚本

SAVE_PROC_OUT

是否在脚本服务日志文件中记录脚本服务运行过程中产生的日志。TRUE:是;FALSE:否。缺省为 FALSE

1.3.10 DmCSSService

达梦数据库集群同步监控服务。dmcss 对应的服务脚本模板。

参数名称

参数说明

DCR_INI_PATH

服务脚本所需要的 ini 文件路径,即 dmdcr.ini 文件路径

IS_DISABLED

是否禁用服务脚本,是指为 true 则禁用此脚本

SAVE_PROC_OUT

是否在脚本服务日志文件中记录脚本服务运行过程中产生的日志。TRUE:是;FALSE:否。缺省为 FALSE

1.3.11 DmCSSMonitorService

达梦数据库自动存储管理器服务。dmcssm 对应的服务脚本模板。

参数名称

参数说明

INI_PATH

服务脚本所需要的 ini 文件路径,即 dmcssm.ini 文件路径

IS_DISABLED

是否禁用服务脚本,是指为 true 则禁用此脚本

SAVE_PROC_OUT

是否在脚本服务日志文件中记录脚本服务运行过程中产生的日志。TRUE:是;FALSE:否。缺省为 FALSE

1.4 服务使用命令

服务脚本支持的命令包括:

start|stop|status|condrestart|restart

注意事项:stop 时

如果服务停止失败,服务脚本将循环去关闭服务进程,服务脚本不会主动强杀服务进程,此时需要用户手动停止服务进程。
DMDSC环境下,必须依次停止各个节点服务,即仅当一个服务成功停止后才能停止下一个服务。

动态管理和性能视图

系统信息

包括数据库版本、实例统计信息、资源限制信息、进程信息、全局索引 IID 信息、事件信息;涉及的动态视图有 V$SESSIONS、V$INSTANCE、V$RESOURCE_LIMIT、V$PROCESS、V$IID、V$SYSSTAT 等。

存储信息

包括数据库信息、表空间信息、数据文件信息、日志相关信息;涉及的动态视图有 V$DATAFILE、V$DATABASE、V$TABLESPACE、V$HUGE_TABLESPACE、V$RLOGFILE 等。

2.3 内存管理信息

包括内存池使用情况、BUFFER 缓冲区信息、虚拟机信息、虚拟机栈帧信息;涉及的动态视图有 V$MEM_POOL、V$VMS、V$STKFRM、V$BUFFERPOOL、V$BUFFER_LRU_FIRST、V$BUFFER_UPD_FIRST、V$BUFFER_LRU_LAST、V$BUFFER_UPD_LAST 等。

2.4 事务信息

包括所有事务信息、当前事务可见的事务信息、事务锁信息(TID 锁、对象锁)、回滚段信息、事务等待信息;涉及的动态视图有 V$TRX、V$TRXWAIT、V$TRX_VIEW、V$LOCK、V$PURGE 等。

2.5 线程信息

包括所有活动线程信息、线程作业信息、线程锁信息、线程的资源等待信息;涉及的动态视图有 V$THREADS、V$LATCHES 等。

2.6 历史模块

包括 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$SQL_HISTORY、V$SQL_NODE_HISTORY、V$SQL_NODE_NAME 等。

2.7 缓存信息

包括 SQL 语句缓存、执行计划缓存、结果集缓存、字典缓存信息、字典缓存中的对象信息、代价信息;涉及的动态视图有 V$CACHEITEM、V$SQL_PLAN、V$CACHERS、V$CACHESQL、V$DICT_CACHE_ITEM、V$DICT_CACHE 等。

2.8 会话信息

包括连接信息、会话信息;涉及的动态视图有 V$CONNECT、V$STMTS、V$SESSIONS 等。

3 执行计划

执行计划是 SQL 语句的执行方式,由查询优化器为语句设计的执行方式,交给执行器去执行。在 SQL 命令行使用 EXPLAIN 可以打印出语句的执行计划。

3.1 创建测试表及索引

CREATE TABLE T1(C1 INT,C2 CHAR);

CREATE TABLE T2(D1 INT,D2 CHAR);

CREATE INDEX IDX_T1_C1 ON T1(C1);

INSERT INTO T1 VALUES(1,'A');

INSERT INTO T1 VALUES(2,'B');

INSERT INTO T1 VALUES(3,'C');

INSERT INTO T1 VALUES(4,'D');

INSERT INTO T2 VALUES(1,'A');

INSERT INTO T2 VALUES(2,'B');

INSERT INTO T2 VALUES(5,'C');

INSERT INTO T2 VALUES(6,'D');

3.2 查看执行计划

EXPLAIN SELECT A.C1+1,B.D2 FROM T1 A, T2 B WHERE A.C1 = B.D1;

3.3 执行计划如下

这个执行计划看起来就像一棵树,执行过程为:控制流从上向下传递,数据流从下向上传递。其中,类似[1,12,56]这样的三个数字,分别表示估算的操作符代价、处理的记录行数和每行记录的字节数。同一层次中的操作符,如本例中的 CSCN2 和 SSEK2,由父节点 NEST LOOP INDEX JOIN2 控制它们的执行顺序。

该计划的大致执行流程如下:

  1. CSCN2: 扫描 T2 表的聚集索引,数据传递给父节点索引连接;
  2. NEST LOOP INDEX JOIN2: 当左孩子有数据返回时取右侧数据;
  3. SSEK2: 利用 T2 表当前的 D1 值作为二级索引 IDX_T1_C1 定位查找的 KEY,返回结果给父节点;
  4. NEST LOOP INDEX JOIN2: 如果右孩子有数据则将结果传递给父节点 PRJT2,否则继续取左孩子的下一条记录;
  5. PRJT2: 进行表达式计算 C1+1, D2;
  6. NSET2: 输出最后结果;
  7. 重复过程 1) ~ 4)直至左侧 CSCN2 数据全部取完。

4查看模式对象的空间使用

4.1 查看用户占用的空间

可以使用系统函数 USER_USED_SPACE 得到用户占用空间的大小,函数参数为用户名,返回值为占用的页的数目。

SELECT USER_USED_SPACE('TEST_USER');

4.2 查看表占用的空间

可以使用系统函数 TABLE_USED_SPACE 得到表对象占用空间的大小,函数参数为模式名和表名,返回值为占用的页的数目

SELECT TABLE_USED_SPACE('SYSDBA', 'TEST');

4.3 查看表使用的页数

可以使用系统函数 TABLE_USED_PAGES 得到表对象实际使用页的数目,函数参数为模式名和表名,返回值为实际使用页的数目。

SELECT TABLE_USED_PAGES('SYSDBA', 'TEST');

查看表空闲页堆栈占用的空间

可以使用系统函数 TABLE_FREE_PAGE_STACK_USED_SPACE 得到表空闲页堆栈占用空间的大小,函数参数为模式名和表名,返回值为占用的页的数目。

SELECT TABLE_FREE_PAGE_STACK_USED_SPACE ('SYSDBA', 'TEST');

查看索引占用的空间

可以使用系统函数 INDEX_USED_SPACE 得到索引占用空间的大小,函数参数为索引 ID,返回值为占用的页的数目。

SELECT INDEX_USED_SPACE(33555463);

查看索引使用的页数

可以使用系统函数 INDEX_USED_PAGES 得到索引实际使用页的数目,函数参数为索引 ID,返回值为实际使用页的数目。

SELECT INDEX_USED_PAGES(33555463);

数据类型的空间使用

各种数据类型占用的空间是不同的,下表列出了主要数据类型所需要的空间。

数据类型

所需空间

CHAR

SIZE 为 1~8188 字节,
具体情况受到页面大小和记录大小的共同限制

VARCHAR

SIZE 为 1~8188 字节,
具体情况受到页面大小和记录大小的共同限制

TINYINT BIT BYTE

需要 1 个字节

SMALLINT

需要 2 个字节

INT

需要 4 个字节

BIGINT

需要 8 个字节

REAL

需要 4 个字节

FLOAT

需要 8 个字节

DOUBLE DOUBLE PRECISION

需要 8 个字节

DEC DECIMAL NUMERIC

SIZE 为 1~20 个字节

BINARY

SIZE 为 1~8188 字节,
具体情况受到页面大小和记录大小的共同限制

VARBINARY

SIZE 为 1~8188 字节,
具体情况受到页面大小和记录大小的共同限制

DATE

需要 3 个字节

TIME

需要 5 个字节

TIMESTAMP DATETIME

需要 8 个字节

TIME WITH TIME ZONE

需要 7 个字节

TIMESTAMP WITH TIME ZONE

需要 10 个字节

INTERVAL YEAR
INTERVAL MONTH
INTERVAL YEAR TO MONTH

需要 12 个字节

INTERVAL DAY
INTERVAL HOUR
INTERVAL MINUTE
INTERVAL SECOND
INTERVAL DAY TO HOUR
INTERVAL DAY TO MINUTE
INTERVAL DAY TO SECOND
INTERVAL HOUR TO MINUTE
INTERVAL HOUR TO SECOND
INTERVAL MINUTE TO SECOND

需要 24 个字节

BLOB
IMAGE
LONGVARBINARY

SIZE 为 1~(100G-1)字节

CLOB
TEXT
LONGVARCHAR

SIZE 为 1~(100G-1)字节

以上综合测试案例:

创建一个测试表、索引

create table tt1 as select * from dba_users;

create index ind_tt1_userid on tt1(user_id);

使用自插入方式扩大表,同时使用USER_USED_SPACE等命令查看空间

insert into tt1 select * from tt1;

commit

当tt1表640行时如下左所示;当tt1表327680行时如下右图所示:

select segment_name,sum(bytes)/1024/1024,segment_type from dba_segments where owner='BINGO' group by segment_name,segment_type;

5 并行查询

并行查询(Parallel Query,PQ)是一种多个线程或进程间协作、共同完成 SQL 计划的优化技术。

根据参与执行的 DM 服务器实例个数,并行查询可以划分为多机并行查询和单机并行查询。单机并行查询仅利用了单机的 CPU、磁盘、内存等机器资源,因此又称为本地并行查询。

DM 支持本地并行和多机并行,并行查询具体实现上采用对称并行技术,即每一个执行者(进程或线程)都执行相同的计划。主要执行者负责向其他并行执行者分发计划、搜集数据并向客户返回最终结果。不管是主执行者,还是从执行者,它们执行的计划都是完全相同的.

HINT 语法格式如下:

/*+ PARALLEL([<表名>] <并行任务个数>) */

SELECT /*+ PARALLEL(4) */ * FROM tt1;

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论