#配置CDB全局资源管理

本文将介绍容器数据库中的全局资源管理,如需使用PDB本地资源管理请查阅配置资源管理

# 环境准备

在使用CPU资源管理前,需要先确保服务器已开启CGroups。

  1. 以安装用户登录数据库安装服务器。

  2. 执行以下命令确认是否已开启CGroups。

    $ mount | grep -E "cgroup|cgroup2"
    # 或
    $ sudo mount | grep -E "cgroup|cgroup2"
    

    若该命令无回显信息,表示未开启CGroups。此时,需先为每台服务器开启CGroups才能执行后续操作。

# 启用资源管理

# 步骤1:(可选)配置资源上限基数值

请根据是否开启IOPS资源、内存资源以及相应的资源限额规划,按需修改对应的配置参数为合适值。

在单机主备部署中,下列参数均可在主、备根容器中独立配置,再根据资源计划可生成差异化的资源上限值。

配置参数 对应的资源 描述 默认值
MAX_BPS IOPS资源 指定容器数据库中PDB允许使用的每秒读写字节数的上限基数。开启CDB全局资源管理时,该值将用于计算目标PDB可用的每秒读写字节数上限,计算公式为MAX_BPS * UTILIZATION_LIMIT 默认为0,即不对相应资源进行限制
MAX_IOPS IOPS资源 指定容器数据库中PDB每秒IO操作次数的上限基数。开启CDB全局资源管理时,该值将用于计算目标PDB每秒IO操作次数的上限,计算公式为MAX_IOPS * UTILIZATION_LIMIT 默认为0,即不对相应资源进行限制
CDB_MAX_MEMORY_SIZE 内存资源 指定容器数据库中所有容器(根容器、所有PDB)可用物理内存总和的上限。开启CDB全局资源管理时,该值将用于计算目标PDB可用物理内存的上/下限,计算公式为CDB_MAX_MEMORY_SIZE * 对应百分比 默认为0,即可用服务器总内存的80%
  1. 以DBA用户连接并登录根容器。

    $ yasql c##sales/********@192.168.1.2:1688
    YashanDB SQL Enterprise Edition Release {version_number} x86_64
    
    Connected to:
    YashanDB Server Enterprise Edition Release {version_number} x86_64 - Linux
    
    SQL> 
    
  2. 查看当前配置。

    SHOW PARAMETER MAX_BPS
    
    NAME                                                             VALUE                                                  
    ---------------------------------------------------------------- ----------------------------------------------------------------
    MAX_BPS                                                          0
    
    SHOW PARAMETER MAX_IOPS
    
    NAME                                                             VALUE                                                  
    ---------------------------------------------------------------- ----------------------------------------------------------------
    MAX_IOPS                                                         0
    
    SHOW PARAMETER CDB_MAX_MEMORY_SIZE
    
    NAME                                                             VALUE                                                  
    ---------------------------------------------------------------- ----------------------------------------------------------------
    CDB_MAX_MEMORY_SIZE                                              0
    
  3. 按需修改对应参数的值。

    ALTER SYSTEM SET MAX_IOPS=2147483647;
    

    Note:

    在单机主备部署中,还可按需在备根容器上重复执行上述操作配置差异化的参数值。

