当前位置:文档之家› 达梦数据库DM8集群代理使用手册-D

达梦数据库DM8集群代理使用手册-D

达梦数据库DM8集群代理使用手册-D
达梦数据库DM8集群代理使用手册-D

DM8 集群代理使用手册Service manual of DM8_DCP

前言

概述

本文档主要介绍DM 集群代理的架构、提供的功能、以及如何搭建和使用DM 集群代理。读者对象

本文档主要适用于DM 数据库的:

●开发工程师

●测试工程师

●技术支持工程师

●数据库管理员

通用约定

在本文档中可能出现下列标志,它们所代表的含义如下:

表0.1 标志含义

在本文档中可能出现下列格式,它们所代表的含义如下:

表0.2 格式含义

目录

1DM8 集群代理简介 (1)

2体系架构 (2)

3功能模块管理 (3)

3.1集群配置 (3)

3.2代理管理 (4)

3.3连接池 (5)

3.4登录管理 (5)

3.5语句请求管理 (5)

4接口管理 (6)

4.1添加MPP 站点信息 (6)

4.2清除MPP 站点信息 (6)

4.3设置用户名和密码信息 (6)

4.4获取MPP 配置信息 (6)

4.5手动释放DCP 连接缓存 (7)

5动态视图管理 (8)

5.1V$SESSIONS (8)

5.2V$SYSSTAT (8)

5.3V$DCPINSTS (8)

5.4V$DCP_CONNPOOL (9)

6典型案例 (10)

6.1经典情景一:普通MPP 环境 (10)

6.2经典情景二:MPP 主备环境 (14)

6.3经典情景三:多个DCP 同时提供服务 (32)

1DM 集群代理简介

DM 集群代理(DM CLUSTER PROXY,简称DCP)是达梦数据库公司为其大规模并行处理集群DM MPP 研发的一款具有高效、智能、安全特性的集群代理服务器产品。

DM MPP 是达梦公司研发推出的完全对等无共享式集群,支持多个DM 节点。DM MPP 系统工作起来就像是一台单独的计算机,对外提供统一数据库服务。用户可连接DM MPP 系统内任意一个EP 节点进行数据操作。

DCP 是存在于应用和DM MPP 之间的一个组件。DCP 并不是一个必要组件。但是,用户使用DCP 后,可以大幅提高数据库的使用效率和系统的安全性。具体受益如下:

表1.1 使用DCP 的益处

目前版本的DCP 在使用上存在以下限制:

●不支持通讯加密

●不支持快速装载工具

●语句提交后,不支持再次获取结果集

●DCP 配置仅支持一套MPP 环境

2体系架构

使用DCP 时,所有数据库应用都和DCP 代理服务器创建连接,并由DCP 自动选择实际执行请求的集群节点。DCP 对于应用客户端来说,就相当于DM 数据库服务器;而对于DM MPP 各节点来说,又相当于客户端应用。在一个DM MPP 集群上可以设置多个DCP,各DCP 独立运行,互不影响。

DCP 具有集群配置、代理管理、登录管理、连接池管理和语句请求管理等功能模块,其体系架构如下图所示:

图2.1 DCP 体系架构

3功能模块管理

DCP 本身也是一个DM 数据库服务器,当将其INI 参数ENABLE_DCP_MODE 置为1 时,则服务器启动后便作为集群代理而运行。

DCP 提供两套端口,在INI 参数中,一种是PORT_NUM 用户端口,为普通客户端应用连接使用;另一种是DCP_PORT_NUM 管理端口,客户端通过管理端口连接,可以在DCP 上进行代理相关管理维护操作,如添加集群节点等。

单个DCP 的配置过程非常简单,下文通过具体的实例详细介绍。相对于单个DCP,配置多个DCP 同时服务,每个DCP 配置过程和单个DCP 配置过程完全相同,只需要增加一个步骤,就是在dm_svc.conf 中添加各DCP 节点的服务名。

下面详细介绍DCP 各功能模块的作用。

3.1集群配置

DCP 在SYS 模式下建立系统表SYSDCPINSTS 和SYSDCPLOGIN,用以记录集群服务器的节点配置信息。

SYSDCPINSTS 表登记DCP 所对应DM MPP 集群中一个或多个服务器的节点信息,进而通过这些节点信息来获取完整的集群节点配置及映射信息。

普通用户登录不能访问此表,只有通过代理管理连接才能访问。在管理连接中,通过调用接口SP_DCP_ADD_INST 为该表添加相关信息。

表 3.1 SYSDCPINSTS

SYSDCPLOGIN 表登记DCP 登录DM MPP 集群节点服务器获取配置信息时所需的登录用户名和口令。口令以密文形式存放,而且不可解密。

该表中只有一行数据,其访问规则与SYSDCPINSTS 类似,也是在管理连接中调用接口SP_DCP_SET_LOGIN 进行设置或添加。

表 3.2 SYSDCPLOGIN

3.2代理管理

代理管理模块,通过代理管理连接来维护集群配置表的信息。

代理管理连接(PROXY MANAGEMENT CONNECT,缩写为PMC):管理连接是专门针对DCP 的一种特殊连接。客户端通过管理连接在DCP 上进行代理的相关维护操作,如添加集群节点等。代理管理连接仍然是TCP 连接,只不过是通过特殊的管理端口建立的。

代理管理连接的建立方法非常简单,只要使用INI 参数DCP_PORT_NUM 指定的端口号成功登录DCP 服务器即可。管理连接使用的登录账号就是DCP 代理数据库的本地用户账号。

1.添加节点

DBA 角色的用户,调用接口SP_DCP_ADD_INST 来添加集群节点。节点信息可以在SYSDCPINSTS 中查看。

2.清除节点

DBA 角色的用户,调用接口SP_DCP_CLEAR_INST 来清除系统表SYSDCPINSTS 中的指定节点信息。

3.设置节点登录

DBA 角色的用户,可以调用接口SP_DCP_SET_LOGIN 来设置系统表SYSDCPLOGIN 数据。如果表中尚无数据,则插入新行,否则修改原行数据。

4.获取配置信息

DBA 角色用户,可以调用接口SP_DCP_REFRESH_CONFIG,通知DCP 登录DM MPP 节点实例,获取最新的配置信息。该接口没有参数。该过程执行时,将重构DCP 中的集群配置信息,并清除连接池中所有缓存连接。

5.查询配置信息

所有使用管理连接的用户,都可以查询到系统动态视图V$DCPINST 的数据,以此获取集群节点配置信息。

