Oracle使用PDB Performance Profiles在PDB间管理OS资源

Oracle12.2新特性,在多租户数据库里,Resource Manager 可以在两个级别上管理资源。

  1. CDB 级别的 Resource Plan
    Resource Manager 可以管理争用系统和CDB资源的多个PDB的工作负载。您可以指定如何为PDB分配资源,还可以限制特定PDB的资源利用率。
  2. PDB 级别的 Resource Plan
    Resource Manager 可以管理每个PDB中的工作负载,类似于非CDB。
    即,资源分两步分配。 资源管理器首先将系统资源的一部分分配给容器数据库中的每个PDB。 然后,在特定PDB中,它将获得的系统资源的一部分(从前一步骤)分配给连接到PDB的每个会话。

从12.1开始,CDB级 resource plans 可用。 使用CDB级 resource plans,我们可以限制特定PDB的资源使用,例如:
(1)限制特定PDB的CPU使用率。
(2)限制特定PDB可以使用的并行执行 Server 的个数。
(3)限制特定PDB的内存使用。
(4)限制连接到单个PDB的不同会话的资源使用情况。
(5)限制特定PDB生成的 I/O。

对于具有数千个可插拔数据库(PDB)的多租户容器数据库(CDB),为CDB级 resource plan 配置内存和其他Resource Manager 指标会变得非常麻烦。

12.2中引入的 Performance Profiles 和 Mandatory PDB Profiles 可以为一组PDB而不是单个PDB配置CDB resource plan 指标。
您可以把使用类似的资源要求的PDB分为一组,并为它们创建 performance profile。 CDB resource plan指标是针对这些 performance profile(或这一组PDB)创建的。 可以使用 DB_PERFORMANCE_PROFILE 初始化参数指定每个PDB的 performance profile。

可以使用CREATE_CDB_PROFILE_DIRECTIVE过程为PDB performance profiles 设置shares,utilization_limit和parallel_server_limit等属性。

Oracle Exadata还有其他选项,如memory_limit和memory_min,用于控制PDB performance profiles 中的 Database Smart Flash Cache。

使用PDB Performance Profile 创建CDB Resource Plan 的步骤:
在这里,我假设为一个名为newcdb的CDB创建CDB resource plan 的场景。 该计划包括一个名为 gold,silver,bronze的每个PDB performance profiles 的指标。 然后将这些PDB performance profiles 分配给CDB中的PDB或将来插入的PDB。

  1. 使用CREATE_PENDING_AREA过程创建 pending area
    cdb执行
    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();

  2. 使用CREATE_CDB_PLAN过程创建CDB resource plan
    BEGIN
    DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(
    plan => ‘newcdb_plan’,
    comment => ‘CDB resource plan for newcdb’);
    END;
    /

  3. 使用CREATE_CDB_PROFILE_DIRECTIVE过程为PDB performance profiles 创建指标
    <PDB profile 的 plan指标,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 的 plan指标,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 的 plan指标, bronze>
    BEGIN
    DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
    plan => ‘newcdb_plan’,
    profile => ‘bronze’,
    shares => 1,
    utilization_limit => 20,
    parallel_server_limit => 20);
    END;
    /

  4. (可选)使用UPDATE_CDB_DEFAULT_DIRECTIVE过程更新默认PDB 的指标
    如果需要的话,可以使用UPDATE_CDB_DEFAULT_DIRECTIVE过程更新CDB resource plan 指标
    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;
    /

  5. (可选)使用UPDATE_CDB_AUTOTASK_DIRECTIVE过程更新缺省 autotask 指标

  6. 使用VALIDATE_PENDING_AREA过程验证 pending area
    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();

  7. 使用SUBMIT_PENDING_AREA过程提交 pending area
    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();

  8. 启用CDB Resource Plan
    cdb执行
    ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = ‘newcdb_plan’ scope=both;

  9. 在PDB中指定 Performance Profiles
    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;

    也可以逐个设置plan 指标,也可以单独重新启动PDB。
    alter session set container=PDB4;
    alter system set db_performance_profile=gold scope=spfile;
    alter pluggable database close immediate;
    alter pluggable database open;

您甚至可以为同一CDB中的单个PDB和PDB performance profiles指定指标。
可以使用CREATE_CDB_PLAN_DIRECTIVE创建PDB的指标。
相同的PDB或相同的PDB performance profile不能引用当前的活动的 Plan 的两个指标。
应在所有RAC实例上为db_performance_profile参数设置相同的值。

要查看 PDB Performance Profiles:

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;

要查看不同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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值