4.1 软硬件环境
部署 DMDPC 集群所用到的硬件和软件环境。
-
硬件环境
- 主机一台或多台。用于部署 MP、SP 和 BP。内存大小要求:至少 2GB。测试环境中可以将上述服务部署到同一主机,生产环境下推荐每个主机只部署一种类型服务器。
-
软件环境
- 操作系统。Linux、Unix、Windows 等。
- 达梦数据库软件。安装好 DM 数据库软件之后,将拥有配置和管理 DMDPC 所需的所有软件:dmserver、dminit、DIsql 等。这些软件位于安装目录的 bin、tool 等子目录中。
4.2 系统规范
在 DMDPC 系统中,有如下规范及约束:
- 集群中 SP、BP、MP 都有自己的实例名,这些实例名要求全局唯一;
- 一个 DMDPC 集群可以有多个 SP 和多个 BP,但只能有一个 MP;
- DMDPC 中数据的分布以分区为单位,同一分区必须位于同一 BP,同一表的不同分区可以位于不同 BP,一张分区表的所有分区可以只落在部分 BP;非分区表只包含一个分区,因此非分区表只落在一个 BP 上。分区表包含一个或多个分区,因此分区表可以落在一个或多个 BP 上;DMDPC 下,分区列同时也是分布列;
- 在 DMDPC 中分区和分布统一为一个概念;在 DM MPP 中,分区和分布是两个不同的概念;
- 实例在初始化时需指定 DPC_MODE 以决定其角色(SP、BP 或 MP),随后启动时需要附带上 DPC_MODE 参数。实例角色在初始化后不能更改。
4.3 功能限制
和达梦单机实例、DM MPP 等架构相比,DMDPC 在部分数据库功能上存在使用限制,本章节将对这些功能限制进行详细说明。
4.3.1 表空间限制
DMDPC 对于表空间存在以下使用限制:
不支持在 ALTER TABLESPACE 中使用 < 增加 HUGE 路径子句 >。
4.3.2 表限制
DMDPC 对于表存在以下使用限制:
- 不支持数组表;
- 不支持外部表。并且由于 DMDPC 不支持外部表,所以下面三个专门修改外部表的操作均不支持:
<修改表定义子句> ::=
MODIFY PATH <外部表文件路径> |
DEFAULT DIRECTORY <目录名>|
LOCATION ('<文件名>')
- 不支持涉及临时表的查询建表;
- 不支持临时表的 DML 操作回滚;
- 不支持堆表的全局索引;
- 不支持表列的半透明加密;
- 不支持在建表语句中使用 < 空间限制子句 >;
- 不支持有 DPC 全局索引的分区表 truncate 子表;
- 不支持高级日志表 advanced log;
- 不支持修改 HUGE 表的操作:WITH DELTA 和 HUGE 表跨节点交换分区 EXCHANGE PARTITION;
- 对于包含大字段列或自定义字段列的水平分区表不支持 ENABLE ROW MOVEMENT 参数(可以指定,但是无效),即不允许更新后数据发生跨分区的移动;
- DMDPC 仅支持多级分区中的二级分区。二级分区中的分区组合方式和单机一样,主表和子表的总个数也不能超过 65535;
- 不支持修改水平分区表的操作:
<修改表定义子句> ::=
EXCHANGE < SUBPARTITION > <分区名> WITH TABLE [<模式名.>]<表名>|
MOVE SUBPARTITION <子分区名> TABLESPACE <表空间名>
4.3.3 约束限制
DMDPC 对于约束存在以下使用限制:
- 不支持可更新视图的 CHECK 约束;
- 不支持虚拟列上的 CHECK 约束和非空约束;
- 不支持 DOMAIN 的 CHECK 约束;
- 不支持创建 SET NULL 或 SET DEFAULT 约束检查规则的引用约束。引用约束必须包含分布列,即引用表中的引用列和被引用表中的被引用列都必需包含分布列,且分布情况完全相同;
- 仅 BS 模式支持自引用约束,其他模式均不支持。
4.3.4 索引限制
DMDPC 对于索引存在以下使用限制:
- 不支持空间索引、位图索引、位图连接索引、全局函数索引;
- 不支持外键引用全局索引列;
- 不支持将包方法、类方法和用户自定义函数作为函数索引的列;
- 不支持设置二级索引的默认表空间,如果已经设置则直接忽略,系统自动将表聚集索引所在的表空间作为表二级索引的表空间,二级索引的表空间必须和表聚集索引表空间相同。
4.3.5 系统包限制
DMDPC 对于系统包存在以下使用限制:
- 不支持 DBMS_AUDIT 包、DBMS_SPACE 包、DBMS_ERRLOG 包、DBMS_REDEFINITION 包;
- DBMS_FLASHBACK 包不支持查询指定 LSN 时刻的数据库版本,可以查询指定时间的数据库版本;
- 对于 DBMS_REDEFINITION 包,不支持包中的 COPY_TABLE_DEPENDENTS 方法;
- DMDPC 环境下执行 DBMS_MVIEW.REFRESH 方法时,只能单条执行。如果在语句块中执行该方法,则只能通过 EXECUTE IMMEDIATE 动态执行。
4.3.6 备份还原限制
DMDPC 对于备份还原存在以下使用限制:
- 不支持表级备份;
- 不支持 DDL_CLONE 备份还原;
- 不支持联机还原;
- 不支持还原恢复到指定 LSN;
- 不支持表空间级备份还原。不支持执行 LINUX 操作系统下,恢复被删除文件的过程 SP_TABLESPACE_PREPARE_RECOVER 和 SP_TABLESPACE_RECOVER;
- 不支持备份还原相关的系统函数,位于《DM8_SQL 语言使用手册》附录 3 系统存储过程和函数中 3.备份恢复管理;仅支持删除归档的系统函数 SF_ARCHIVELOG_DELETE_BEFORE_TIME()和 SF_ARCHIVELOG_DELETE_BEFORE_LSN(),位于《DM8_SQL 语言使用手册》附录 3 系统存储过程和函数中 9.日志与检查点管理。
4.3.7 其他限制
除上述功能限制外,DMDPC 还存在以下使用限制:
- 不支持在 SP 节点执行 ALTER DATABASE MOUNT 操作;
- 不支持自动统计信息搜集功能;
- 不支持游标类型的参数;
- 不支持 new 数组对象;
- 关闭两阶段提交后不支持 XA 接口功能;
- 对于闪回表、闪回查询和 DBMS_FLASHBACK 包,仅支持基于时间执行闪回相关操作,不支持基于 LSN 执行闪回相关操作;
- 不支持结果集缓存,即无法配置结果集缓存相关的参数;
- 不支持 JOIN APPLY 的连接查询;
- 执行 DDL 时,强制自动提交,不支持 DDL_AUTO_COMMIT=0。