3.3连接池

DCP 实现了对DM MPP 集群服务器节点的连接池,大大降低了物理创建及释放连接的代价。连接池大小由动态INI 参数DCP_CONN_POOL_SIZE 限制,有效值在1 到10000 之间。

DCP 连接池中缓存的连接,最初由用户登录时建立。内部维护LRU 链表进行淘汰。

3.4登录管理

DCP 接收到应用客户端登录请求时,首先在连接池中查找同名缓存连接。如果找到并匹配口令成功,身份验证通过。如果未找到同名缓存连接,则使用接收到的登录请求消息,随机选择一个DM MPP 节点进行登录连接,如果登录成功,则身份验证通过,并将此连接加入缓存。只有身份验证通过,DCP 才创建本地会话,确认客户端登录成功。

3.5语句请求管理

DCP 收到事务开始后的首个语句执行请求时,需要对SQL 语句进行解析,判断该语句涉及到的所有数据是否分布在同一个DM MPP 节点中。如果是,则建立对此节点的连接,并将语句对其发送执行。如果不是,则随机选取DM MPP 中的某一个节点执行。

为了确保数据库的事务特性,事务的后继SQL 请求,都仍需要在最初选择的DM MPP 节点执行,直至事务完成。DM MPP 的特性确保了这样的请求必然能够正确执行完成,不过这样执行的效率不一定是最高的。为了确保执行效率的最大化,我们强烈建议用户慎重地构造同一事务中的相关语句。

); //实例端口号

PORT INT

//实例IP 地址 IP VARCHAR(64),

//节点实例名称 SP_DCP_ADD_INST(

NAME VARCHAR(128),

); //节点实例名称

SP_DCP_CLEAR_INST(

NAME VARCHAR(128)

SP_DCP_SET_LOGIN( USERNAM

E VARCHAR(128), PWD

VARCHAR(100) );

SP_DCP_REFRESH_CONFIG();

4 接口管理

4.1 添加 MPP 站点信息

添加的信息记录在 SYS.SYSDCPINSTS 表中。不要求完整添加 MPP 集群中所有服务器节点,但至少需要有一行有效值,否则 DCP 无法正常工作。

4.2 清除 MPP 站点信息

4.3 设置用户名和密码信息

添加的信息记录在 SYS.SYSDCPLOGIN 中,密码以密文形式存放。若多次执行此过程, 后设置的信息会覆盖之前设置的信息。

4.4 获取 MPP 配置信息

该接口通过 SYS.SYSDCPINSTS 和 SYS.SYSDCPLOGIN 的信息,登录 MPP 站点,获取

) // 清除多少个

