返回首页

gbase数据、南大通用产品文档:GBase8s解决失败的恢复

更新日期:2024年09月11日


GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 79 -
解决失败的恢复的方式取决于失败的原因。
即使可重新开始的恢复被关闭,您仍然可以挽救某些失败的恢复。例如:如果恢复由于存
储管理器或存储设备错误而失败,您可以修复磁带机或存储管理器的问题,重新安装磁带,
然后继续进行恢复。
下表显示当物理恢复失败并且 BAR_RETRY 配置参数的值 > 1 时预期的结果。
表 1. 失败的物理恢复方案
错误类型
RESTARTABLE_
RESTORE 设置
物理恢复失败时采取什么措施?
数据库服务器、
ON-Bar 或存
储管理器错误
(数据库服务
器仍在运行)
ON 或 OFF
ON-Bar 重试每个失败的恢复。如果存储管理器失
败,请修复存储管理器的错误。
如果尝试的恢复失败,请发出 onbar
-r spaces 命令,其中 spaces 是还没有恢复
的存储空间列表。使用 onstat -d 获取需要恢复
的存储空间列表。ON-Bar 恢复每个存储空间的 0
级备份,
接着是 1 级和 2 级备份
(如果备份存在)


ON-Bar 或存
储管理器错误
(数据库服务
器仍在运行)
启用
发出 onbar -RESTART 命令。
如果存储管理器失败,请修复存储管理器的错误。
恢复将从第一个恢复失败的存储空间和备份级别处
重新启动。如果成功恢复存储空间的 0 级备份,重
新启动的恢复将跳过 0 级备份并恢复 1 级和 2
级备份(如果备份存在)。
数据库服务器
故障
ON 或 OFF
由于数据库服务器已关闭,所以执行冷恢复。使
用 onbar -r 恢复关键数据库空间以及第一次未
恢复的所有非关键空间。
数据库服务器
故障
启用
发出 onbar -RESTART 命令。
恢复将从第一个恢复失败的存储空间和备份级别处
重新启动。如果成功恢复存储空间的 0 级备份,重
新启动的恢复将跳过 0 级备份并恢复 1 级和 2
级备份(如果备份存在)。

下表显示当逻辑恢复失败时将出现的结果。
表 2. 失败的逻辑恢复方案
错误类型
RESTARTABLE_
RESTORE 设置
逻辑恢复失败时采取什么措施?
冷恢复中数据库服
启用
发出 onbar -RESTART 命令。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 80 -
错误类型
RESTARTABLE_
RESTORE 设置
逻辑恢复失败时采取什么措施?
务器或 ON-Bar发
生错误(数据库服
务器仍在运行)
逻辑恢复在最近的检查点处重新启动。如果该
恢复失败,关闭并重新启动数据库服务器来启
动逻辑日志的快速恢复。所有未恢复的逻辑日
志将会丢失。
数据库服务器
或 ON-Bar 错误
(数据库服务器仍
在运行)
ON 或 OFF
发出 onbar -r -l 命令。恢复将在失败的逻
辑日志处重新启动。
如果 onbar -r -l 仍然失败,关闭并重新启
动数据库服务器。数据库服务器将完成快速恢
复。所有未恢复的逻辑日志将会丢失。
如果快速恢复不起作用,您必须执行冷恢复。
数据库服务器错误 启用
如果冷逻辑恢复失败,那么发出 onbar
-RESTART。
如果热逻辑恢复失败,那么发出 onbar -r
-l 命令。如果该命令失败,从头开始重新启
动整个恢复。
存储管理器错误
ON 或 OFF
ON-Bar 重试每个失败的逻辑恢复。如果重试
的恢复失败,那么逻辑恢复将暂挂。请修复存
储管理器的错误。然后发出 onbar -r -l 命
令。 恢复将在失败的逻辑日志处重新启动。

语法

日志收集(非root 用户)
gs_collector --begin-time="BEGINTIME" --end-time="ENDTIME" [-h HOSTNAME | -f
HOSTFILE] [--keyword=KEYWORD] [--speed-limit=SPEED] [-o OUTPUT] [-l LOGFILE] [-C
CONFIGFILE]

