#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;
/