SP_DCP_CLEAR_CONN(

NUM INT

MPP 站点配置信息,包括实例名、EPNO 、IP 地址、端口号信息。

在第一次使用SP_DCP_ADD_INST 和SP_DCP_SET_LOGIN 配置信息后,

需要执行 SP_DCP_REFRESH_CONFIG ,之后 DCP 才可以对外提供服务。

后续若 DCP 服务器重启,如果 DM MPP 环境已处于运行状态,DCP 服务器

会自动执行 SP_DCP_REFRESH_CONFIG(),不需要再手动调用。

4.5 手动释放 DCP 连接缓存

5动态视图管理

本章介绍与DCP 相关的动态视图。

5.1V$SESSIONS

动态视图V$SESSIONS 中的DCP_FLAG 列显示了会话与DCP 相关的属性:

表5.1 V$SESSIONS 中的增加列

当在DCP 服务器上查询V$SESSIONS 时,DCP_FLAG 表示是否是通过DCP_PORT 登录DCP 服务器的会话。

当在DM MPP 的EP 节点上查询V$SESSIONS 是,DCP_FLAG 表示是否是通过DCP 代理连接到MPP 的EP 节点的会话。

5.2V$SYSSTAT

动态视图V$SYSSTAT 中有两个与DCP 相关的系统统计项,即两行记录:

●trx exec count:表示通过DCP 执行事务的总次数。

●ep changed count:表示通过DCP 执行事务,切换站点的次数。

在DCP 服务器上查询V$SYSSTAT,只有通过DCP_PORT 连接DCP 服务器时查询V$SYSSTAT 这两行记录才有效。

5.3V$DCPINSTS

V$DCPINSTS 动态视图展示了DCP 对应DM MPP 集群中所有的节点信息。该信息是DCP 根据SYSDCPINSTS 表中提供的节点信息,再连接DM MPP 服务器节点请求得到的。管理连接中用户可以查询该表以了解DM MPP 的配置情况。该视图中的数据也是在管理连接中调用接口SP_DCP_REFRESH_CONFIG 得到的。

表 5.2 V$DCPINSTS

5.4V$DCP_CONNPOOL

动态视图V$DCP_CONNPOOL 记录了DCP 缓冲池的信息。

表 5.3 V$DCP_CONNPOOL

= 1

MPP_INI = 1 MAL_INI

= 5236 PORT_NUM

INSTANCE_NAME = EP01

6 典型案例

使用 DCP 的典型场景包括普通 MPP 环境、MPP 主备环境和多个 DCP 同时提供服务三种情况,下面分别进行介绍如何进行环境搭建。

6.1 经典情景一:普通 MPP 环境

普通 MPP 环境指不包含主备的 MPP 环境。下面为包含 2 个实例节点的 MPP 普通环境配置 DCP 代理,步骤如下:

6.1.1 节点部署规划

表 6.1 MPP 配置节点规划

表 6.2 DCP 节点规划

6.1.2 配置 dm.ini

首先,初始化 EP01,EP02 两个库,初始化时 dm.ini 文件里的参数要求完全一致。然后分别配置两个库中的 dm.ini 。

EP01 的 dm.ini 配置如下:

EP02 的 dm.ini 配置如下:

mal_inst_host = 192.168.0.2

mal_inst_port = 5237

= 5270

mal_port = 192.168.0.2 mal_host

[mal_inst2]

mal_inst_name = EP02

mal_inst_host = 192.168.0.1

mal_inst_port = 5236

= 5269

mal_port = 192.168.0.1 mal_host

[mal_inst1]

mal_inst_name = EP01

6.1.3 配置 dmmal.ini

两个实例的 dmmal.ini 配置一样,直接拷贝即可。

6.1.4 配置 dmmpp.ctl

dmmpp.ctl 是一个二进制文件,用户不能直接配置。用户需要首先配置 dmmpp.ini , 然后利用 dmctlcvt 工具进行转换得到生成 dmmpp.ctl 文件。两个实例使用相同的 ctl 文件,只需拷贝一份。

表 6.3 dmmpp.ini 配置项

= 1 MPP_INI = 1 MAL_INI

= 5237 PORT_NUM

INSTANCE_NAME = EP02

[service_name1]

mpp_seq_no = 0

mpp_inst_name = EP01

[service_name2]

mpp_seq_no = 1 mpp_inst_name = EP02 ./dminit path=/dm/data/ instance_name=DCP DCP_MODE=1 DCP_PORT_NUM=5239

./dmserver /dm/data/DAMENG/dm.ini

dmmpp.ini 配置如下:

利用工具转换成 dmmpp.ctl 。示例如下:

以上步骤完成之后,只需分别启动两个实例节点,如果能够登录成功,说明配置成功了。

6.1.5 配置 DCP 服务器的 dm.ini

DCP 服务器的配置可以在初始化库的时候指定DCP_MODE 和DCP_PORT_NUM 参数,如: 或者,也可以在初始化库完成之后修改 dm.ini 文件,效果是一样的。如:

6.1.6 启动 DM MPP 和 DCP

192.168.0.1 上:

192.168.0.2 上:

./dmserver /dm/data/DAMENG/dm.ini = 5239 DCP_PORT_NUM = 1 ENABLE_DCP_MODE

./dmctlcvt t2c /dm/data/DAMENG/dmmpp.ini /dm/data/DAMENG/dmmpp.ctl

达梦数据库安装部署

达梦数据库安装部署文档 一.数据库安装过程 1. Windows环境安装 基本上就是下一步下一步,按照默认安装就好,安装路径根据自己的要求选择。在利用我们的数据库配置助手dbca工具初始化库的过程中,需要将下图红色框选部分改为如图所示即可。详细的安装细节可以参考我们的文档。 注意:页大小除去Clob、Blob等大字段外,数据库中一行记录的所有字段的实际长度的和不能超过页大小的一半; 日志文件的大小数据库redo日志文件的大小(正式环境一般设置为2048); 字符串比较大小写敏感默认为大小写敏感的,根据具体情况进行设置; 建议:在开发环境和测试环境的页大小、字符串大小写敏感这两个参数一 定要保持一致,不然当涉及到用.bak文件还原的时候就会因这两个参数不 一致导致无法还原。 2. Linux环境安装 在中标麒麟的系统中打开一个终端窗口,通过命令:ulimit –a查看,如下图所示: 如果open files这个参数的值为65536表示之前修改过,如果没有修改按照下面的方法进行修改。 Linux系统在安装之前先确认打开文件数的那个参数的设置情况,现在在中标麒麟的操作系统上安装我们DM7数据库,在使用我们的数据库配置助手dbca进行初始化数据库时经常会碰到“打开文件数过多的问题”。

解决办法如下: 用vim打开/etc/profile文件,在该文件最后加上一行ulimit -n 65536,(注意在添加的时候只需添加ulimit –n 65536即可,后面不需要标点符号。)然后重启服务器即可。修改好操作系统的打开文件这个参数后就可以按照下面的安装步骤进行安装了。 详细安装流程如下: (1)确定当前用户是不是root用户(在命令行窗口中输入: who am i),最 好在root用户下安装,否则有可能有些权限不够; (2)进入到我们安装文件所在的目录,并赋予它777权限(命令为:chmod 777 ; (3)执行安装 ./ –i (4)在安装的过程中按照提示一步一步操作,基本上选择默认的就可以了。 只有在时区的选择上注意选择中国的时区; (5)选好之后等待安装过程结束,会有相应的提示信息; (6)初始化库,切入到我们安装目录的bin目录,一般默认安装路径为 /opt/dmdbms/bin, 执行命令./dminit path=/opt/dmdbms/data page_size=16 log_size=2048 case_sensitive=n。当然如果我们能够 直接接触到服务器的话,也可以利用桌面上我们DMDBMS文件夹里面的 client文件夹里面有一个数据库配置助手初始化我们的数据库,使用方 法与Windows平台相同; (7)切入到到我们安装目录的bin目录,一般路径为/opt/dmdbms/bin, 在 该目录下有个dmserverd的文件,用vim打开这个文件后, 把这一行改为如上图所示的情况path=/opt/dmdbms/data/DAMENG/,然后保存退出。 (8)至此我们的数据库就已经安装配置完成了,现在我们可以切入到安装 目录的bin,路径为/opt/dmdbms/bin,执行命令 ./dmserverd start 就

达梦数据库集群选择及介绍

达梦数据库集群选择及介绍 武汉达梦数据库有限公司 2019年9月

版本历史

目录 1 达梦公司介绍 (1) 1.1核心研发能力 (1) 1.2运维保障能力 (2) 1.2.1 保障体系的组织方式 (2) 1.2.2 服务保障流程 (5) 2 数据库集群选择及介绍 (8) 2.1路线规划 (8) 2.2集群种类 (10) 2.2.1 达梦数据守护集群(DataWatch) (10) 2.2.2 达梦读写分离集群(DMRWC) (15) 2.2.3 达梦大规模并行处理框架(DMMPP) (18) 2.2.4 达梦数据共享集群(DMDSC) (23) 3 成熟案例介绍 (28) 3.1国家智能电网调度指挥系统D5000 (28) 3.2南方电网-OS2地级主站系统 (28) 3.3中航信在线事务处理系统 (29) 3.4中国铁建集团财务大共享系统 (29) 3.5海南社保 (30) 3.6南京公安警务平台系统 (30) 3.7江苏监狱管理局项目 (31) 3.8国家发改委-投资审批系统 (31) 3.9国家发改委-信用交换平台 (32)

1达梦公司介绍 达梦数据库有限公司成立于2000年11月,注册资金3637万,为国有控股的大型基础软件企业。其前身是华中科技大学数据库与多媒体研究所,是国内最早从事数据库管理系统研发的科研机构,得到国家各级政府的强力支持,是中国数据库标准委员会挂靠单位,湖北省数据库工程技术研究中心。在北京、石家庄、上海、广州、南宁、西安和成都等地设有分支机构。 达梦公司是国家规划布局内重点软件企业,首批获得国家“双软”认证的高新技术企业,专业从事数据库管理系统研发、销售和服务。公司管理规范,锐意进取,通过了国家保密局“涉及国家秘密的计算机信息系统集成软件单项资质”认证和工业信息化部“计算机信息系统集成资质二级”认证,并通过了国际IS09001质量体系和CMMI软件成熟度模型五级认证,AAA资信。 达梦人经过30年的努力拼搏,在学习、分析国际上众多优秀数据库产品的基础上原始创新,投入上千人年,耗资过亿,开发源代码上千万行,形成了具有完全自主知识产权的DBMS产品系列,先后完成了近80项国家级、省部级的科研开发项目,取得了50多项研究成果,皆为国际先进、国内领先水平,其中30多项获国家、省部级科技进步奖,在国内同行中处于领先地位。 达梦数据库是国内第一家通过国家安全三级认证,国内第一家通过10TB数据库容量测试的数据库产品,也是唯一通过中国人民解放军目前最高级别军B级认证的国产数据库。达梦数据库产品已成功用于我国国防军事、公安、安全、财政金融、电力、水利、审计、交通、信访、电子政务、税务、国土资源、制造业、消防、电子商务、教育等20多个行业及领域,装机量超过10万套,打破了国外数据库产品在我国一统天下的局面,取得了良好的经济效益和社会效益。 达梦数据库(DM)具有完全知识产权,是达梦人近30年的智慧、心力和汗水的结晶,是中国人的骄傲,必将为中国信息化做出贡献。 1.1核心研发能力 达梦数据库历来注重新的技术发展趋势和技术研发工作,工作70%以上人员为技术人员。DM7.0推出后,在国内数据库领域引起了强烈反响。在这一款产品上,达梦推出了目前

达梦数据库安装部署

达梦数据库安装部署集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

达梦数据库安装部署文档 一.数据库安装过程 1. Windows环境安装 基本上就是下一步下一步,按照默认安装就好,安装路径根据自己的要求选择。在利用我们的数据库配置助手dbca工具初始化库的过程中,需要将下图红色框选部分改为如图所示即可。详细的安装细节可以参考我们的DM7_Install_zh.pdf文档。 注意:页大小除去Clob、Blob等大字段外,数据库中一行记录的所有字段的实际长度的和不能超过页大小的一半; 日志文件的大小数据库redo日志文件的大小(正式环境一般设置为2048); 字符串比较大小写敏感默认为大小写敏感的,根据具体情况进行设置; 建议:在开发环境和测试环境的页大小、字符串大小写敏感这两个参数 一定要保持一致,不然当涉及到用.bak文件还原的时候就会因这两个参 数不一致导致无法还原。 2. Linux环境安装 在中标麒麟的系统中打开一个终端窗口,通过命令:ulimit –a查看,如下图所示: 如果open files这个参数的值为65536表示之前修改过,如果没有修改按照下面的方法进行修改。

Linux系统在安装之前先确认打开文件数的那个参数的设置情况,现在在中标麒麟6.0的操作系统上安装我们DM7数据库,在使用我们的数据库配置助手dbca进行初始化数据库时经常会碰到“打开文件数过多的问题”。 解决办法如下: 用vim打开/etc/profile文件,在该文件最后加上一行ulimit -n 65536,(注意在添加的时候只需添加ulimit –n 65536即可,后面不需要标点符号。)然后重启服务器即可。修改好操作系统的打开文件这个参数后就可以按照下面的安装步骤进行安装了。 详细安装流程如下: (1)确定当前用户是不是root用户(在命令行窗口中输入: who am i), 最好在root用户下安装,否则有可能有些权限不够; (2)进入到我们安装文件所在的目录,并赋予它777权限(命令为: chmod 777 DMInstall.bin); (3)执行安装 ./DMInstall.bin –i (4)在安装的过程中按照提示一步一步操作,基本上选择默认的就可以 了。只有在时区的选择上注意选择中国的时区; (5)选好之后等待安装过程结束,会有相应的提示信息; (6)初始化库,切入到我们安装目录的bin目录,一般默认安装路径为 /opt/dmdbms/bin, 执行命令./dminit path=/opt/dmdbms/data page_size=16 log_size=2048 case_sensitive=n。当然如果我们能够 直接接触到服务器的话,也可以利用桌面上我们DMDBMS文件夹里面的 client文件夹里面有一个数据库配置助手初始化我们的数据库,使用

达梦数据库单机搭建

安装数据库服务器 一、服务端安装 1.将达梦安装文件dminstall.bin dm.key dm.ini dmserverd上传到服务器的 root用户下的某个路径(参考数据库安装文档)如/home/dmdbs 2.用root用户安装执行dminstall.bin 3.安装好后修改bin下面的dm.ini manager.sh dts.sh dmserverd文件 中指定的数据库安装路径(dm_home的路径) 4.cd bin中./dmserverd start(或者./etc/init.d/dmserverd start)看看数据 启动是否正常 5.在/etc/dm_svc.conf中添加mdb项,修改 d5000/fujian/conf/db_config.xml 二、客户端安装 从服务器生成一个客户端只要/home/d5000/dm/新建一个dmClient文件夹,然后 Cd /home/dmdbms Cp –rp jar jdk dmClient Cp –rp jar jdk dmClient Cd /home/dmdbms/bin Cp –rp manager.sh dts.sh dmClient Cp –rp isql impdb expdb dmClient Cp –rp *.so dmClient

Cd dmClient Cp –rp impdb imp Cp –rp expdb exp 建立数据库和导入数据一、建立库 新建数据库,如下图 输入数据库名后,其他都是默认

二、导入数据库先脱机 选还原

选择导出的数据库文件 记住要勾选与控制文件同步路径

达梦数据库性能测试软件操作

(1)创建用户benchmarksql/123456789,并开通权限。 (2)./runSQL.sh props.dm sqlTableCreates (3)./runLoader.sh props.dm numWAREHOUSES 10 (4)disql执行sqlSequenceCreate.sql,在数据库管理工具中执行。 (5)./runBenchmark.sh props.dm 备注:编辑props.dm, driver=dm.jdbc.driver.DmDriver conn=jdbc:dm://localhost:5236 user=benchmarksql password=123456789 warehouses=100 terminals=20 //To run specified transactions per terminal- runMins must equal zero runTxnsPerTerminal=0 //To run for specified minutes- runTxnsPerTerminal must equal zero runMins=60 //Number of total transactions per minute limitTxnsPerMin=0 //The following five values must add up to 100 //The default percentages of 45, 43, 4, 4 & 4 match the TPC-C spec newOrderWeight=45 paymentWeight=43 orderStatusWeight=4 deliveryWeight=4 stockLevelWeight=4 warehouses 是仓库建立库,增加内容,服务器一般可以建立100个。 Terminals是终端并发数量,服务器一般是建立20个。 Runmins是运行时间,服务器一般设置2小时。 Measured tpmc是测量每分钟tpmc即tpcc每分钟的吞吐量。按有效tpcc配置期间每分钟处理的平均交易次数测量。单位是tpmc,每分钟系统处理的新订单个数。

达梦数据库DM8集群代理使用手册-D

DM8 集群代理使用手册Service manual of DM8_DCP

前言 概述 本文档主要介绍DM 集群代理的架构、提供的功能、以及如何搭建和使用DM 集群代理。读者对象 本文档主要适用于DM 数据库的: ●开发工程师 ●测试工程师 ●技术支持工程师 ●数据库管理员 通用约定 在本文档中可能出现下列标志,它们所代表的含义如下: 表0.1 标志含义

在本文档中可能出现下列格式,它们所代表的含义如下: 表0.2 格式含义

目录 1DM8 集群代理简介 (1) 2体系架构 (2) 3功能模块管理 (3) 3.1集群配置 (3) 3.2代理管理 (4) 3.3连接池 (5) 3.4登录管理 (5) 3.5语句请求管理 (5) 4接口管理 (6) 4.1添加MPP 站点信息 (6) 4.2清除MPP 站点信息 (6) 4.3设置用户名和密码信息 (6) 4.4获取MPP 配置信息 (6) 4.5手动释放DCP 连接缓存 (7) 5动态视图管理 (8) 5.1V$SESSIONS (8) 5.2V$SYSSTAT (8) 5.3V$DCPINSTS (8) 5.4V$DCP_CONNPOOL (9) 6典型案例 (10) 6.1经典情景一:普通MPP 环境 (10) 6.2经典情景二:MPP 主备环境 (14) 6.3经典情景三:多个DCP 同时提供服务 (32)

1DM 集群代理简介 DM 集群代理(DM CLUSTER PROXY,简称DCP)是达梦数据库公司为其大规模并行处理集群DM MPP 研发的一款具有高效、智能、安全特性的集群代理服务器产品。 DM MPP 是达梦公司研发推出的完全对等无共享式集群,支持多个DM 节点。DM MPP 系统工作起来就像是一台单独的计算机,对外提供统一数据库服务。用户可连接DM MPP 系统内任意一个EP 节点进行数据操作。 DCP 是存在于应用和DM MPP 之间的一个组件。DCP 并不是一个必要组件。但是,用户使用DCP 后,可以大幅提高数据库的使用效率和系统的安全性。具体受益如下: 表1.1 使用DCP 的益处 目前版本的DCP 在使用上存在以下限制: ●不支持通讯加密 ●不支持快速装载工具 ●语句提交后,不支持再次获取结果集 ●DCP 配置仅支持一套MPP 环境

Activiti连接达梦数据库

目录 1 环境准备 (1) 2 创建SQL脚本 (1) 3 下载所需依赖包 (2) 3.1IDEA配置使用阿里云MAVEN仓库 (2) 3.2下载所有依赖包 (5) 4 修改配置文件 (5) 4.1修改APPLICATION.PROPERTIES文件 (5) 4.2修改POM.XML文件 (6) 5 加载DM驱动程序 (6) 5.1拷贝DM驱动程序 (6) 5.2将驱动程序打入M AVEN仓库 (7) 6 修改ACTIVITY-ENGINE-5.22.0 (8) 6.1修改P ROCESS E NGINE C ONFIGURATION I MPL文件 (9) 6.2修改D B S QL S ESSION F ACTORY文件 (9) 6.3修改A BSTRACT Q UERY文件 (10) 7 ACTIVITY-ENGINE-5.22.0打包 (11) 8 验证结果 (12) 9 附录 (12)

1环境准备 项目名称:Spring boot整合activiti工作流引擎实例 Spring-Boot-Activiti5.22.0项目文件:Spring-Boot-Activiti5.22.0.zip 开发工具:IntelliJ IDEA 2020.2 (Ultimate Edition) IDEA安装路径:D:\IDEA 项目路径:D:\IDEA\work 将项目文件解压至D:\IDEA\work目录下,并导入IDEA: 2创建SQL脚本 将项目中activiti.sql脚本在数据库中创建。

说明:项目中activiti.sql脚本是Mysql的语法,可先在Mysql中创建,再通过DTS工具迁移至DM中。也可使用以下activiti.sql直接在DM中创建(以下activiti.sql语法已修改为DM语法)。 DM语法activiti.sql脚本:activiti.sql 3下载所需依赖包 3.1IDEA配置使用阿里云maven仓库 IDEA工具左上角:文件→设置→构建、执行、部署→构建工具→Maven 指定以下三个目录:

干货分享之达梦数据库汉字存储知多少

达梦数据库汉字存储知多少 1、前言 当我们在DM7中处理汉字的时候,经常会用到varchar的数据类型。但是,根据数据库初始化时的参数不同,varchar中能存储的汉字的个数也不尽相同。那么在每种情况下,字符的存储有什么区别呢?本文就将带大家一探究竟 2、参数简介 在使用DMINIT初始化数据库的时候,我们有以下这两个跟字符集有关的参数,UNICODE_FLAG和LENGTH_IN_CHAR。 UNICODE_FALG:此参数表示了数据库中所有数据的字符集,包括数据字典的字符集。需要注意的是,数据库一旦初始化完成,字符集就将无法修改。我们可以使用select unicode来查询当前数据库的字符集种类,0代表 gb18030,1代表UTF-8。 LENGTH_IN_CHAR:此参数决定了,数据库中的VARCHAR类型对象的长度是否以字符为单位。取值为1则设置为以字符为单位,将存储长度值按照理论字符长度进行放大。取值为0则所有 VARCHAR 类型对象的长度以字节为单位。 同样,如果我们采用DBCA助手来创建数据库,也可以在初始化参数那一步来修改这两个参数的值。

3、测试 根据Unicode和length_in_char的取值不同(0或1),我们总共初始化四个不同的数据库,针对不同的情况进行测试。 本文演示环境: DM Database Server x64 V7.1.6.48-Build(2018.03.01-89507)ENT 3.1、UNICODE_FLAG=0,LENGTH_IN_CHAR=0 根这种情况是初始化数据库时的默认配置,即字符集为gb18030,varchar 长度以字节为单位。相关测试如下 SQL> create table test(name varchar(3)); 操作已执行 SQL> insert into test values('测'); 影响行数 1 SQL> insert into test values('测a'); 影响行数 1 SQL> insert into test values('测试'); [-6169]:列[NAME]长度超出定义. 我们知道,gb18030下一个汉字或者全角字符一般需要占用两个字节。所以varchar(3)型可以插入一个汉字加上一个半角字符,但是无法插入两个汉字。 3.2、UNICODE_FLAG=1,LENGTH_IN_CHAR=0 字符集为utf-8,varchar长度以字节为单位,相关测试如下: SQL> create table test(name varchar(3)); 操作已执行 SQL> insert into test values('测'); 影响行数 1 SQL> insert into test values('测试');

数据库迁移1可视化工具DTS

数据库迁移 1、可视化工具:DTS DM数据迁移工具支持主流数据库产品和达梦数据库之间的互相迁移,支持达梦数据库与文件数据间的格式转换。DTS工具操作界面直观,用户可以方便地在不同数据源间迁移数据。 使用示例:以下通过同一数据库实例下的迁移操作模拟,介绍相关操作方式。(与异构数据库间的迁移操作类似。) 将SYSDBA用户下的全部对象迁移到USER01用户下 1、管理员用户SYSDBA创建迁移表,并插入数据 1)创建迁移表 create table test ( sno int, sname varchar, sphone varchar); 2)插入数据 begin for i in 1..10000 loop insert into test values(i,'aa'||i,''); end loop; end; 3)提交插入数据: COMMIT 4)创建新用户,用于迁移目的端 create user USER01 identified by 123456789; grant DBA to USER01; 2、使用达梦数据库的迁移进行迁移 1)启动DM迁移工具 点击开始按钮,选择所有程序,选择达梦数据库–客户端–DM迁移工具,如下图:

