返回首页

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

更新日期:2024年09月11日

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

控制数据压缩

更新配置参数

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


设置和管理 Enterprise Replication

设置和管理高可用性集群

控制日志记录和逻辑日志

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

控制镜像过程

控制决策支持查询

更改服务器方式

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

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

控制 SQL 语句高速缓存

控制和配置 SQL 跟踪

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

执行其他任务,例如移动 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;

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 544 -
下表显示了采样命令和采样 command_history 表中的相关联结果。有
关 command_history 表中所有信息的描述,请参阅《GBase 8s 管理员参考》。
表 1. command_history 表中某些信息的示例
命令
样本返回消息
设置 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 < (

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 545 -
select current - value::INTERVAL DAY to SECOND
from ph_threshold
where name = 'COMMAND HISTORY RETENTION' ) ",
DATETIME(02:00:00) HOUR TO SECOND,
NULL,
INTERVAL ( 1 ) DAY TO DAY);

操作场景
管理员规划好不同的数据库用户的职责,并给其赋予相应的操作权限,以保证数据
库的安全操作。
前提条件
使用GRANT 或REVOKE,
用户必须拥有GRANT OPTION 权限,
可以授予或收回
用户权限。

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
420
操作步骤
系统管理员通过GRANT 和REVOKE 语句为用户授予和回收权限。语法格式请参
见GRANT 和REVOKE 语句使用。
示例
示例1:使用超级dbauser root,创建一个user_general 用户,该用户具备SELECT
操作的权限。
$ gccli -uroot -p
Enter password:
GBase client 9.5.3.17.117651. Copyright (c) 2004-2020, GBase.
All Rights
Reserved.
gbase> CREATE USER user_general;
Query OK, 0 rows affected
gbase> SET PASSWORD FOR user_general = PASSWORD('H%897_@m');
Query OK, 0 rows affected
对user_general 用户只赋予SELECT 权限。*.*代表所有数据库对象,例如:
表,视图,存储过程等。
gbase> GRANT SELECT ON *.* TO user_general;
Query OK, 0 rows affected
gbase> \q
Bye
使用user_general 登录数据库,验证其具备select 权限。存在test 数据库和一
张t1 表,这只是为演示示例提前创建完毕的。
$ gccli -uuser_general -p
Enter password:
GBase client 9.5.3.17.117651. Copyright (c) 2004-2020, GBase.
All Rights
Reserved.
gbase> USE test;
Query OK, 0 rows affected
gbase> UPDATE t1 SET a = 11 WHERE a = 10;
ERROR 1142 (42000): UPDATE command denied to user
'user_general'@'localhost' for table 't1'
gbase> DELETE FROM t1;
ERROR 1142 (42000): DELETE command denied to user
'user_general'@'localhost' for table 't1'

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
421
gbase> SELECT * FROM t1;
+------+
| a
|
+------+
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
+------+
10 rows in set
示例2:使用超级dbauser root,创建一个user_admin 用户,该用户具备超级用户的
权限,即全部的权限。
$ gccli -uroot -p
Enter password:
GBase client 9.5.3.17.117651. Copyright (c) 2004-2020, GBase.
All Rights
Reserved.
gbase> CREATE USER user_admin;
Query OK, 0 rows affected
gbase> SET PASSWORD FOR user_admin = PASSWORD('H%897_@m');
Query OK, 0 rows affected
对于user_admin 用户赋予全部权限。*.*代表所有数据库的数据库对象,例如:表,
视图,存储过程。
gbase> GRANT ALL ON *.* TO user_admin;
Query OK, 0 rows affected
使用user_admin 用户登录数据库,验证其具备全部权限,可以进行SELECT、UPD
ATE、DELETE、CREATE USER 和DROP USER 等操作。为演示示例提前创建te
st 数据库和t1 表。
$ gccli -uuser_admin -p
Enter password:
GBase client 9.5.3.17.117651. Copyright (c) 2004-2020, GBase.
All Rights

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
422
Reserved.
gbase> USE test;
Query OK, 0 rows affected
gbase> SELECT * FROM t1;
+------+
| a
|
+------+
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
+------+
10 rows in set
gbase> UPDATE t1 SET a = 11 WHERE a = 10;
Query OK, 1 row affected
gbase> SELECT * FROM t1;
+------+
| a
|
+------+
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
11 |
+------+
10 rows in set
gbase> DELETE FROM t1 WHERE a >= 5;
Query OK, 6 rows affected

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
423
gbase> SELECT * FROM t1;
+------+
| a
|
+------+
|
1 |
|
2 |
|
3 |
|
4 |
+------+
4 rows in set

GS_SESSION_TIME 视图用于统计会话线程的运行时间信息,
及各执行阶段所消耗时间。
名称
类型
描述
sessid
text
线程标识+线程启动时间。
stat_id
integer
统计编号。
stat_name
text
会话类型名称。
value
bigint
会话值。