Oracle pdb管理(学习一下)
我们知道,Oracle多租户选件是数据库原生支持的云管理能力,而不是像其它厂商采用云管理平台来实现多租户的功能,使得Oracle多租户选件可实现更高的资源利用率,更好的性能,更强的稳定性,和更简便的运维,从而广受用户喜爱。
用户进行Oracle多租户数据库规划时,特别是需要对多个关键数据库整合时,常常对多租户数据库的资源管控有些疑惑,甚至有些担心。多个关键数据库整合在一个硬件平台上,万一出现资源竞争,是否会影响所有运行在此平台上的数据库,从而影响关键的SLA指标。
Oracle在多租户资源管控上面提供最全面最完整的解决方案,可以帮助用户打消此类担心。下面会主要从多租户环境下资源管理的考量因素及示例,来介绍Oracle多租户数据库所提供的资源管控能力。
多租户环境资源管理考量
本文以CPU资源规划为抓手来进行整体资源规划考量,主要对数据库运行的关键资源,如CPU、内存、IO、存储空间等来进行规划设计,以期在满足应用运行要求,保障应用性能稳定的前提下,最大化资源利用。根据最佳实践,多租户环境下资源的规划设计,主要分三步进行:
第1步,应用数据库资源调研与评估,主要考量因素如下:
▪ 应用数据库的运行特性及CPU、内存、存储IO资源配置与使用情况,如高峰,平峰,低锋时段资源使用率等;
▪ 应用数据库表空间大小,包括当前数据表空间大小和临时表空间大小,及近一年增长趋势;
▪ 应用数据库连接数,包括最大会话连接数,活动会话连接数等;
▪ 应用数据库的关键性,及对性能和SLA的要求;
第2步,确定数据库云多租户环境的资源配置及用途,主要考量因素如下:
▪ 确定数据库云多租户环境的CPU、内存、存储IO资源配置;
▪ 确定数据库云多租户环境的存储配置及IO能力;
▪ 确定数据库云多租户环境可承载的会话连接数;
▪ 确定数据库云多租户环境架构及SLA特性;
▪ 确定数据库云多租户环境用途,如仅整合当前应用数据库,或者除整合当前应用数据库外,还需考虑资源的灵活扩缩,新需求的PDB快速供应等;
第3步,数据库云多租户环境资源规划设计,主要方案和应用场景如下:
▪方案1,通过应用错峰的原则,来选择哪些应用数据库通过PDB方式整合在一起,本身在多租户层面不加控制,采用默认资源共享的方式,从应用运行特性上来降低CPU资源竞争。此方案适应于对应用特性非常了解,且应用负载波动周期稳定,能准确度量的,或者资源非常充足,应用关键性不高的场景。
▪方案2,通过需整合数据库CPU加总数,等于多租户环境CPU数量的计算规则进行整合,采用PDB sizing factor来进行资源管控;此方案整合密度为1,适应于关键的数据库应用,需要对性能具有极高的可预测性、稳定性的场景。
▪方案3,通过需整合数据库CPU加总数,等于多租户环境CPU数量乘以整合密度数值的方式进行整合,采用PDB sizing factor来进行资源管控;此方案整合密度大于1,存在资源超额分配的情况,适应于提供低成本的云服务,并且预期许多pdb将在大部分时间处于空闲状态的应用场景。
多租户环境资源规划设计及配置示例
下面以方案二的场景,及常见的整合当前应用数据库的多租户用途,来进行资源规划设计配置示例。如需更多场景的设计及配置方式,可参阅文末参考资料了解。
场景假设
• 数据库云多租户环境用途为仅整合当前应用数据库;
• 数据库云多租户环境CPU数量,即CDB CPU_COUNT为64;
• 数据库云多租户环境内存大小为512G;
• 应用X评估当前所需CPU数量为32,数据量为2T,每年增长量为300G;
• 应用Y评估当前所需CPU数量为16,数据量为1T,每年增长量为150G;
• 应用Z评估当前所需CPU数量为16,数据量为800G,每年增长量为100G;
PDB sizing factor计算公式
PDB的资源分配是通过CDB资源管理器计划和PDB参数指定的,通过这些来设置控制各种资源,包括CPU、I/O、内存、会话、并行执行等。
本文采用一种简单的方法,从PDB的CPU_COUNT来作为各租户资源分配比例的关键参考,为此,我们定义了“PDB sizing factor”,它指定了PDB配置的CDB资源的百分比。
PDB sizing factor公式如下:
PDB sizing factor = PDB's CPU_COUNT CDB's CPU_COUNT
各租户PDB sizing factor计算如下:
应用X PDB sizing factor = 32 64 = 50%
应用Y PDB sizing factor = 16 64 = 25%
应用Z PDB sizing factor = 16 64 = 25%
CPU 资源规划配置
CPU 资源规划
各租户CPU资源分配如下:
CPU 资源配置
1. 设置PDB cpu_count值,启用instance caging,以应用X为例
alter session set container = PDB-X;
alter system set cpu_count = 32;
alter session set container = CDB$ROOT;
alter system set resource_manager_plan = ' DEFAULT_CDB_PLAN';