2)创建迁移工程 A、在左侧迁移管理下,右键点击空白处,选择新建工程如下图: B、创建工程名称如下图 C、展开工程节点,可以看到下面有迁移、作业、调度和数据类型映射节点 D、创建迁移:在迁移上右键新建迁移如下图:

3)迁移过程 A、迁移方式:从树形列表中选择一个迁移向导,向导会一步步地引导用户完成 操作,如下图: B、源端数据库连接信息配置,如下图: C、目的端数据库连接信息配置,如下图:

【免费下载】使用ADO访问达梦数据库

使用ADO访问达梦数据库 微软的Windows操作系统是当前应用程序的主流开发和使用平台,它提供了数种不同的数据访问存储技术,比较常见的有以下几种: ODBC 它只能通过以C/C++语言API的形式提供数据库服务。 OLE-DB 为了从各种不同的数据源中存取数据,并且能够处理非关系数据;同时为了使应用程序能够以统一的方式存取各种不同的数据源,微软推出了OLE-DB。OLE-DB定义了统一的COM接口作为存取各类数据源的标准,并且统一封装在一组COM对象之中。 ADO 由于OLE-DB太过于底层,很难被大部分程序员接受,同时为了让脚本语言也能使用OLE-DB存取各种数据源,微软又用COM技术将OLE-DB封装为ADO对象。 ADO 的架构 大家可以看出ADO可以通过OLE-DB直接访问数据源,也可以通过OLE-DB转ODBC的方式来访问数据源,但除了为了兼容原有应用系统,否则我们推荐通过OLE-DB直接访问数据源的方式。 DM 数据库对外提供了标准的OLE-DB和ODBC接口,所以我们可以在开发程序时任意使用ADO 的两种方式(通过ODBC和通过OLE-DB)来访问达梦数据库。 虽然现在微软又推出了新一代的https://www.doczj.com/doc/2416838719.html,数据访问对象,但目前还是有很多程序员在windows下进行数据库应用程序开发时使用ADO;Delphi是一种快速的RAD开发工具,并且提供了一组优秀的ADO组件;所以本文介绍一个在Delphi 7.0 下使用ADO访问达梦数据库的小程序实例。 首先,在Delphi中设定如下程序界面:

ADO对象实际上就是COM对象,程序员可以直接在ObjectPascal中调用CreateOleObject方法来建立原生ADO对象;Delphi同时也提供的ADO组件封装了原生ADO对象,ADO组件包含了ADOConnection , ADOCommand , ADODataSet , ADOTable , ADOQuery , ADOStoreProc这几个组件,这五个组件统称为数据集组件,他们都封装了原生ADO的Record对象,我们在程序中使用了TADODataSet,TDataSource和TADOStoredProc三个控件,同时在程序运行时动态创建和使用了TADOConnection,TADOQuery对象。 下面这个演示程序可以管理数据库里的人员信息(包括TimeStamp,text,blob类型的数据),同时可以添加和修改人员对应的相片; 首先使用SYSDBA登录达梦数据库的JISQL工具,执行下面的数据库脚本: CREATE TABLE People_Info ( p_id ????? ?int primary key, p_name varchar(20), p_age? int, p_addr varchar(200), p_des??? text, p_pic????? blob, p_born timestamp ) CREATE SEQUENCE SEQ_PEOPLE INCREMENT BY 1 START WITH 1; CREATE OR REPLACE PROCEDURE DEL_PINFO(v_id in int) AS BEGIN DELETE FROM People_Info WHERE p_id = v_id; END; 程序在运行时会动态的创建一个TADOConnect对象,效果和在设计程序时 拖入一个TADOConnection组件是一样的,代码如下: constructor TFormADO.Create(AOwner: TComponent); begin

