返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

GBA-02BR-0066
错误码
错误标识
错误信息
GBA-02BR-0066

The
gcware
not
in
'RECOVERY'
mode, please switch this mode by hand
错误出现原因
恢复时,集群状态不对应

GBase 8a MPP Cluster 产品手册
7 附录
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1662
分析与建议
将集群置为recovery 状态

使用 LOW_MEMORY_MGR 配置参数来启用自动低内存管理,当达到内存限制时,您可用来更
改主服务器或标准服务器的缺省行为。
onconfig.std 值
LOW_MEMORY_MGR 0

1 = 当数据库服务器启动时,启用自动低内存管理。
0 = 禁用自动低内存管理。
生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行 onmode -wf 命令在 onconfig 文件中动态地重置该值时。
用法
如果您配置主服务器或标准服务器来使用 SHMTOTAL 配置参数值的一个百分率,该值用做
自动低内存管理启动和停止阈值,则 SHMTOTAL 配置参数必须设置为一个正整数值。
注意: 更改 SHMTOTAL 配置参数的值可导致自动低内存管理的配置变得无效,强制数据库
服务器使用缺省设置。
要启用自动低内存管理,请指定:
LOW_MEMORY_MGR 1

使用间隔函数从包含表示 INTERVAL 限定符中的时间单位和分隔符的数字和字
符串的参数中返回 INTERVAL 值。这些函数在定义或修改索引和表的范围间隔
分布式存储策略的 CREATE TABLE 、CREATE INDEX 和 ALTER FRAGMENT
语句中非常有用。
间隔函数将数字或字符串转换为 INTERVAL DAY TO SECOND 或 INTERVAL
YEAR TO MONTH 字面值,或第二个参数中指定的时间单位的有效精度。然而,
这些函数不支持 FRACTION 或 .FRACTION 作为它们的第二个参数中的最后一
个时间单位。
TO_DSINTERVAL 函数
TO_DSINTERVAL 函数将表示时间单位的字符串转换为 INTERVAL DAY TO
SECOND 字符值。此函数还可以接受数字和字符串作为其参数,并以单个时间单
位精度 DAY 、HOUR 、MINUTE 或 SECOND 返回 INTERVAL 值。
当您定义范围间隔存储分配策略以分片表或索引时,您可以使用单个参数(或两
个参数,其同义词 NUMTODSINTERVAL)的 TO_DSINTERVAL 函数来指定间
隔范围值。
语法
数字转换为 INTERVAL

字符串转换为 INTERVAL

元素
描述
限制
语法
DD
一位或两位数指定间隔
中的天数
必须是下列其中之一的数
据类型:
字符串

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1696

CHAR

NCHAR

VARCHAR

NVARCHAR

LVARCHAR
HH:MM:SS
三组两位数字,用冒号
(:)符号分隔,指定间
隔中的小时数、分钟数
和秒数
必须是下列其中之一的数
据类型:

CHAR

NCHAR

VARCHAR

NVARCHAR

LVARCHAR
字符串
number
指定间隔中的天数、小
时数、分钟数或秒数的
数字。
可以是表达式,包括列
表达式,该表达式解析
(或转换)到其中一个
有效数字数据类型。
必须是下列其中之一的数
据类型:

INT

BIGINT

SMALLINT

INT8

DECIMAL

REAL

FLOAT

SERIAL

SERIAL8