# 步骤2:创建CDB资源计划指令

  1. 以sys用户登录根容器。

    # 本地登录时可以使用操作系统认证方式登录
    $ yasql / as sysdba
    
    # 使用密码认证方式登录
    $ yasql sys/********@192.168.1.2:1688
    
    YashanDB SQL Enterprise Edition Release {version_number} x86_64
    
    Connected to:
    YashanDB Server Enterprise Edition Release {version_number} x86_64 - Linux
    
    SQL> 
    
  2. 调用DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN创建CDB资源计划。

    EXEC DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(
        'RES_CDB_PLAN',
        'RESOURCE PLAN FOR CDB MANAGEMENT');
    

# 步骤3:为PDB关联资源计划指令

# 方式1:配置专属的CDB资源计划指令

调用DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE为指定PDB创建专属的CDB资源计划指令。

EXEC DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
    PLAN => 'RES_CDB_PLAN',
    PLUGGABLE_DATABASE => 'PDB1',
    COMMENT => 'RESOURCE PLAN DIRECTIVE FOR PLUGGABLE DATABASE PDB1',
    SHARES => 25,
    UTILIZATION_LIMIT => 50,
    PARALLEL_SERVER_LIMIT => 100,
    MEMORY_LIMIT => 50,
    MEMORY_MIN => 20);

# 方式2:为PDB关联CDB资源模板指令

  1. 调用DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE创建CDB资源模板指令。

    EXEC DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
        PLAN => 'RES_CDB_PLAN',
        PROFILE => 'RES_CDB_PROFILE',
        COMMENT => 'RESOURCE PROFILE DIRECTIVE',
        SHARES => 10,
        UTILIZATION_LIMIT => 30,
        PARALLEL_SERVER_LIMIT => 50,
        MEMORY_LIMIT => 25,
        MEMORY_MIN => 10);
    
  2. 调用DBMS_RESOURCE_MANAGER.SET_PDB_PROFILE设置PDB与CDB资源模板指令的映射关系。

    EXEC DBMS_RESOURCE_MANAGER.SET_PDB_PROFILE(
        PLUGGABLE_DATABASE => 'PDB1','PDB2',
        PROFILE => 'RES_CDB_PROFILE'); 
    

# 步骤4:激活并启用资源管理

  1. 以安装用户登录数据库安装服务器。

  2. 通过yasboot工具修改RESOURCE_MANAGER_PLAN参数,以激活资源计划RES_CDB_PLAN。

    # -r参数表示修改失败后回滚集群参数
    $ yasboot cluster config set -c yashandb -k RESOURCE_MANAGER_PLAN -v RES_CDB_PLAN -d -r
    
    # 可通过如下命令查看RESOURCE_MANAGER_PLAN参数是否已生效于所有节点
    $ yasboot cluster config show -c yashandb -q RESOURCE_MANAGER_PLAN
    

    Note:

    RESOURCE_MANAGER_PLAN参数只允许使用yasboot cluster config set命令修改。

  3. 以DBA用户连接并登录根容器。

    $ yasql c##sales/********@192.168.1.2:1688
    YashanDB SQL Enterprise Edition Release {version_number} x86_64
    
    Connected to:
    YashanDB Server Enterprise Edition Release {version_number} x86_64 - Linux
    
    SQL> 
    
  4. 检查RESOURCE_MANAGER_PLAN参数配置是否生效。

    show parameter RESOURCE_MANAGER_PLAN;
    
    NAME                                                             VALUE
    ---------------------------------------------------------------- ----------------------------------------------------------------
    RESOURCE_MANAGER_PLAN                                            RES_CDB_PLAN                                                      ALL
    

通过上述示例成功开启CDB全局资源管理功能后,还可以按需在直连PDB进行本地资源管理配置

# 查看CDB资源配置

通过DBA_CDB_RSRC_PLANS视图可以查询所有CDB资源计划。

SELECT plan,comments FROM DBA_CDB_RSRC_PLANS;
PLAN                                                             COMMENTS
---------------------------------------------------------------- -----------------------------------------------------------
DEFAULT_CDB_PLAN                                                 DEFAULT RESOURCE PLAN FOR CDB$ROOT

通过DBA_CDB_RSRC_PLAN_DIRECTIVES视图可以查看所有CDB资源计划指令。

SELECT plan, pluggable_database, shares, utilization_limit, memory_min, memory_limit FROM DBA_CDB_RSRC_PLAN_DIRECTIVES;
PLAN                                                             PLUGGABLE_DATABASE                                                    SHARES UTILIZATION_LIMIT  MEMORY_MIN MEMORY_LIMIT
---------------------------------------------------------------- ---------------------------------------------------------------- ----------- ----------------- ----------- ------------
DEFAULT_CDB_PLAN                                                                                                                            1               100           1          100
RES_CDB_PLAN                                                                                                                                1               100           1          100
RES_CDB_PLAN                                                     PDB1                                                                      25                50          20           50

# 查看PDB资源使用情况

通过V$RSRC_PDB可以查看所有PDB的资源使用情况。

SELECT pdb_name, cpu_wait_time, cpu_waits, consumed_cpu_time, sga_bytes, buffer_cache_bytes, shared_pool_bytes FROM V$RSRC_PDB;
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流