达梦数据库问题小集锦

达梦数据库使用过程中各种问题解决小妙招! 近期,大家在学习和使用达梦的过程中遇到了各种各样的问题,关于安装的,关于运维的,关于使用的,我们将一些常见问题集中起来,做成问题小集锦作为福利送给大家。 测试环境 操作系统中标麒麟6 达梦数据库V8.1 问题一 以图形界面安装数据库软件时报错。 现象描述 用图形界面形式安装数据库遇到报错,显示报错信息如下: [dmdba@localhost mnt]$ ./DMInstall.bin 解压安装程序.......... No protocol specified Exception in thread "main" org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed] at org.eclipse.swt.SWT.error(SWT.java:4109) at org.eclipse.swt.widgets.Display.createDisplay(Display.java:902) at org.eclipse.swt.widgets.Display.create(Display.java:890) at org.eclipse.swt.graphics.Device.(Device.java:154) at org.eclipse.swt.widgets.Display.(Display.java:499) at org.eclipse.swt.widgets.Display.(Display.java:490) at org.eclipse.swt.widgets.Display.getDefault(Display.java:1693) at org.eclipse.swt.widgets.Shell.(Shell.java:260) at org.eclipse.swt.widgets.Shell.(Shell.java:358) at org.eclipse.jface.window.Window.createShell(Window.java:487) at org.eclipse.jface.window.Window.create(Window.java:430) at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089) at org.eclipse.jface.window.Window.open(Window.java:790) at com.dameng.install.ui.MainApplication.run(Unknown Source) at com.dameng.install.ui.MainApplication.main(Unknown Source) [dmdba@localhost mnt]$ 问题原因 当前操作系统的登录用户应该为非dmdba用户,如果在当前会话中启用图形界面需要将图形界面权限放开。 解决方法 切换到root用户后在命令行中输入xhost +,可以使得dmdba可以调用图形界面进行安装。问题二

