返回首页

gbase数据、南大通用产品文档:GBase8aDAYOFYEAR(date)

更新日期:2024年09月11日

函数说明
返回date 是一年中的第几天,范围为1 到366。
示例
示例1:返回“2020-08-30”是2020 年的第几天。
gbase> SELECT DAYOFYEAR('2020-08-30') FROM dual;
+-------------------------+
| DAYOFYEAR('2020-08-30') |
+-------------------------+
|
243 |
+-------------------------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
793
1 row in set
示例2:返回“2020-12-31”是2020 年的第几天。
gbase> SELECT DAYOFYEAR('2020-12-31') FROM dual;
+-------------------------+
| DAYOFYEAR('2020-12-31') |
+-------------------------+
|
366 |
+-------------------------+
1 row in set

GROUP BY CUBE 函数
语法
GROUP BY CUBE( (…),(…),…)
功能
对CUBE 后面括号里的n 个字段或表达式组合做GROUP BY 操作,最后将结果
合并在一起,组合方式为n 个字段或表达式的全部子集。
详细解释
GROUP BY CUBE(A,B,C) (A、B、C 代表语法中的“(…)”)

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
885
首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、
C),
(B),
(C),
然后对全表进行GROUP BY 操作,
最后将所有结果合并在一起
(相
当于UNION ALL 操作),如果n 个字段或表达式中的一个或多个在某一分组中
不出现在GROUP BY 后面,用NULL 代替不出现的字段或表达式。
示例
示例中所用的表及数据:
DROP TABLE IF EXISTS t3;
CREATE TABLE t3 (color_type varchar(20),color_count int, in_date date);
INSERT INTO t3 (color_type,in_date,color_count)
VALUES('black','2010-09-11',18),
('black','2010-10-05',18),('black','2010-10-13',31),
('blue','2010-09-21',23),('blue','2010-09-30',15),
('blue','2010-10-11',62),('red','2010-09-12',41),
('red','2010-10-01',12),('red','2010-10-05',11);
示例1:GROUP BY CUBE(color_type,f_YearMonth)
gbase> SELECT color_type,in_date,color_count FROM t3 ORDER BY
color_type,in_date;
+------------+------------+-------------+
| color_type | in_date
| color_count |
+------------+------------+-------------+
| black
| 2010-09-11 |
18 |
| black
| 2010-10-05 |
18 |
| black
| 2010-10-13 |
31 |
| blue
| 2010-09-21 |
23 |
| blue
| 2010-09-30 |
15 |
| blue
| 2010-10-11 |
62 |
| red
| 2010-09-12 |
41 |
| red
| 2010-10-01 |
12 |
| red
| 2010-10-05 |
11 |
+------------+------------+-------------+
9 rows in set
gbase> SELECT NVL(color_type,'') as color_type_show,NVL(DECODE(co
lor_type,NULL,f_YearMonth || '合计',NVL(f_YearMonth,color_type || ' 小
计')),'总计') AS f_YearMonth_show,SUM(color_count) FROM (SELECT c
olor_type,DATE_FORMAT(in_date, '%Y-%m') as f_YearMonth,color_coun
t FROM t3) t GROUP BY CUBE(color_type,f_YearMonth) ORDER BY
color_type,f_YearMonth;
+-----------------+------------------+------------------+
| color_type_show | f_YearMonth_show | SUM(color_count) |

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
886
+-----------------+------------------+------------------+
| black
| 2010-09
|
18 |
| black
| 2010-10
|
49 |
| black
| black 小计
|
67 |
| blue
| 2010-09
|
38 |
| blue
| 2010-10
|
62 |
| blue
| blue 小计
|
100 |
| red
| 2010-09
|
41 |
| red
| 2010-10
|
23 |
| red
| red 小计
|
64 |
|
| 2010-09 合计
|
97 |
|
| 2010-10 合计
|
134 |
|
| 总计
|
231 |
+-----------------+------------------+------------------+
12 rows in set

ON-Bar 在 sysutils 数据库中为备份与恢复操作保留一份历史记录,
并在紧急引导文件中保
留备份历史记录的另一个副本。
当只有部分数据丢失时,
ON-Bar 将在热恢复中使用 sysutils
数据库。由于 sysutils 数据库无法访问,因此 ON-Bar 将在冷恢复中使用紧急引导文件。
您可以使用 onsmsync 来重新生成紧急引导文件和使旧备份到期。
根据您提供的命令选项,
onsmsync 实用程序可从 sysutils 数据库以及紧急引导文件中除去
以下各项:

存储管理器已终止的备份

基于备份存在时间的旧备份

基于已备份次数的旧备份
在数据库服务器处于联机状态或停顿方式下使用 onsmsync,
以同步 sysutils 数据库与紧急
引导文件。
要同步 sysutils 数据库:
1. 使数据库服务器处于联机状态或停顿方式。
2. 不带任何选项运行 onsmsync 实用程序。
onsmsync 实用程序按照如下方式同步 sysutils 数据库、存储管理器和紧急引导文件:

将备份历史记录添加到 sysutils 中,紧急引导文件中有该备份历史记录,但已从
sysutils 数据库中丢失。

从 sysutils 数据库中除去恢复的记录、整个系统恢复的记录、伪备份记录、成功和
失败的备份的记录。

使不再需要的旧逻辑日志到期。

从 sysutils 数据库再次生成紧急引导文件。

选择到期策略
可从以下三个到期策略中选择:
保留时间日期 (-t)
在特定日期和时间之前删除所有备份。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 95 -
保留时间的时间间隔 (-i)
删除早于指定时段的所有备份。
保留时间生成 (-g)
为每个备份保留一定数目的版本。
ON-Bar 始终为每个存储空间保留最新的 0 级备份。
它让所有早于指定时间的 0 级备份到
期,除非从所保留的最早 1 级备份恢复时需要这些 0 级备份。
ON-Bar 让所有早于指定时间的 1 级备份到期,
除非从所保留的最早 2 级备份恢复时需要
这些 1 级备份。
ON-Bar 将保留从指定的保留时间之前开始以及指定的保留时间之后结束的整个系统备份。

onsmsync 实用程序
使用 onsmsync 实用程序可通过存储管理器目录来同步 sysutils 数据库和紧急引导文件。
如果您的存储管理器是 GBase 8s Primary Storage Manager,那么还可以使用 onsmsync 实用
程序的导出和导入选项来将 GBase 8s Primary Storage Manager 备份对象导出至外部设备,
并将外部设备中的对象导入到 GBase 8s Primary Storage Manager 管理的设备。 不能对其他
存储管理器使用导出和导入选项。

下表列出了所有 onsmsync 命令元素,但用于导入和导出备份生成的元素除外。用于导入和
导出的命令元素在表 2 中列出。
表 1. onsmsync 命令的元素
元素
用途
关键注意事项
-b
将紧急引导文件
(ixbar.servernum)
和sysutils 数据库
通过对方重新生成。
如果 ixbar 文件为空或不存在,那
么 onsmsync -b 会重新创建 ixbar 文件并
从sysutils 表填充该文件。
如果 ixbar 文件不为空且包含对象数据,那
么 onsmsync -b 会更新 sysutils 数据库
和 ixbar 文件,以使其同步。
如果 ixbar 文件具有条目,并

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 96 -
元素
用途
关键注意事项
且 sysutils 数据库已重新构建,但由于不包
含数据而为空,那么 onsmsync -b 会
从 ixbar 文件重新创建 sysutils 数据。
请不要将 -b 元素与其他 onsmsync 选项一
起使用。
-b 元素不与存储管理器同步。
dbspace
指定要使其到期的一
个或多个存储空间
如果输入多个存储空间的名称,请使用空格来分
隔这些名称。
-f filename 指定包含要到期存储
空间列表的文件的路
径名
使用该选项可避免输入一长串存储空间。文件名
可以是任何有效的 UNIX™ 文件名。
-g generatio
n
指定每个 0 级备份要
保留的版本数
保留最近生成的备份并使此前的所有备份都到
期。
-i interval 指定保留备份的时间
间隔。
实用程序:

保留在此时间间隔之后创建的备份。

使在此时间间隔之前创建的备份到期,并
在到期的对象也被除去时除去这些备份。
如果从该间隔后的其他备份恢复时需要在此间隔
之前的备份,那么该间隔之前的备份不会到期。
使用 ANSI 或 GLS 格式来表示 interval:
YYYY-MM 或 DD HH:MM:SS
-O
覆盖内部错误检查,

强制实施到期策略
如果与 -t、 -g 或 -i 选项一起使用,即
使从发生在此到期日期之后的备份进行恢复时需
要所有级别的备份中的一部分,也要使所有级别
的备份到期。-O 选项不影响逻辑日志到期。请
参阅使所有备份到期。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 97 -
元素
用途
关键注意事项
-s
跳过对到期的备份的
同步
如果提供了 -s 选项,那么对象到期取决于其
他参数。
-t timestamp 在特定日期和时间之
前让所有备份到期
保留在指定时间戳记后完成的备份。如果从该时
间戳记后发生的其他备份恢复时需要在该时间戳
记之前发生的备份,那么后者不会到期。
使用 ANSI 或 GLS_DATETIME 格式来表示时间戳
记。
-cf value
指定是否备份关键文

在与 -g、
-i 或 -t 一起使
用时,从GBase 8s
Primary Storage
Manager删除关键文件
备份
有效值为:

Yes。备份关键文件。该值为 0 级、1 级
或 2 级备份的缺省值。

No。不备份关键文件。该值为备份逻辑日
志文件的缺省值。

Only。仅备份关键文件。
表 2. onsmsync 导出和导入命令的元素
元素
用途
关键注意事项
-E
将单一备份生成导出
至 GBase
8s
Primary
Storage Manager 外
部池
仅当设置 GBase 8s Primary Storage
Manager 外部池时使用此选项。
如果导出备份生成,那么必须指定前缀,以标识
导出的备份。onsmsync 实用程序会在外部池中
创建一个包含该前缀的子目录,并将导出的对象
放入该目录。
-g generation 指定要导出的备份生
成。
缺省值是当前备份。
-I
从外部 GBase 8s
Primary Storage
Manager 池导入单一
备份生成。
如果从外部池导入备份生成,那么必须指定导出
的备份的前缀。该前缀用于标识要导入的备份生
成。
-l log_ID
导出包含逻辑日志标
识的备份生成。


GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 98 -
元素
用途
关键注意事项
-p prefix
指定要分配给将导出
的备份生成的前缀,

用于标识要导入的备
份的前缀。
当 onsmsync 实用程序导出备份生成时,它会
使用该前缀作为放置该备份的子目录的名称。
-t timestamp 指定包含特定日期和
时间的备份生成
(仅用
于导出)。
使用 ANSI 或 GLS_DATETIME 格式。
当您推出应用程序的新版本时,可能希望包含日
期和时间。
用途
如果不指定任何选项,那么 onsmsync 命令会使用存储管理器目录来同步 sysutils 数据库和
紧急引导文件。
onsmsync 实用程序会将 sysutils 数据库和紧急引导文件中的备份与存储管理
器目录中的备份进行比较,
然后从 sysutils 数据库和紧急引导文件中除去存储管理器目录内
不存在的所有备份。
提示: 要控制 sysutils 数据库是否保留已到期的备份与恢复的历史记录,请 使用
BAR_HISTORY 配置参数。有关信息,请参阅BAR_HISTORY 配置参数。
除了存储空间名或文件名必须放在最后之外,命令的顺序无关紧要。
命令的顺序无关紧要,但以下情况除外:

存储空间名称或文件名必须放在最后。

导出或导入时,-E 或 -I 选项必须放在最前。例如,指定 onsmsync -E -g 2,而不
是 onsmsync -g 2 -E。
在不同计算机上导入和导出备份生成的先决条件如下:

在源计算机和目标计算机上必须具有相同版本的 GBase 8s,
并且这些计算机必须使
用相同的操作系统。

在源计算机和目标计算机上必须设置 GBase 8s Primary Storage Manager 并创建一
个外部池。
当您使用 -E 或 -I 选项导出或导入备份生成时,
必须指定用于标识放置备份生成的子目录的
前缀。
如果使用 -E 或 -I 选项导出或导入备份生成,那么不能使用与导出或导入操作无关的任
何 onsmsync 命令选项。例如,不能同时导出备份生成并重新生成紧急引导文件。
onsmsync -I 命令重命名当前 ixbar 文件,
并创建仅包含恢复导入的备份所必需信息的新文件
您可以将 -cf 选项与 -g、-i 或 -t 选项一起使用,以从存储管理器删除关键文件备份。
如果应用 -g 选项,并且 onsmsync 实用程序的对象列表仅包含逻辑日志而不包含任何空间
备份,那么这些日志备份不会到期。在此情况下,请使用 -t 或 -i 选项来使逻辑日志备份到
期。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 99 -
示例
以下示例使 2012 年 11 月 30 日前开始的备份到期:
onsmsync -t "2012-11-30 00:00:00""
以下命令将最后一个备份生成导出到外部池中名为 gen 的目录:
onsmsync -E -p gen -g 1
以下命令将按最新程度排名第 4 位的备份生成导出到外部池中名为 gen 的目录:
onsmsync -E -p gen -g 4
以下命令将当前备份生成导出到外部池中名为 gen 的目录:
onsmsync -E -p gen
以下命令将生成 2 中的所有备份对象导出到外部池中名为 gen 的目录:
onsmsync -E -p gen -g 2
以下命令将时间戳记为 2012-12-31 12:00:00 的所有备份对象导出到外部池中名为 gen 的目
录:
onsmsync -E -p gen -t “2012-12-31 12:00:00“
以下命令导入以前缀 gen 标识的子目录中的所有对象:
onsmsync -I -p gen
以下命令导入使用前缀 gen 和时间戳记 2012-12-31 12:00:00 导出的所有备份对象。由于前
缀用于标识备份生成,因此不用指定时间戳记。
onsmsync -I -p gen
以下命令将除了最后两次生成的关键文件备份之外的所有内容删除:
onsmsync -g 2 -cf yes
使 Storage Manager 上的旧备份到期
Storage Manager 和某些第三方存储管理器不允许 onsmsync 实用程序从存储管理器删除
备份。
必须手动使存储管理器中的旧备份到期或将其删除。然后,不带任何参数运行 onsmsync。

要使 Storage Manager上的旧备份到期:
1. 要手动使 Storage Manager 中的旧备份到期,
请使用 ism_config -retention #days 命
令。
有关更多信息,请参阅《GBase 8s Storage Manager 管理员指南》。
2. 不带任何选项运行 onsmsync。
重新生成紧急引导文件
要只重新生成紧急引导文件,请使用 onsmsync -b 命令。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 100 -
onsmsync -b 命令将旧的紧急引导文件另存为 ixbar.server_number.system_time,
并将其重新
生成为 ixbar.server_number。
重新生成 sysutils 数据库
如果丢失 sysutils 数据库,请使用 UNIX™ 上的 $GBASEDBTDIR/etc 中的 bldutil 实用
程序,以重新创建带有空表的 sysutils 数据库。
接着使用 onsmsync 实用程序重新创建备份并在 sysutils 中恢复数据。
限制: 如果 sysutils 数据库和紧急引导文件都已丢失,那么不能使用 onsmsync 重新生成它
们。 一定要将紧急引导文件与其他操作系统文件一起备份。
删除坏备份
onsmsync 实用程序无法分辨哪些备份未能通过验证。如果最近的备份未能通过验证,但前
面的某一备份却是成功的,那么必须手动从存储管理器中删除失败的备份记录,然后不带
任何选项运行 onsmsync 以同步 ON-Bar。有关更多信息,请参阅 onbar -v 语法:验证备
份。
基于保留时间日期使备份到期
以下示例使 2006 年 11 月 24 日前开始的备份以及所有伪备份、失败的备份与恢复都到
期:
onsmsync -t "2006-11-24 00:00:00"
使生成的备份到期
以下示例保留最新的三组 0 级备份以及相关的增量备份,
同时使所有之前的备份和所有恢
复、伪备份和失败的备份到期:onsmsync -g 3
基于保留时间的时间间隔使备份到期
以下示例让三天以前的所有备份以及所有伪备份、失败的备份与恢复到期:
onsmsync -i "3 00:00:00"
以下示例使 18 个月前的所有备份到期(写作 1 年 + 6 个月):
onsmsync -i "1-6"
使用多个时间点恢复使备份到期
如果您执行多个时间点恢复,那么将存在多个备份的时间线。
下图显示了三条时间线及其备份。
图: 备份的多条时间线


GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 101 -


在此示例中,第二条时间线从对备份 1 的时间点恢复开始。第二条时间线包含备份 1、5、
6、7 和 8。第三条时间线(粗体显示)包含备份 1、5 和 9。第三条时间线被视为当前时
间线,因为它包含最新的备份。
在运行 onsmsync 实用程序以使旧备份到期时,
onsmsync 将从当前时间线中除去旧备份,

确保当前时间线可从保留的备份对象中恢复。
不在当前时间线中的所有其他备份也将过期,
但是 onsmsync 将不确保其他时间线可从保留的对象中恢复。
onsmsync 实用程序以以下顺序应用到期策略,以确保根据指定的到期策略使当前时间线中
的对象到期,并且确保当前时间线可恢复:

在所有备份对象的集合上应用到期策略。

不使属于当前时间线的备份对象到期。

在当前时间线上应用到期策略,以确保当前时间线可恢复。
同时,将到期策略应用于其他时间线中的备份。
例如,如果在上图的示例上执行 onsmsync -g 2 命令,那么当前时间线中的备份 1 将到期,
第一和第二个时间线中的备份 2、3、4、6 和 7 也将到期。当前时间线中的备份 1、5 和
9 将保留。其他时间线中的备份 8 将保留。
使所有备份到期
除非使用 -O 选项,
否则 onsmsync 实用程序将保留最新的 0 级备份。
如果使用 -O 和 -t 选
项,即使恢复还需要所指定时间前的所有备份,也会将那些备份全部除去。如果使
用 -O 和 -i 选项,
即使恢复还需要所指定时间间隔前的所有备份,
也会将那些备份全部除去。

例如:要使所有备份到期,请指定以下选项:
onsmsync -O -g 0
重要: 如果将 -O 选项与 -t、-i 或 -g 选项一起使用,您可能会意外删除某些关键备份,从而使
恢复无法进行。