服务热线:(0755)88305813
Oracle 18c新特性测试
来源: | 作者:oracle中国 | 发布时间: 2018-11-21 | 2921 次浏览 | 分享到:


功能介绍:


Oracle 12c版本引入了多租户的概念,可以把不同的业务整合到同一套数据库中的不同租户中,但与此同时也带来了各个租户之间对于硬件资源的争用,当一个租户出现异常时可能会影响其他租户的正常运行。为实现租户间的资源均衡,限制和隔离,通过ORACLEresource manager功能进行控制

在Oracle 12c版本之前,resource manager用来管理数据库对于操作系统资源的控制,如果一台主机上有多个数据库,那么需要分别在对应的数据库上单独设置resource manager,无法实现资源的统一分配。在Oracle 12c增强了resource manager的功能,能够对CDB和PDB进行资源控制,在一个有多个PDB的数据库中,可以对每个PDB指定不同的资源控制方案来分配操作系统和CDB资源,实现一个数据库中多个PDB的资源的统一管理。

以下测试是基于CDB下的PDB资源管控的实施测试场景,鉴于生产环境使用版本及12C与18C关于resource manager无功能差异,此测试使用12.2版本进行。


测试场景:最低资源测试

测试条件
                                                                             资源计划名称DAYTIME,CDB下存在3个PDB,具体资源限制如下:


测试步骤

1.创建资源计划

资源计划:DAYTIME

1).创建临时区     

exec dbms_resource_manager.create_pending_area();

2).创建新的资源计划

   begin

      dbms_resource_manager.create_cdb_plan(

         plan=> 'DAYTIME',

        comment => 'DAYTIME');

    end;

    /

3).创建资源指令
                        

4).验证临时区

exec dbms_resource_manager.validate_pending_area();  

5).提交修改

exec dbms_resource_manager.submit_pending_area();  


2.启用资源计划

[CDB级别]

alter system set resource_manager_plan ='DAYTIME';


3.验证资源控制

运行压测脚本

[分别在PDBPROD1,PDBPROD2,PDBPROD3中执行]

USER1@PDBPROD1:SQL> @run11.sql  

/* 脚本为对超大表进行内容HASH运算,消耗大量的CPU及IO资源 */

查看资源控制及使用情况

抽样CPU使用情况:



     期间各PDB的CPU使用情况
   

测试小结

1.通过共享片(shares)方式分配资源,分配资源为最低保证资源。

2.当系统资源满足最低PDB保证资源后,剩余资源被多个PDB共享。

3.若CPU上限不进行限制,CPU资源被所有PDB共享。

4.这种资源控制方式无法实现资源的有效隔离,仍然会导致一损皆损的结果。


测试场景(二:限制资源测试[CPU]

测试条件  

 资源计划名称DAYTIME,CDB下存在3个PDB,具体资源限制如下:

测试步骤

1.修改资源计划
                  

2.验证资源控制

运行压测脚本

查看资源控制及使用情况

抽样CPU使用情况:
     

/* PDB的CPU使用占比与CPU使用限制配置相一致,基本保持在4:1:1的关系 */

抽样IO资源使用情况:
     

/* PDB的IO使用占比基本保持在4:1:1的关系 */

期间各PDB的CPU使用情况
     

     期间各PDB的IOPS使用情况

       

测试小结

1. 若cpu资源上限作出限制,可以看到cpu总使用率在60%以下,资源分配为4:1:1

2. 随着cpu资源上限作出限制,可以看到IO的总体使用率也会得到相应的控制,呈现出一种正相关的变化趋势

3. 能够有效控制cpu的使用情况,合理分配cpu资源,能够保护各个PDB和操作系统的CPU资源使用





测试场景:并行资源测试

测试条件


资源计划名称DAYTIME,CDB下存在3个PDB,具体资源限制如下:



测试步骤

1.修改资源计划

                 

2.验证并行测试

运行压测脚本

[分别在PDBPROD1,PDBPROD2,PDBPROD3中执行]

PDBPROD1:脚本并行设置70(小于限制80),启动顺序1

PDBPROD2:脚本并行设置30(小于限制40),启动顺序2

PDBPROD3:脚本并行设置19(小于限制20),启动顺序3

查看资源控制及使用情况


/* 三个PDB下的压测脚本均可按照设定并行度正常执行,未出现排队现象 */

调整压测并行度测试

按照上面的方法分别模拟四种情况

1、脚本并行设置100(大于限制80),启动顺序1

脚本并行设置30(小于限制40),启动顺序2

脚本并行设置21(大于限制20),启动顺序3


/*

1. 通过资源监控发现,PDBPROD1并行100大于限制80,任务处于运行状态,

2. PDBPROD2并行30小于40限制,任务正常运行.

3. PDBPROD3并行21大于20限制,但任务被阻塞,处于排队状态.

*/


2、脚本并行设置100(大于限制80),启动顺序2

脚本并行设置30(小于限制40),启动顺序1

脚本并行设置21(大于限制20),启动顺序3


/*

1. 通过资源监控发现,PDBPROD1并行100大于限制80,任务处于排队状态,

2. PDBPROD2并行30小于40限制,任务正常运行.

3. PDBPROD3并行21大于20限制,任务处于排队状态.

*/


3、脚本并行设置100(大于限制80),启动顺序2

脚本并行设置30(小于限制40),启动顺序1

脚本并行设置19(小于限制20),启动顺序3


/*

1. 通过资源监控发现,PDBPROD1并行100大于限制80,任务处于排队状态,

2. PDBPROD2并行30小于40限制,任务正常运行.

3. PDBPROD3并行19小于20限制,任务正常运行.

*/


4、脚本并行设置100(大于限制80),启动顺序3

脚本并行设置30(小于限制40),启动顺序1

脚本并行设置19(小于限制20),启动顺序2


/*

1. 通过资源监控发现,PDBPROD1并行100大于限制80,任务处于排队状态,

2. PDBPROD2并行30小于40限制,任务正常运行.

3. PDBPROD3并行19小于20限制,任务正常运行.

*/


测试小结

1.资源空闲情况下,首个运行并行的PDB,并行不受资源管理器控制,可超过限制运行。

2.多个PDB都存在并行的情况下,并行控制与资源管理器配置相一致。

3.超出PDB资源控制的那一部分会话需要等待有空闲资源后才能继续执行。