达梦数据库审计设置

达梦数据库审计设置 普通版和安全版的区别:安全版本在普通版本的基础上,还提供“四权分立”安全机制和强制访问控制安全管理功能。 1、用户识别与标记 PRIV_FLAG:启用四权分立。仅在安全版本下可见和可设置。四权分立新增数据库对象操作员账户 SYSDBO,其缺省口令为 SYSDBO SYSSSO用户可以制定安全策略,创建安全标记。 口令策略: PWD_POLICY: 0 无策略 1 禁止与用户名相同 2 口令长度不小于 9 4 至少包含一个大写字母(A-Z) 8 至少包含一个数字(0-9) 16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号) 设置密码策略:SP_SET_PARA_VALUE(1, 'PWD_POLICY',8); 禁用角色:SP_SET_ROLE('BOOKSHOP_ROLE1', 0); 2、审计 2.1、审计级别说明 DM 允许在三个级别上进行审计设置: 系统级:系统的启动与关闭,此级别的审计无法也无需由用户进行设置,只要审计开关打开就会自动生成对应审计记录 语句级:导致影响特定类型数据库对象的特殊SQL或语句组的审计。如 AUDIT TABLE 将审计 CREATE TABLE、ALTER TABLE 和 DROP TABLE 等语句 对象级:审计作用在特殊对象上的语句。如 test 表上的 INSERT 语句 2.2、审计开关 审计开关由 DM 的 INI 参数 ENABLE_AUDIT 控制,有三种取值: 0:关闭审计 1:打开普通审计 2:打开普通审计和实时审计 通过系统过程 SP_SET_PARA_VALUE 重新设置 ENABLE_AUDIT 的值,ENABLE_AUDIT 为动态 INI 参数:SP_SET_PARA_VALUE (1,’ENABLE_AUDIT’,1) 开启审计: SELECT * FROM V$PARAMETER WHERE NAME=’ENABLE_AUDIT’;

ROWNUM在达梦数据库中的使用

ROWNUM在达梦数据库中的使用 ROWNUM 是一个虚假的列,表示从表中查询的行号,或者连接查询的结果集行数。它将被分配为1,2,3,4,..N,N 是行的数量。通过使用ROWNUM ,我们可以限制查询返回的行数。 我们以实例库BOOKSHOP中RESOURCES模式下EMPLOYEE表为例 该表的完整数据如下: 如果我们只想看到前5 行数据,可以这样写 SELECT * FROM RESOURCES.EMPLOYEE WHERE rownum < 6; 需要注意的是,一个ROWNUM 值不是被永久的分配给一行。表中的某一行并没有标号,不可以查询ROWNUM 值为5 的行。ROWNUM 值只有当被分配之后才会增长,并且初始值为1。即只有满足一行后,ROWNUM 值才会加1,否则只会维持原值不变。因此,以下语句在任何时候都不能返回数据。 SELECT * FROM RESOURCES.EMPLOYEE WHERE ROWNUM > 6; SELECT * FROM RESOURCES.EMPLOYEE WHERE ROWNUM = 6;

ROWNUM 一个重要作用是控制返回结果集的规模,可以避免查询在磁盘中排序。因为,ROWNUM 值的分配是在查询的谓词解析之后,任何排序和聚合之前进行的。因此,在排序和聚合使用ROWNUM 时需要注意,可能得到并非预期的结果,例如假如我们想得到员工年龄最大的五个人 SELECT * FROM RESOURCES.EMPLOYEE WHERE ROWNUM < 6 ORDER BY BIRTHDATE; 以上语句只会对EMPLOYEE 表前5 行数据按BIRTHDATE排序输出,并不是表的所有数据按BIRTHDATE 排序后输出前5行,要实现后者,需要使用如下语句: SELECT * FROM (SELECT * FROM RESOURCES.EMPLOYEE ORDER BY BIRTHDATE) WHERE ROWNUM < 6;或者 SELECT TOP 5 * FROM RESOURCES.EMPLOYEE ORDER BY BIRTHDATE; 结果如下: 关于ROWNUM的使用,还需注意以下的限制: 1.在查询中,ROWNUM 可与任何数字类型表达式进行比较及运算,但不能出现在含OR 的布尔表达式中,否则报错处理; 2.ROWNUM 只能在非相关子查询中出现,不能在相关子查询中使用,否则报错处理;

连接达梦数据库配置文件修改步骤

连接达梦数据库配置文件修改步骤 1、安装EGS JAVA 2、替换SuperMapEGSJava1.0\SuperMapEGService文件夹下的几个文件 Images文件夹、META-INF文件夹、WEB-INF文件夹、index.jsp文件 3、修改SuperMapEGSJava1.0\SuperMapEGService\WEB-INF-\classes文件夹下的 hibernate.cfg.xml文件(以记事本方式打开),主要修改以下部分内容 jdbc:dm:// 192.168.116.30(数据库服务器ip):5236(数据库的端口号)/DAMENG(数据库名) dm.jdbc.driver.DmDriver 用户名 密码

org.hibernate.dialect.DmDialect 在hibernate配置文件hibernate.cfg.xml中添加模式名限定,模式名(在达梦数据库中一般与用户名相同)。 4、按照联机帮助里的手动部署配置serverUrl.properties 文件和config.xml文件 1)serverUrl.properties 文件(在目录SuperMapEGService\WEB-INF\classes 下) 将ServerUrl改成相应的服务地址.例 如:ServerUrl=http://{ip}:8099/SuperMapEGService/ 注意:此处ip为标绘服务所在机器的ip

