返回首页

gbase数据、南大通用产品文档:GBase8s使用 SQL 管理 API 执行远程管理

更新日期:2024年09月11日

您可以使用 SQL 管理 API 来利用 SQL 语句执行远程管理任务。
SQL 管理 API 函数采用一个或多个自变量来定义任务。许多任务也可使用命令行实用程
序来完成。使用 SQL 管理 API 函数的优点是可从其他数据库服务器远程运行这些函数。
而运行命令行实用程序命令时,必须直接连接到数据库服务器。
使用 SQL 管理 API 可执行以下类型的管理任务:

控制数据压缩

更新配置参数

检查数据、分区和扩展数据块一致性,控制 B 型树扫描程序,以及强制执行检查


设置和管理 Enterprise Replication

设置和管理高可用性集群

控制日志记录和逻辑日志

控制共享内存和添加缓冲池

控制镜像过程

控制决策支持查询

更改服务器方式

添加、删除和配置存储空间

控制 SQL 语句高速缓存

控制和配置 SQL 跟踪

动态启动和停止侦听控制线程

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 553 -

执行其他任务,例如移动 sysadmin 数据库、终止会话或添加虚拟处理器
有关 SQL 管理 API 的更多信息,请参阅《 GBase 8s 管理员参考》。
SQL 管理 API 的 admin() 和 task() 函数
SQL 管理 API 中包含两个在 sysadmin 数据库中定义的函数:admin() 和 task()。
这两个函数执行相同任务,但是返回不同格式的结果。task() 函数返回描述命令结果的字符
串。admin() 函数返回整数。
缺省情况下,
只有 gbasedbt 用户 可连接到 sysadmin 数据库。
如果 root 用户或 DBSA 组
的成员被授予连接到 sysadmin 数据库的特权,那么该 root 用户或 DBSA 组的成员还可
以运行 SQL 管理 API 的 task() 和 admin() 函数。
可以使用 EXECUTE FUNCTION 语句执行 admin() 和 task() 函数。 例如,等同于 oncheck
-ce 命令的以下 SQL 语句可指示数据库服务器检查扩展数据块:
EXECUTE FUNCTION admin("check extents");
可在调度程序任务操作中使用 SQL 管理 API 函数。例如,可以通过在任务操作中使用以
下语句来定义用于创建数据库空间的任务:
EXECUTE FUNCTION admin("create dbspace","dbspace2","/work/dbspace2","20
MB");
有关使用 admin() 和 task() 函数以及示例的信息,请参阅《GBase 8s 管理员参考》。
查看 SQL 管理 API 历史记录
可以查看 sysadmin 数据库中 command_history 表内前 30 天运行的所有 SQL 管理 API
函数的历史记录。
必须以 gbasedbt 用户或其他授权用户身份连接 sysadmin 数据库。
command_history 表显示了管理任务是通过 admin() 还是 task() 函数执行的,并显示了有关
运行命令的用户、运行命令的时间、命令以及数据库服务器完成运行命令时返回的消息的
信息。
要显示命令历史记录,请执行以下操作:
使用 SELECT 语句从 command_history 表返回数据。
以下示例显示过去 30 天的所有命令历史记录:
SELECT * FROM command_history;
下表显示了采样命令和采样 command_history 表中的相关联结果。
有关 command_history 表
中所有信息的描述,请参阅《GBase 8s 管理员参考》。
表 1. command_history 表中某些信息的示例

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 554 -
命令
样本返回消息
设置 SQL 跟踪为打开 SQL 跟踪打开,并带有 1000 个大小为 2024 字节的缓冲区。
创建数据库空间
空间“space12”已添加。
检查点
检查点已完成。
添加日志
已将 3 个逻辑日志添加到数据库空间日志数据库。
控制 command_history 表的大小
可以缩短 command_history 表的保留期或从该表中除去行,从而防止该表变得过大。
必须以 gbasedbt 用户或其他授权用户身份连接 sysadmin 数据库。
缺省情况下,command_history 表中的行在 30 天之后会自动除去。保留期
由 ph_threshold 表中的 COMMAND HISTORY RETENTION 行进行控制。
要缩短保留期,请执行以下操作:
使用 UPDATE 语句修改 ph_threshold 表中 COMMAND HISTORY RETENTION 行的值。

以下示例将保留期设置为 25 天:
UPDATE ph_threshold
SET value = "25"
WHERE name = "COMMAND HISTORY RETENTION";
可以使用 DELETE 或 TRUNCATE TABLE 之类的 SQL 命令手动从此表中除去数据。

可在 ph_task 表中创建任务以从 command_history 表清除数据。
以下示例显示了监视 command_history 表中的数据量并当表太旧时清除数据的任务。
INSERT INTO ph_task
( tk_name, tk_type, tk_group, tk_description, tk_execute,
tk_start_time, tk_stop_time, tk_frequency )
VALUES
("mon_command_history",
"TASK",
"TABLES",
"Monitor how much data is kept in the command history table",
"delete from command_history where cmd_exec_time < (
select current - value::INTERVAL DAY to SECOND
from ph_threshold
where name = 'COMMAND HISTORY RETENTION' ) ",
DATETIME(02:00:00) HOUR TO SECOND,

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 555 -
NULL,
INTERVAL ( 1 ) DAY TO DAY);