显示帮助信息
gs_collector -? | --help

显示版本号信息
gs_collector -V | --version

列存表目前只支持rank(expression)和row_number(expression)两个函数。
窗口函数与OVER 语句一起使用。OVER 语句用于对数据进行分组,并对组内元素进
行排序。窗口函数用于给组内的值生成序号。
窗口函数中的order by 后面必须跟字段名,若order by 后面跟数字,该数字会被按照常

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
355
量处理,因此对目标列没有起到排序的作用。

RANK()
描述:RANK 函数为各组内值生成跳跃排序序号,其中,相同的值具有相同序号。
返回值类型:BIGINT
示例:
gbase=# SELECT d_moy, d_fy_week_seq, rank() OVER(PARTITION BY d_moy ORDER BY
d_fy_week_seq) FROM public.date_dim WHERE d_moy < 4 AND d_fy_week_seq < 7 ORDER
BY 1,2;
d_moy | d_fy_week_seq | rank
-------+---------------+------
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
2 |
8
1 |
2 |
8
1 |
2 |
8
1 |
2 |
8
1 |
2 |
8
1 |
2 |
8
1 |
2 |
8
1 |
3 |
15
1 |
3 |
15
1 |
3 |
15
1 |
3 |
15
1 |
3 |
15
1 |
3 |
15
1 |
3 |
15
1 |
4 |
22
1 |
4 |
22
1 |
4 |
22
1 |
4 |
22
1 |
4 |
22
1 |
4 |
22

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
356
1 |
4 |
22
1 |
5 |
29
1 |
5 |
29
2 |
5 |
1
2 |
5 |
1
2 |
5 |
1
2 |
5 |
1
2 |
5 |
1
2 |
6 |
6
2 |
6 |
6
2 |
6 |
6
2 |
6 |
6
2 |
6 |
6
2 |
6 |
6
2 |
6 |
6
(42 rows)

ROW_NUMBER()
描述:ROW_NUMBER 函数为各组内值生成连续排序序号,其中,相同的值其序号也
不相同。
返回值类型:BIGINT
示例:
gbase=# SELECT d_moy, d_fy_week_seq, Row_number() OVER(PARTITION BY d_moy ORDER
BY d_fy_week_seq) FROM public.date_dim
WHERE d_moy < 4 AND d_fy_week_seq < 7
ORDER BY 1,2;
d_moy | d_fy_week_seq | row_number
-------+---------------+------------
1 |
1 |
1
1 |
1 |
2
1 |
1 |
3
1 |
1 |
4
1 |
1 |
5
1 |
1 |
6
1 |
1 |
7
1 |
2 |
8
1 |
2 |
9
1 |
2 |
10
1 |
2 |
11

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
357
1 |
2 |
12
1 |
2 |
13
1 |
2 |
14
1 |
3 |
15
1 |
3 |
16
1 |
3 |
17
1 |
3 |
18
1 |
3 |
19
1 |
3 |
20
1 |
3 |
21
1 |
4 |
22
1 |
4 |
23
1 |
4 |
24
1 |
4 |
25
1 |
4 |
26
1 |
4 |
27
1 |
4 |
28
1 |
5 |
29
1 |
5 |
30
2 |
5 |
1
2 |
5 |
2
2 |
5 |
3
2 |
5 |
4
2 |
5 |
5
2 |
6 |
6
2 |
6 |
7
2 |
6 |
8
2 |
6 |
9
2 |
6 |
10
2 |
6 |
11
2 |
6 |
12
(42 rows)