BIGSERIAL
数值
用法
当您使用结果分片表或索引时,可以使用 TO_DSINTERVAL 函数指定间隔值。
TO_DSINTERVAL 函数在允许内置例程的上下文中有效。NUMTODSINTERVAL
函数与 TO_DSINTERVAL 函数相同都是用来转换数字值。
以下示例显示了 TO_DSINTERVAL 函数是如何解释不同的值:
以下示例指定一天的间隔:
TO_DSINTERVAL('1 00:00:00')
TO_DSINTERVAL(1,'DAY')
NUMTODSINTERVAL(1,'DAY')
以下示例指定一个小时的间隔:
TO_DSINTERVAL('0 01:00:00')
TO_DSINTERVAL(1,'HOUR')

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1697
NUMTODSINTERVAL(1,'HOUR')
以下示例指定一分 30 秒的间隔:
TO_DSINTERVAL('0 00:01:30')
TO_DSINTERVAL(1.5,'MINUTE')
NUMTODSINTERVAL(1.5,'MINUTE')
以下示例显示了如何使用表达式作为数字值:
TO_DSINTERVAL(10+10+100,'DAY')
TO_YMINTERVAL 函数
TO_YMINTERVAL 函数将表示时间单位的字符串转换为 INTERVAL YEAR TO
MONTH 字符值。此函数还可以接受数字和字符串作为其参数,并返回具有单位
时间单位精度 YEAR 或 MONTH 的 INTERVAL 值。
当您定义范围间隔存储分配策略以分片表或索引时,您可以使用单个参数(或两
个参数,其同义词 NUMTODSINTERVAL)的 TO_DSINTERVAL 函数来指定间
隔范围值。
语法
数字转换为 INTERVAL

字符串转换为 INTERVAL

元素
描述
限制
语法
number 间隔中的年或月的数字。
可以是表达式,该表达式
解析(或强制转型)到其
中一个有效数字数据类
型。
必须是下列其中之一的数据
类型:

INT

BIGINT

SMALLINT

INT8

DECIMAL

REAL
数字

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1698

FLOAT

SERIAL

SERIAL8

BIGSERIAL
MM
指定间隔中月数的两个数
字。连字符(-)必须在第
一个数字之前。
必须是下列其中之一的数据
类型:

CHAR

NCHAR

VARCHAR

NVARCHAR

LVARCHAR
字符串
YY
指定间隔中年数的两个数

必须是下列其中之一的数据
类型:

CHAR

NCHAR

VARCHAR

NVARCHAR

LVARCHAR
字符串
用法
当按间隔分片表或索引时,可以使用 TO_YMINTERVAL 函数指定间隔值。
TO_YMINTERVAL 函数在允许内置例程的上下文中有效。
NUMTOYMINTERVAL 函数与 TO_YMINTERVAL 函数相同都是用来转换数字
值。
示例
以下示例显示了 TO_YMINTERVAL 是如何解释不同的值的。
以下示例指定一年的间隔:
TO_YMINTERVAL('01-00')
TO_YMINTERVAL(1,'YEAR')
NUMTOYMINTERVAL(1,'YEAR')
以下示例指定一个月的间隔:
TO_YMINTERVAL('00-01')
TO_YMINTERVAL(1,'MONTH')
NUMTOYMINTERVAL(1,'MONTH')
以下示例指定一年零六个月的间隔:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1699
TO_YMINTERVAL('01-06')
TO_YMINTERVAL(1.5,'YEAR')
NUMTOYMINTERVAL(1.5,'YEAR')
以下示例显示如何使用表达式作为数字值:
TO_YMINTERVAL(10+10+100,'YEAR')
以下示例定义了具有范围间隔分片模式的表 t2 。这里的 DATETIME 列 dt1 是
分片键,NUMTOYMINTERVAL 的返回值将间隔大小定义为 25 年。具有年份
晚于 2005 年但早于 2031 的 dt1 值的行将存储在范围分片 p1 中:
CREATE TABLE t2 (c1 int, d1 date, dt1 DATETIME YEAR TO FRACTION)
FRAGMENT BY RANGE (dt1) INTERVAL (NUMTOYMINTERVAL (25,'YEAR'))
PARTITION p1 VALUES <
DATETIME(2006-01-01 00:00:00.00000) YEAR TO FRACTION(5) IN dbs1;
如果插入一行,其中 dt1 中的 YEAR 值小于 2006 或大于 2030,那么数据库
服务器将会自动创建一个新的间隔分片,其范围大小是 25 年。有关范围间隔分
片的语法和语义的更多信息,请参阅 Interval fragment 子句。