功能描述
利用完成训练的模型进行推测任务。
注意事项
调用的模型名称在系统表gs_model_warehouse 中可查看到。
语法格式
PREDICT BY model_name [ (FEATURES attribute [, attribute] +]) ]
参数说明

model_name
用于推测任务的模型名称。
取值范围:字符串,需要符合标识符的命名规则。

attribute
推测任务的输入特征列名。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
1199
取值范围:字符串,需要符合标识符的命名规则。
示例
SELECT id, PREDICT BY price_model (FEATURES size,lot), price
FROM houses;
相关命令
CREATE MODEL,DROP MODEL

语法
UNIX_TIMESTAMP(),UNIX_TIMESTAMP(date)
函数说明
如果调用时没有参数,
以无符号的整数形式返回一个Unix 时间戳
(从
“1970-01-01
00:00:00” GMT 开始的秒数)。
如果以一个参数date 调用UNIX_TIMESTAMP(),它将返回该参数值从
“1970-01-01 00:00:00” GMT 开始经过的秒数值。
date 可以是一个DATE 字符串,一个DATETIME 字符串,一个TIMESTAMP,
以一个YYMMDD 或YYYYMMDD 显示的本地时间。
示例
示例1:UNIX_TIMESTAMP()没有参数,以无符号的整数形式返回一个Unix 时
间戳。
gbase> SELECT UNIX_TIMESTAMP() FROM dual;
+------------------+
| UNIX_TIMESTAMP() |
+------------------+
|
1585740352 |
+------------------+
1 row in set
示例2:UNIX_TIMESTAMP(date),返回从“1970-01-01 00:00:00” GMT 开始,
到“2020-04-10 22:23:00”所经过的秒数值。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
828
gbase> SELECT UNIX_TIMESTAMP('2020-04-10 22:23:00') FROM dual;
+---------------------------------------+
| UNIX_TIMESTAMP('2020-04-10 22:23:00') |
+---------------------------------------+
|
1586528580 |
+---------------------------------------+
1 row in set
当UNIX_TIMESTAMP 被用在TIMESTAMP 列时,函数直接返回内部时间戳值,
而不进行任何隐含的
“string-to-Unix-timestamp”
转化。
如果向UNIX_TIMESTAMP()
传递一个溢出日期,它会返回0,但请注意只执行基本范围检查(年份从1970 到
2037,月份从01 到12,日期从01 到31)。
注意

如果用户希望减去UNIX_TIMESTAMP()列,需要将结果强制转换为一个
有符号整数。