SQL 管理 API 函数
SQL 管理 API 是内置的 SQL 管理 API 函数,可通过 SQL 的 EXECUTE Ffunction 语句完成管理性任务,该语句可以模仿 Dynamic Server 的各种管理命令行实用工具。
ADMIN 和 TASK 内置函数只在每个 Dynamic Server 实例的 sysadmin 数据库中做了定义。这些函数只能由用户 Informix 调用。
使用相同参数列表调用 admin( ) 和 task( ) 函数的结果是相同的;只是返回的值不同:
task() UDR 返回描述返回状态的字符串
admin() UDR 返回一个整数返回状态,表示到 command_history 表的链接
- 如果该值大于 0,则命令成功执行,并将一个新行插入到 command_history 表
- 如果该值为 0,表示命令成功,但是 Dynamic Server 不会把新行插入到 command_history 表
- 如果该值小于 0,表示命令失败,但是仍然将新行插入到 command_history 表中
表 1. sysadmin 数据库中的 command_history 表
| 列 |
数据类型 |
说明 |
| cmd_number |
serial |
每行的惟一 ID |
| cmd_exec_time |
datetime year-to-second |
发出命令的时间 |
| cmd_user |
varchar |
执行命令的用户 |
| cmd_hostname |
varchar |
执行命令的主机的名称 |
| cmd_executed |
varchar |
执行的命令 |
| cmd_ret_status |
integer |
返回代码 |
| cmd_ret_msg |
lvarchar |
返回消息 |
当向 ADMIN 或 TASK 函数指定 size 参数时,可以使用下面的单位说明:
表 2. ADMIN 或 TASK 函数 size 参数的单位说明
| 符号 |
对应的单位 |
| B |
Bytes(= 2 的 0 次方) |
| KB |
Kilobytes(= 2 的 10 次方) |
| MB |
Megabytes(= 2 的 20 次方) |
| GB |
Gigabytes(= 2 的 30 次方) |
| TB |
Terabytes(= 2 的 40 次方) |
| PB |
Petabytes(= 2 的 50 次方) |
使用 ADMIN 或 TASK 函数的示例
命令 oncheck -ce 等效于以下 SQL 语句:
EXECUTE FUNCTION task('check extents'); |
函数 admin() 也可以实现相同的结果:
EXECUTE FUNCTION admin('check extents'); |
命令 onspaces -c -d dbspace2 -p /informix/chunks/dbs2.00 -o 0 -s 20000 等价于以下 SQL 语句:
EXECUTE FUNCTION task('create dbspace','dbspace2','/informix/chunks/dbs2.00','20MB');
(expression) Space 'dbspace2' added. |
(注:当使用函数 task() 时,返回值为描述状态的字符串)。
也可以使用函数 admin() 实现相同结果:
EXECUTE FUNCTION admin('create dbspace','dbspace2','/informix/chunks/dbs2.00','20MB');
(expression) 114 |
(注:返回值为 114,可在 command_history 表中找到)。
清单 10. 在 command_history 表中查找返回值
SELECT * FROM command_history WHERE cmd_number = 114
cmd_number 114
cmd_exec_time 2007-05-10 20:13:22
cmd_user informix
cmd_hostname gavea.usfl.ibm.com
cmd_executed create dbspace
cmd_ret_status 0
cmd_ret_msg Space 'dbspace2' added.
1 row(s) retrieved. |