DENSE_RANK()
描述:DENSE_RANK 函数为各组内值生成连续排序序号,其中,相同的值具有相同序
号。
返回值类型:BIGINT
示例:

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
358
gbase=# SELECT d_moy, d_fy_week_seq, dense_rank() OVER(PARTITION BY d_moy ORDER
BY d_fy_week_seq) FROM public.date_dim WHERE d_moy < 4 AND d_fy_week_seq < 7 ORDER
BY 1,2;
d_moy | d_fy_week_seq | dense_rank
-------+---------------+------------
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
2 |
2
1 |
2 |
2
1 |
2 |
2
1 |
2 |
2
1 |
2 |
2
1 |
2 |
2
1 |
2 |
2
1 |
3 |
3
1 |
3 |
3
1 |
3 |
3
1 |
3 |
3
1 |
3 |
3
1 |
3 |
3
1 |
3 |
3
1 |
4 |
4
1 |
4 |
4
1 |
4 |
4
1 |
4 |
4
1 |
4 |
4
1 |
4 |
4
1 |
4 |
4
1 |
5 |
5
1 |
5 |
5
2 |
5 |
1
2 |
5 |
1
2 |
5 |
1
2 |
5 |
1
2 |
5 |
1
2 |
6 |
2

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
359
2 |
6 |
2
2 |
6 |
2
2 |
6 |
2
2 |
6 |
2
2 |
6 |
2
2 |
6 |
2
(42 rows)

PERCENT_RANK()
描述:PERCENT_RANK 函数为各组内对应值生成相对序号,即根据公式(rank - 1) /
(total rows - 1)计算所得的值。
其中rank 为该值依据RANK 函数所生成的对应序号,
totalrows
为该分组内的总元素个数。
返回值类型:DOUBLE PRECISION
示例:
gbase=# SELECT d_moy, d_fy_week_seq, percent_rank() OVER(PARTITION BY d_moy
ORDER BY d_fy_week_seq) FROM public.date_dim WHERE d_moy < 4 AND d_fy_week_seq
< 7 ORDER BY 1,2;
d_moy | d_fy_week_seq |
percent_rank
-------+---------------+------------------
1 |
1 |
0
1 |
1 |
0
1 |
1 |
0
1 |
1 |
0
1 |
1 |
0
1 |
1 |
0
1 |
1 |
0
1 |
2 | .241379310344828
1 |
2 | .241379310344828
1 |
2 | .241379310344828
1 |
2 | .241379310344828
1 |
2 | .241379310344828
1 |
2 | .241379310344828
1 |
2 | .241379310344828
1 |
3 | .482758620689655
1 |
3 | .482758620689655
1 |
3 | .482758620689655
1 |
3 | .482758620689655
1 |
3 | .482758620689655

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
360
1 |
3 | .482758620689655
1 |
3 | .482758620689655
1 |
4 | .724137931034483
1 |
4 | .724137931034483
1 |
4 | .724137931034483
1 |
4 | .724137931034483
1 |
4 | .724137931034483
1 |
4 | .724137931034483
1 |
4 | .724137931034483
1 |
5 |
.96551724137931
1 |
5 |
.96551724137931
2 |
5 |
0
2 |
5 |
0
2 |
5 |
0
2 |
5 |
0
2 |
5 |
0
2 |
6 | .454545454545455
2 |
6 | .454545454545455
2 |
6 | .454545454545455
2 |
6 | .454545454545455
2 |
6 | .454545454545455
2 |
6 | .454545454545455
2 |
6 | .454545454545455
(42 rows)

