使用性能配置管理PDB使用的主机资源

1. 概述

从Oracle 12.1开始,在多租户环境中,可以使用CDB级别的资源计划来控制每个PDB的资源使用,如:

  • 限制PDB的CPU使用
  • 限制PDB的并行进程使用
  • 限制PDB的内存使用
  • 限制PDB中某个会话的资源使有和
  • 限制PDB的IO
  • 等等。
    但是如果云环境的多租户,PDB数目可能会达到上千个,再使用这种CDB级别的资源计划对每个PDB进行资源限制,会很麻烦。
    在12.2版本中,引入了PDB Performance profile特性,来使一组PDB使用相同的资源计划,而不是一个个PDB进行配置。一些资源需求相同的PDB,可以创建一个performance profile,这些PDB只要设置一下DB_PERFORMANCE_PROFILE这个初始化参数,就可以使用相同的性能配置。

    2. 创建PDB性能配置的CDB资源计划

    目标:创建CDB资源计划:newcdb。里面包括PDB performance profile如下:gold、silver、bronze。

    2.1 创建pending area

    在CDB$ROOT中

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    

    2.2 创建CDB资源计划

    BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(
        plan => 'newcdb_plan',
        comment => 'CDB resource plan for newcdb');
    END;
    /
    

    2.3 创建PDB Performance profile

  • 创建PDB profile, gold
  • BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
        plan => 'newcdb_plan',
        profile => 'gold',
        shares => 3,
        utilization_limit => 100,
        parallel_server_limit => 100);
    END;
    /
    
  • 创建PDB Profile, silver
  • BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
        plan => 'newcdb_plan',
        profile => 'silver',
        shares => 2,
        utilization_limit => 40,
        parallel_server_limit => 40);
    END;
    /
    
  • 创建PDB Profile, bronze
  • BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
        plan => 'newcdb_plan',
        profile => 'bronze',
        shares => 1,
        utilization_limit => 20,
        parallel_server_limit => 20);
    END;
    /
    

    2.4 更新默认的PDB directive

    BEGIN
    DBMS_RESOURCE_MANAGER.UPDATE_CDB_PROFILE_DIRECTIVE(
    plan => 'newcdb_plan',
    profile => 'bronze',
    new_shares => 1,
    new_utilization_limit => 10,
    new_parallel_server_limit => 20);
    END;
    /
    

    2.5 更新自动PDB directive

    使用UPDATE_CDB_AUTOTASK_DIRECTIVE

    2.6 校验pending area

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    

    ## 2.7 提交pending area##

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    

    2.8 启用CDB资源管理

    在CDB$ROOT中

    ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'newcdb_plan' scope=both;
    

    2.9 的PDB中设置performance profile

    alter session set container=PDB1;
    alter system set db_performance_profile='gold' scope=spfile;
    alter session set container=PDB2;
    alter system set db_performance_profile='silver' scope=spfile;
    alter session set container=PDB3;
    alter system set db_performance_profile='bronze' scope=spfile;
    

    重启PDB

    conn /as sysdba
    alter pluggable database all close immediate;
    alter pluggable database all open;
    

    也可以在PDB中一个个单独设置并重启

    alter session set container=PDB4;
    alter system set db_performance_profile=gold scope=spfile;
    alter pluggable database close immediate;
    alter pluggable database open;
    

    2.10 检查PDB的参数

    alter session set container=CDB$ROOT;
    select inst_id, name, con_id, value, ispdb_modifiable from gv$system_parameter2 where name = 'db_performance_profile' order by 1,2,3,4;
    

    2.11 检查PDB的资源管理设置

    alter session set container=CDB$ROOT;
    select p.name, shares, utilization_limit, profile from v$rsrc_plan r, v$pdbs p where r.con_id = p.con_id;
    

    关于紫砂壶

    感悟技术人生
    此条目发表在Oracle基础知识分类目录,贴了标签。将固定链接加入收藏夹。