您可以使用 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);