CUME_DIST()
描述:CUME_DIST 函数为各组内对应值生成累积分布序号。即根据公式(小于等于当
前值的数据行数)/(该分组总行数totalrows)计算所得的相对序号。
返回值类型:DOUBLE PRECISION
示例:
gbase=# SELECT d_moy, d_fy_week_seq, cume_dist() OVER(PARTITION BY d_moy ORDER
BY d_fy_week_seq) FROM public.date_dim e_dim WHERE d_moy < 4 AND d_fy_week_seq
< 7 ORDER BY 1,2;
d_moy | d_fy_week_seq |
cume_dist
-------+---------------+------------------
1 |
1 | .233333333333333
1 |
1 | .233333333333333
1 |
1 | .233333333333333

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
361
1 |
1 | .233333333333333
1 |
1 | .233333333333333
1 |
1 | .233333333333333
1 |
1 | .233333333333333
1 |
2 | .466666666666667
1 |
2 | .466666666666667
1 |
2 | .466666666666667
1 |
2 | .466666666666667
1 |
2 | .466666666666667
1 |
2 | .466666666666667
1 |
2 | .466666666666667
1 |
3 |
.7
1 |
3 |
.7
1 |
3 |
.7
1 |
3 |
.7
1 |
3 |
.7
1 |
3 |
.7
1 |
3 |
.7
1 |
4 | .933333333333333
1 |
4 | .933333333333333
1 |
4 | .933333333333333
1 |
4 | .933333333333333
1 |
4 | .933333333333333
1 |
4 | .933333333333333
1 |
4 | .933333333333333
1 |
5 |
1
1 |
5 |
1
2 |
5 | .416666666666667
2 |
5 | .416666666666667
2 |
5 | .416666666666667
2 |
5 | .416666666666667
2 |
5 | .416666666666667
2 |
6 |
1
2 |
6 |
1
2 |
6 |
1
2 |
6 |
1
2 |
6 |
1
2 |
6 |
1
2 |
6 |
1
(42 rows)

NTILE(num_buckets integer)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
362
描述:NTILE 函数根据num_buckets integer 将有序的数据集合平均分配到num_buckets
所指定数量的桶中,并将桶号分配给每一行。分配时应尽量做到平均分配。
返回值类型:INTEGER
示例:
gbase=# SELECT d_moy, d_fy_week_seq, ntile(3) OVER(PARTITION BY d_moy ORDER BY
d_fy_week_seq) FROM public.date_dim WHERE d_moy < 4 AND d_fy_week_seq < 7 ORDER
BY 1,2;
d_moy | d_fy_week_seq | ntile
-------+---------------+-------
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
2
1 |
2 |
2
1 |
2 |
2
1 |
2 |
2
1 |
3 |
2
1 |
3 |
2
1 |
3 |
2
1 |
3 |
2
1 |
3 |
2
1 |
3 |
2
1 |
3 |
3
1 |
4 |
3
1 |
4 |
3
1 |
4 |
3
1 |
4 |
3
1 |
4 |
3
1 |
4 |
3
1 |
4 |
3
1 |
5 |
3

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
363
1 |
5 |
3
2 |
5 |
1
2 |
5 |
1
2 |
5 |
1
2 |
5 |
1
2 |
5 |
2
2 |
6 |
2
2 |
6 |
2
2 |
6 |
2
2 |
6 |
3
2 |
6 |
3
2 |
6 |
3
2 |
6 |
3
(42 rows)

LAG(value any [, offset integer [, default any ]])
描述:LAG 函数为各组内对应值生成滞后值。即当前值对应的行数往前偏移offset 位
后所得行的value 值作为序号。若经过偏移后行数不存在,则对应结果取为default 值。若无
指定,在默认情况下,offset 取为1,default 值取为NULL。
返回值类型:与参数数据类型相同。
示例:
gbase=# SELECT d_moy, d_fy_week_seq, lag(d_moy,3,null) OVER(PARTITION BY d_moy
ORDER BY d_fy_week_seq) FROM public.date_dim WHERE d_moy < 4 AND d_fy_week_seq
< 7 ORDER BY 1,2;
d_moy | d_fy_week_seq | lag
-------+---------------+-----
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
364
1 |
2 |
1
1 |
2 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
5 |
1
1 |
5 |
1
2 |
5 |
2 |
5 |
2 |
5 |
2 |
5 |
2
2 |
5 |
2
2 |
6 |
2
2 |
6 |
2
2 |
6 |
2
2 |
6 |
2
2 |
6 |
2
2 |
6 |
2
2 |
6 |
2
(42 rows)

