限制在 Db2 for z/OS

Db2 for z/OS 有系统限制、对象和SQL限制、标识符和字符串长度限制,以及特定数据类型值的限制。

系统存储限制可能会超出本节规定的限制。 以下未列出的物品数量受系统存储限制。

标识长度限制

下表显示了标识符的长度限制。

表 1. 标识符长度限制为除非另有说明,否则本表中的字节(byte)一词是指 UTF-8 表示的字节数。
项目 限制
外部Java程序名 1305字节
别名、辅助表、集合、克隆表、约束、相关性、游标(DECLARE CURSOR WITH RETURN或EXEC SQL实用程序除外)、 Db2 REST服务、不同类型(两部分名称)、函数(两部分名称)、主机标识符、索引、JAR、参数、过程、角色、架构、序列、特定、语句、存储组、保存点、SQL条件、SQL标签、SQL参数、SQL变量、同义词、表、触发器、视图、XML属性名称、XML元素名称 128字节
授权ID或安全标签的名称。 8 字节
例程或 Db2 REST服务的版本标识符 64个EBCDIC字节, UTF-8 表示的名称不得超过122字节。
栏目名称 30字节 1
用DECLARE CURSOR WITH RETURN创建的游标名称 30字节
使用EXEC SQL实用程序创建的光标名称 8 字节
地点名称 16 字节
数据库、表空间、索引空间或缓冲池的名称 8 字节
计划或方案名称 8 字节
套餐名称 8字节(使用BIND PACKAGE命令创建的软件包仅使用8个EBCDIC字符。 128字节可用于CREATE FUNCTION(SQL标量)语句、CREATE PROCEDURE(SQL-native)语句、CREATE TRIGGER语句或指定 zFS 文件为DBRM库的BIND命令创建的包
使用CREATE TRUSTED CONTEXT或ALTER TRUSTED CONTEXT创建的配置文件的名称 127字节
ICF目录的名称。 8 字节
注:
  1. 如果列名称长度或不同类型模式或名称长度超过30个Unicode字节,则在应用程序中描述这些对象时,SQLDA的SQLNAME字段会发生截断。

数字限制

下表列出了 Db2 for z/OS 中数值的最小和最大限值。

表 2. 数字限制
项目 限制
最小 SMALLINT 值 -32768
最大 SMALLINT 值 32767
最小 INTEGER 值 -2147483648
最大 INTEGER 值 2147483647
最小 BIGINT 值 -9223372036854775808
最大 BIGINT 值 9223372036854775807
最小 REAL 值 约 -7.2x1075
最大 REAL 值 约7.2x1075
最小正 REAL 值 约5.4x10-79
最大负 REAL 值 约 -5.4x10-79
最小浮点数 约 -7.2x1075
最大浮点数 约7.2x1075
最小正浮点数 约5.4x10-79
负浮点数最大值 约 -5.4x10-79
最小十进制值 1–103 1
最大十进制值 1031 - 1
最大十进制精度 31
最小 DECFLOAT(16) 值1 - 9.9 99999999999999x10384
最大的DECFLOAT(16) 值1 9.999999999999999x1 03 84
最小正值 DECFLOAT(16) 值1 1.000000000000000x10-3 8 3
负DECFLOAT(16) 最大值1 -1.000000000000000x10 - 383
最小 DECFLOAT(34) 值1 - 9.99999999999999999999999999999999x106144。
最大的DECFLOAT(34) 值1 9.9999999999999999999999999999 9999x106144。
最小正值 DECFLOAT(34) 值1 1.00000000000000000000000000000000x10- 614 3
最大负 DECFLOAT(34) 值 1 -1.00000000000000000000000000000000x10-6 1 43
DECFLOAT值的长度系数 DECFLOAT(16)为16位数字;DECFLOAT(34)为34位数字
DECFLOAT值的最大指数 (Emax DECFLOAT(16)为384;DECFLOAT(34)为6144
DECFLOAT值的最低指数 (Emin DECFLOAT(16)为-383;DECFLOAT(34)为-6143
对DECFLOAT值的偏好 DECFLOAT(16)为398;DECFLOAT(34)为6176
注:
  1. 这些是DECFLOAT中正常数字的限制。 DECFLOAT还包含一些特殊值,例如 NaN 和Infinity,这些值也是有效的。 DECFLOAT还支持超出记录范围的非正常数值。

字符串长度限制

下表列出了 Db2 for z/OS 中字符串的长度限制。

表 3. 字符串长度限制
项目 限制
CHAR的最大长度 255 字节
图形最大长度 127个双字节字符
二进制最大长度 255 字节
VARCHAR的最大长 1
  • 4046字节,用于一个表空间中一个表的列,页面大小为4 KB
  • 8128字节,用于一个表空间中一个表的列,该表空间有8 KB页面
  • 16320字节,用于一个表空间中一个表的列,该表空间使用16 KB页面
  • 32704字节,用于一个表空间中一个表的列,该表空间有32 KB页面

否则,32704字节

XML索引可索引的VARCHAR的最大长度 转换后为1000字节 UTF-8
VARGRAPHIC的最大长 1
  • 2023 双字节字符,用于一个表格空间中一个表格中的一列,页面大小为 4 KB
  • 4064 双字节字符,用于一个表空间中一个表格中的一列,每页8 KB
  • 8160 双字节字符,用于一个表空间中一个表格中的一列,每页16 KB
  • 16352 双字节字符,用于一个表格空间中一个表格中的一列,每页32 KB

否则,16352个双字节字符

更改开始VARBINARY 的最大长度 1更改结束 更改开始
  • 4046字节,用于一个表空间中一个表的列,页面大小为4 KB
  • 8128字节,用于一个表空间中一个表的列,该表空间有8 KB页面
  • 16320字节,用于一个表空间中一个表的列,该表空间使用16 KB页面
  • 32704字节,用于一个表空间中一个表的列,该表空间有32 KB页面

否则,32704字节

更改结束
CLOB的最大长度 2147483647字节(2 GB - 1字节)
DBCLOB的最大长度 1073741823 双字节字符
BLOB的最大长度 2147483647字节(2 GB - 1字节)
字符常量的最大长度 32704 UTF-8 字节
十六进制常量字符的最大长度 32704 十六进制数字
图形字符串常量的最大长度 16352 双字节字符(以 UTF-8 表示时为 32704 字节)
十六进制图形字符串常量的最大长度 32704 十六进制数字
标量表达式中使用的文本字符串的最大长度 4000 UTF-8 字节
字符串的最大长度 2147483647字节(2 GB - 1字节)
一个连续图形字符串的最大长度 1073741824 双字节字符
二进制串的最大长度 2147483647字节(2 GB - 1字节)
XML模式文本的最大长度 转换为 4000 字节后 UTF-8
XML文档中XML元素或属性名称的最大长度 1000 字节
命名空间统一资源标识符的最大长度 1000 字节
命名空间前缀的最大长度 998字节
内部XML树的最大深度 128个关卡
注:
  1. 只有当列是表中唯一的一列时,才能达到最大长度。 否则,最大长度取决于页面上剩余的空间。

日期时间限制

下表列出了 Db2 for z/OS 中日期时间值的最小和最大限制。

表 4. 日期时间限制
项目 限制
日期的最小值(以ISO格式显示) 0001-01-01
日期的最大值(以ISO格式显示) 9999-12-31
最小时间值(以ISO格式显示) 00.00.00
最大时间值(以ISO格式显示) 24.00.00
最小不包含时区的TIMESTAMP值 0001-01-01-00.00.00.000000000000
最大的不带时区的TIMESTAMP值 9999-12-31-24.00.00.000000000000 1
带时区值的最小时间戳 0001-01-01-00.00.00.000000000000 +00:00
带时区值的最大时间戳 9999-12-31-24.00.00.000000000000 +00:00 1
时间戳精度范围 0到12
时区 时长 -24到24
时区 分钟范围 0到59
注:
  1. 最大值以UTC值表示。 当不带时区的时间戳与带时区的时间戳进行比较时,会使用隐式时区进行必要的调整。 在调整过程中,无时区的时间戳可以转换为大于带时区值的时间戳的最大值(这种情况可能发生在比较和赋值等操作中)。 这种情况可以通过将“ 9999-12-30-00.00.00.000000000000 ”作为无时区时间戳的最大值,将“ 9999-12-30-00.00.00.000000000000 +00:00”作为有时区时间戳的最大值来避免。

SQL 语句限制

下表列出了 Db2 for z/OS 中 SQL 语句的 Db2 限制。

表5。 Db2 SQL语句的限制
项目 限制
表或视图中列的最大数量(取决于CREATE VIEW语句的复杂程度)或表函数返回的列的最大数量。
750或更少(包括隐藏列)
749(如果表格是附属的)
更改开始MERGE 语句目标中可引用列的最大数量。更改结束 更改开始749更改结束
更改开始MERGE 语句源中可引用表达式的最大数量。更改结束 更改开始750更改结束
SELECT、UPDATE、INSERT、MERGE或DELETE语句或视图中基本表的最大近似数量 更改开始1024更改结束
FROM子句中表的最大数量 225或更少,取决于语句的复杂程度
使用单个MERGE语句或INSERT语句的FOR n ROWS形式插入的最大行数 32767
表格的最大行数和记录数 参见最大记录大小
存储组中最大音量ID数量 133
分区表空间或分区索引中的最大分区数

对于大多数表空间类型,4096取决于DSSIZE值和缓冲池页面大小。

64用于未定义DSSIZE大于 2GB (或LARGE 子句1) 的表空间。

分区边界限制键值长度之和的最大值 765 UTF-8 字节
分区(表格空间或索引)的最大大小
更改开始对于采用相对页码的按范围分区的表空间:
  • 1 TB
更改结束
对于定义的表空间,其DSSIZE大于4 GB:
  • 256 GB,取决于页面大小(1至64个分区,4 KB页面;1至128个分区,8 KB页面;1至256个分区,16 KB页面;1至512个分区,32 KB页面)
对于定义为4 GB (或LARGE子句1) 的表空间:
  • 4 GB,1-4096分区
更改开始对于 DSSIZE 不大于 2 GB(且未使用 LARGE 子句 1 定义)的表空间:
  • 4 GB,适用于1-16个分区
  • 2 GB,适用于17-32个分区
  • 1 GB,33-64个分区
更改结束
分区表空间中非分区索引的最大大小
对于5字节EA表空间:
  • 16 TB,4 KB页面
  • 32 TB,8 KB页面
  • 64 TB,16 KB页面
  • 128 TB,32 KB页面
对于使用LARGE子句定义的表空间 1
  • 16 TB
索引键的最大长度
  • 分区索引 :255-n
  • 非分隔索引,填充 :2000-n
  • 更改开始未填充的非分区索引: 2000 - n - 2m - 3d更改结束
n
允许空值的键中的列数
m
琴键上长短不一的琴键数量
更改开始更改结束
更改开始密钥中的 DECFLOAT 列数更改结束
分区索引分区中使用的最大字节数 255(此最大限制取决于表空间中分区数量的其他限制。 分区数量*(106+限制密钥大小)必须小于65394
索引键中的最大列数(字节) 64
索引键中表达式的最大数量 64
语句中子查询的最大数量 224
SQLDA中指向的主变量和指示变量的最大总长度 32767字节

LOB占用2147483647字节(2 GB - 1字节),受应用环境和主机语言的限制

任何引用主机变量或参数标记的语句的最大 SQLDA 应用规模 99016字节
插入或更新操作使用的最大宿主变量长度 非LOB为32704字节

LOB占用2147483647字节(2 GB - 1字节),受应用环境和主机语言的限制

更改开始语句中主机变量或参数标记的最大数量更改结束 更改开始更改开始16000 适用于来自 z/OS 以外客户端的分布式应用程序。 否则更改结束更改开始
  • 2205 用于没有LOB或不同类型的主变量或参数标记的应用程序
  • 750 用于包含一个或多个 LOB 或不同类型的主变量或参数标记的应用程序
更改结束 更改结束
SQL语句的最大长度 2097152字节
选择列表中的最大元素数 750或更少,取决于选择列表是否用于静态滚动光标2 的结果表
更改开始IN 列表中元素的最大数量 更改结束 更改开始32767更改结束
WHERE 或 HAVING 子句中的最大谓词数 受存储空间限制
更改开始CUBE 分组中元素的最大数量更改结束 更改开始16更改结束
需要排序和评估聚合函数(MULTIPLE DISTINCT和GROUP BY)的查询操作的最大列总数 65529字节
排序键的最大长度 32707字节
CHECK 约束的最大长度 3800字节
SQL CALL语句单个参数中可传递的最大字节数 非LOB为32765字节

LOB占用2147483647字节(2 GB - 1字节),受应用环境和主机语言的限制

SQL语句可以隐式或显式引用的存储过程、触发器和用户定义函数的最大数量 64个嵌套级别
更改开始存储过程或函数中参数的最大数量更改结束 更改开始更改开始包含参数列表的 SQL 语句不能超过 SQL 语句的最大长度。更改结束更改结束
SQL路径的最大长度 2048字节
CREATE PROCEDURE、CREATE FUNCTION、ALTER PROCEDURE或ALTER FUNCTION语句中WLM环境名称的最大长度。 32 字节
CREATE INDEX语句的XMLPATTERN子句中XPath级别的最大值。 50个嵌套级别
注:
  1. 为了与 DB2® version 5 兼容,允许使用LARGE关键字 ,但前提是不指定DSSIZE子句。 建议使用 DSSIZE 子句来指定 4 GB 或更大的最大分区大小。 更多信息,请参阅非大表格空间(已弃用 )。
  2. 如果滚动光标为只读,则最大值为749减去ORDER BY中不在选择列表中的列数。 如果可滚动光标不是只读的,则最大值为747。

系统限制

下表显示了 Db2 系统限值( Db2 for z/OS )。

表6。 Db2 系统限制
项目 限制
同时运行的 Db2 或应用程序代理的最大数量 受EDM池大小、缓冲池大小以及每个 Db2 或应用程序代理使用的存储量限制
同时有效的审计策略的最大数量 32
在采用绝对页编号的按增长分区(PBG)表空间或按范围分区(PBR)表空间中,单个表的最大容量 128 TB
带相对页码(PBR RPN)的按范围分区表空间中表的最大尺寸 4096 太字节(TB)
简单或分段表格的最大尺寸 64 GB
更改开始物理日志记录的最大大小更改结束 更改开始36,000 字节更改结束
日志空间的最大容量
  • 6字节格式: 248字节
  • 10字节格式: 280字节
活动日志数据集的最大大小 更改开始768 GB 减 1 个字节更改结束
日志数据集的最大容量 更改开始768 GB 减 1 个字节更改结束
活动日志副本的最大数量 2
存档日志副本的最大数量 2
活动日志数据集的最大数量(每个副本) 93
存档日志卷的最大数量(每个副本) 10000
应用程序或用户可访问的最大数据库数量 受限于系统存储和EDM池的大小
数据库的最大数量 65217
隐式创建数据库的最大数量 序列的最大值 SYSIBM.DSNSEQ_IMPLICITDB ,默认值为10000
每个数据库的最大内部对象数量为 1 32767
已声明的全局临时表的最大索引数 10000
EDM池的最大容量 安装参数的最大值取决于可用空间
每页最多行数 除目录和目录表空间外,所有表空间的最大值为255,目录和目录表空间的最大值为127
最大简单或分段数据集大小 2 GB
最大分区数据集大小 表5中 分区最大尺寸
最大LOB数据集大小 256 GB
更改开始LOB 表空间的最大数据集数更改结束 更改开始254更改结束
更改开始LOB 数据每个线程的最大存储量更改结束 更改开始2 GB更改结束
一个工作文件数据库中可定义的最大表格空间数量 500
工作文件数据库中可定义的最大表和触发器数量 11767
更改开始DSN_PROFILE_TABLE 配置文件表中活动配置文件的最大数量更改结束 更改开始4096更改结束
更改开始使用ENABLE='Y'的 DSN_VIRTUAL_INDEXES 行的最大数量。 Db2更改结束 更改开始4096更改结束
更改开始使用ENABLE='Y'的 DSN_VIRTUAL_KEYTARGETS 行的最大数量。 Db2更改结束 更改开始4096更改结束
注:
  1. 外部对象的内部对象描述符(OBD)数量如下:
    • 桌面空间:2
    • 表格:1
    • 索引:2
    • 检查约束:1
    • 参照完整性关系:2
    • 每个LOB列的辅助关系:1
    • 每个XML列的XML关系:1
    • 触发器:1
    • 带有“代替”触发器的视图:1