#DBMS_RESOURCE_MANAGER
DBMS_RESOURCE_MANAGER包提供了一组资源管理的命令,用于创建和删除资源使用组、资源映射及相关操作,目前仅支持CPU资源管理。
调用DBMS_RESOURCE_MANAGER高级包下的所有子程序时,都需要以SYS用户连接数据库,否则报错。
# CREATE_CONSUMER_GROUP
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group VARCHAR(64),
COMMENT VARCHAR(2000));
该程序用于创建一个资源使用组。
系统默认创建资源使用组 SYS_GROUP 和 DEFAULT_CONSUMER_GROUP,不支持创建同名资源使用组,其中SYS_GROUP包含sys用户及系统进程,DEFAULT_CONSUMER_GROUP为默认资源使用组,用户未创建映射关系或映射关系已删除时,将自动映射到DEFAULT_CONSUMER_GROUP组中。
YashanDB最多支持创建126个资源个资源使用组,其中不包括SYS_GROUP 和 DEFAULT_CONSUMER_GROUP。
参数 | 用途 |
---|---|
consumer_group | 资源使用组 |
comment | 注释 |
示例
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP('TESTUSER28','create TESTUSER28');
END;
/
# DELETE_CONSUMER_GROUP
DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP(
consumer_group VARCHAR(64));
该程序用于删除一个资源使用组。
参数 | 用途 |
---|---|
consumer_group | 资源使用组 |
示例
BEGIN
DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP('TESTUSER28');
END;
/
# SET_CONSUMER_GROUP_MAPPING
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
user VARCHAR(64),
user_name VARCHAR(64),
consumer_group VARCHAR(2000));
该程序用于把用户映射到资源使用组。
参数 | 用途 |
---|---|
user | 映射属性,仅支持USER |
user_name | 要映射的用户名 |
consumer_group | 用户名对应映射的资源使用组 |
注意事项:
- 映射属性仅支持为USER。
- 映射的用户必须为已存在用户,否则返回错误。
示例
BEGIN
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('USER','USER4','TESTUSER28');
END;
/
# DELETE_CONSUMER_GROUP_MAPPING
DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP_MAPPING(
user VARCHAR(64),
user_name VARCHAR(64));
该程序用于把删除用户到资源使用组的映射。
参数 | 用途 |
---|---|
user | 映射属性,仅支持USER |
user_name | 要映射的用户名 |
注意事项:
- 映射属性仅支持为USER。
- 不支持删除SYS用户的映射。
示例
BEGIN
DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP_MAPPING('USER','USER4');
END;
/
# CREATE_PLAN_DIRECTIVE
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan VARCHAR(64),
consumer_group VARCHAR(64),
cpu_share INTEGER,
cpu_limit INTEGER);
该程序用于创建资源计划指令。
参数 | 用途 |
---|---|
plan | 资源指令计划 |
consumer_group | 资源使用组 |
cpu_share | CPU 共享模式比重,须为[0,99]中的整数,0表示不限制 |
cpu_limit | CPU 独占模式比重,须为[0,99]中的整数,0表示不限制 |
其中:
- cpu_share和cpu_limit参数不能同时为0。
- SYS_GROUP资源使用组的cpu_limit参数值须大于等于40或等于0,否则返回错误。
- 最大CPU使用率计算公式为
cpu_limit*cpu个数
,例如某用户映射的资源使用组中的cpu_limit为10,且CPU个数为2,则该用户最大CPU使用率为20%。 - 为了确保SYS_GROUP资源使用组有足够的资源可以运行,当该使用组的共享资源(cpu_share)较少时,系统会在用户输入时做动态调整,当
SYS_GROUP的cpu_share / (SYS_GROUP的cpu_share + 所有 USER_GROUP的cpu_share)< 40%
时, 就会将SYS_GROUP的cpu_share动态调整为所有 USER_GROUP 的cpu_share。
示例
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE('TESTEST','TESTUSER28',0,64);
END;
/
# UPDATE_PLAN_DIRECTIVE
DBMS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
plan VARCHAR(64),
consumer_group VARCHAR(64),
cpu_share INTEGER,
cpu_limit INTEGER);
该程序用于更新资源计划指令。
参数 | 用途 |
---|---|
plan | 资源指令计划 |
consumer_group | 资源使用组 |
cpu_share | CPU 共享模式比重,须为[0,99]中的整数,0表示不限制 |
cpu_limit | CPU 独占模式比重,须为[0,99]中的整数,0表示不限制 |
其中:
- cpu_share和cpu_limit参数不能同时为0。
- SYS_GROUP资源使用组的cpu_limit参数值须大于等于40或等于0,否则返回错误。
示例
BEGIN
DBMS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE('TESTEST','TESTUSER28',0,10);
END;
/
# DELETE_PLAN_DIRECTIVE
DBMS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE(
plan VARCHAR(64),
consumer_group VARCHAR(64));
该程序用于删除资源计划指令。
参数 | 用途 |
---|---|
plan | 资源指令计划 |
consumer_group | 资源使用组 |
示例
BEGIN
DBMS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE('TESTEST','TESTUSER28');
END;
/