LEAD(value any [, offset integer [, default any ]])
描述:LEAD 函数为各组内对应值生成提前值。即当前值对应的行数向后偏移offset 位
后所得行的value 值作为序号。若经过向后偏移后行数超过当前组内的总行数,则对应结果
取为default 值。若无指定,在默认情况下,offset 取为1,default 值取为NULL。
返回值类型:与参数数据类型相同。
示例:

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
365
gbase=# SELECT d_moy, d_fy_week_seq, lead(d_fy_week_seq,2) OVER(PARTITION BY
d_moy ORDER BY d_fy_week_seq) FROM
public.date_dim WHERE d_moy < 4 AND
d_fy_week_seq < 7 ORDER BY 1,2;
d_moy | d_fy_week_seq | lead
-------+---------------+------
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
2
1 |
1 |
2
1 |
2 |
2
1 |
2 |
2
1 |
2 |
2
1 |
2 |
2
1 |
2 |
2
1 |
2 |
3
1 |
2 |
3
1 |
3 |
3
1 |
3 |
3
1 |
3 |
3
1 |
3 |
3
1 |
3 |
3
1 |
3 |
4
1 |
3 |
4
1 |
4 |
4
1 |
4 |
4
1 |
4 |
4
1 |
4 |
4
1 |
4 |
4
1 |
4 |
5
1 |
4 |
5
1 |
5 |
1 |
5 |
2 |
5 |
5
2 |
5 |
5
2 |
5 |
5
2 |
5 |
6
2 |
5 |
6
2 |
6 |
6

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
366
2 |
6 |
6
2 |
6 |
6
2 |
6 |
6
2 |
6 |
6
2 |
6 |
2 |
6 |
(42 rows)

FIRST_VALUE(value any)
描述:FIRST_VALUE 函数取各组内的第一个值作为返回结果。
返回值类型:与参数数据类型相同。
示例:
gbase=# SELECT d_moy, d_fy_week_seq, first_value(d_fy_week_seq) OVER(PARTITION
BY d_moy ORDER BY d_fy_week_seq) FROM public.date_dim WHERE d_moy < 4 AND
d_fy_week_seq < 7 ORDER BY 1,2;
d_moy | d_fy_week_seq | first_value
-------+---------------+-------------
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
4 |
1

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
367
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
5 |
1
1 |
5 |
1
2 |
5 |
5
2 |
5 |
5
2 |
5 |
5
2 |
5 |
5
2 |
5 |
5
2 |
6 |
5
2 |
6 |
5
2 |
6 |
5
2 |
6 |
5
2 |
6 |
5
2 |
6 |
5
2 |
6 |
5
(42 rows)

LAST_VALUE(value any)
描述:LAST_VALUE 函数取各组内的最后一个值作为返回结果。
返回值类型:与参数数据类型相同。
示例:
gbase=# SELECT d_moy, d_fy_week_seq, last_value(d_moy) OVER(PARTITION BY d_moy
ORDER BY d_fy_week_seq) FROM public.date_dim WHERE d_moy < 4 AND d_fy_week_seq
< 6 ORDER BY 1,2;
d_moy | d_fy_week_seq | last_value
-------+---------------+------------
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
2 |
1

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
368
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
5 |
1
1 |
5 |
1
2 |
5 |
2
2 |
5 |
2
2 |
5 |
2
2 |
5 |
2
2 |
5 |
2
(35 rows)

NTH_VALUE(value any, nth integer)
描述:NTH_VALUE 函数返回该组内的第nth 行作为结果。若该行不存在,则默认返回
NULL。
返回值类型:与参数数据类型相同。
示例:
gbase=# SELECT d_moy, d_fy_week_seq, nth_value(d_fy_week_seq,6) OVER(PARTITION
BY d_moy ORDER BY d_fy_week_seq) FROM public.date_dim WHERE d_moy < 4 AND
d_fy_week_seq < 6 ORDER BY 1,2;

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
369
d_moy | d_fy_week_seq | nth_value
-------+---------------+-----------
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
1 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
2 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
3 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
4 |
1
1 |
5 |
1
1 |
5 |
1
2 |
5 |
2 |
5 |
2 |
5 |
2 |
5 |
2 |
5 |
(35 rows)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
370