达梦数据库中集合类型的使用(下)

达梦数据库中集合类型的使用(下) 在上周的分享中,我们介绍了集合类型中的变长数组和索引表,今天我们讲一讲剩下的几种跟集合有关的数据类型。 三.嵌套表 嵌套表和varray类型用法类似,主要区别在于嵌套表在使用时不用指定元素上限。 这里我们采用结合游标制造一个比较复杂的例子,我们先采用一个游标ename_cursor来存储job_id为21的员工姓名信息,然后通过遍历游标把对应的员工姓名存储到嵌套表中,相关代码如下:DECLARE --下面这句是嵌套表的声明,可以看到这里并不用指定元素上限 TYPE ename_array_type is table of dmhr.employee.employee_name%TYPE; --定义一个游标 CURSOR ename_cursor is select employee_name from dmhr.employee where job_id=21; --初始化嵌套表,此时嵌套表为空 ename_array ename_array_type:=ename_array_type(); --初始化嵌套表

i number:=0; BEGIN for ename in ename_cursor loop i:=i+1; --执行extend函数,为数组增加一个null元素ename_array.EXTEND; ename_array(i):=ename.employee_name; print(ename.employee_name); end loop; --注意嵌套表下标是从1开始的,而不是0 for j in1..ename_array.count()loop print(ename_array(j)); end loop; END; / 执行结果如下,篇幅关系并没有截全。

eeplat连接达梦数据库示例

eeplat连接达梦数据库示例 近年来,国产经数据库产品应用越来越多。其中,达梦数据库(DM7)作为一款Orale替代产品,对Orale有良好的兼容性。经试验验证,DM7数据库采用兼容Orale模式情况下,eeplat平台可以支持达梦数据库(DM7)。具体操作步骤如下: 1.下载并安装JDK7,并设置好系统变量%JAVA_HOME%,PATH 2.安装达梦数据库DM7(最新版https://www.doczj.com/doc/2416838719.html,/zt/download/dm7_win32.zip) 3.以SYSDBA登录达梦数据库,建TS_RYZGL表空间,建立 RYZGL用户及模式(用户名:RYZGL,密码:RYGL12345),建立PERSON、ADDRESS、DEPARTMENT、EMPLOYEE表,并录入数据。上述全部操作可通过脚本完成,详见DM7.SQL)。 4.下载并安装Tomcat7(解压缩到硬盘根目录即可)。 5.在达梦数据库安装目录下查找JDBC驱动,如:Dm7JdbcDriver14.jar、Dm7JdbcDriver15.jar 、Dm7JdbcDriver1 6.jar。将与JDK版本适配的驱动(如:JDK6或JDK7可选Dm7JdbcDriver16.jar)复制到\tomcat\lib 文件夹下。 6.下载eeplat.war(20用户限制单租户版本https://www.doczj.com/doc/2416838719.html,/eeplat.war) 7.启动Tomcat。 8.待启动完毕后,在浏览器地址栏输入http://localhost:8080/eeplat/ 9. 新建工程,工程名称:Test。 10.选择“数据库管理”—>“新增”,按下图所示增加到DM7的数据库连接:

达梦数据库系统存储过程介绍

达梦数据库系统存储过程介绍 DM是达梦数据库有限公司推出的新一代高性能、高安全性的数据库产品。它具有开放的、可扩展的体系结构,高性能事务处理能力,以及低廉的维护成本。现在长沙做网站工作室对达梦数据库系统存储过程介绍。SQL语句执行的时候要先编译,然后执行。存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是现代数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。 存储过程是利用数据库系统所提供的Tranact-SQL语言所编写的程序。Tranact-SQL语言是数据库系统提供专为设计数据库应用程序的语言,它是应用程序和数据库间的主要程序式设计界面。这类语言主要提供以下功能,让用户可以设计出符合引用需求的程序: 1. 变量说明; 2. ANSI兼容的SQL命令(如SELECT、UPDATE………); 3. 一般流程控制命令(IF…ELSE;WHILE………); 4. 内部函数。 使用存储过程具有以下的一些优点: 1. 存储过程的能力大大增强了SQL语言的功能和灵活性。sql语句中的日期运算等一系统运算灵活性增强。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 2. 可保证数据的安全性和完整性。 (1) 通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全; (2) 通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。 3. 在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。湘龙工作室以前对电信客户的一个网站就采用了达梦数据库,使得其速度极快,同时又是国内自主的数据库,保护了国内的知识产权。 4. 可以降低网络的通信量。 5. 使体现企业规则的运算程序放入数据库服务器中,以便: (1) 集中控制; (2) 当企业规则发生变化时在服务器中改变存储过程即可,无须修改任何应用程序。企业规则的特点是要经常变化,如果把体现企业规则的运算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序工作量非常之大(修改、发行和安装应用程序)。如果

达梦数据库中集合类型的使用(上)

达梦数据库中集合类型的使用(上) 在DM PL/SQL的使用过程中,如果我们想储存单个的数据,我们可以利用声明变量的方式来存储,如果我们想存储单行多列的数据,我们可以用到记录类型(record),如果我们想保存单列多行的数据,则可以利用集合类型的方式来存储。本文就将给大家介绍达梦数据库中常用的几种集合类型以及他们的特点。 一.索引表 索引表的特点: 1.可以使用数字或者字母作为下标 2.以数字做下标时可以使用负数 3.只能在PL/SQL块中使用,无法作为表字段 下面进行一些测试,首先是数字做下标的索引表 declare type index_tab_type is table of varchar(30)index by int; v_table index_tab_type; begin v_table(-1):='hello';--设定下标为-1的元素的值 v_table(1):='and ';--设定下标为1的元素的值 v_table(5):='world'; print('元素个数为:'||v_table.count);

print('第一个元素是'||v_table(v_table.first));--输出第一个元素 print('最后一个元素是'||v_table(v_https://www.doczj.com/doc/2416838719.html,st));--输出最后一个元素 end; 执行结果如下 然后是字母做下标的索引表 declare type index_tab_type is table of varchar(30)index by varchar(1); v_table index_tab_type; begin v_table('a'):='hello';--设定下标为-1的元素的值 v_table('c'):='world'; print('元素个数:'||v_table.count); print('第一个元素'||v_table(v_table.first)); print('最后一个元素'||v_table(v_https://www.doczj.com/doc/2416838719.html,st)); end;

相关主题
文本预览
相关文档 最新文档