Oracle的早期版本都是单租户的,即一个实例下只有一个数据库,多个应用系统可以共用一个数据库(需要分别建立用户),缺点是隔离效果不好,管理难度大,数据安全有一定的风险。
Oracle从12c开始推出了多租户概念,引入了CDB(container database,容器数据库)和PDB(pluggable database,可插拔数据库)。Oracle的CDB可以看成是一个容器,用来存放数据库。在CDB中可以有多个PDB,其中存在一个root根容器(CDBSEED)和多个PDBS。PDB$SEED与SQL server的model数据库类似,是用来创建PDB的模板库。所有的PDB共用联机日志文件、控制文件和参数文件。
多租户环境将多个数据库集中在了一个实例下运行,既节省了硬件资源,也方便了DBA管理。如果系统内存空间足够应付各系统的业务繁忙时段,或者各数据库(PDB)的业务高峰不在同一时段,使用AMM方式管理和分配内存较为方便,可以充分利用内存资源。但是,如果多个数据库的业务高峰时段重叠,就会出现内存争用。如何分配好内存保证各应用系统的正常运行成为了新的问题。
Oracle提供的多租户环境下内存管理方法是设置各PDB的最小内存值,保证PDB的基本运行不受影响。各PDB参数如下:
DB_CACHE_SIZE :buffer cache最小分配值。
SHARED_POOL_SIZE:共享池最小分配值。
PGA_AGGREGATE_LIMIT:PGA最大值。
PGA_AGGREGATE_TARGET:PGA目标值。
SGA_MIN_SIZE:SGA最小分配值。
SGA_TARGET:SGA最大分配值。
为保证上述参数有效,需要先在CDB中进行设置下列参数:
1)CDB中的NONCDB_COMPATIBLE参数必须设为FALSE(默认值)。
2)CDB的内存管理方式改为ASMM(MEMORY_TARGET参数未设置或者为0)。
PDB设置SGA_MIN_SIZE参数的指导原则是:
1) 必须小于或等于CDB中SGA_TARGET的50%。
2) 必须小于或等于PDB中SGA_TARGET的50%。
3) 所有PDB的SGA_MIN_SIZE总和必须小于或等于CDB中SGA_TARGET的50%。
Oracle多租户下的内存管理
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- PDB资源管理之内存 介绍 在Oracle 12c的多租户环境中,PDB的SGA使用情况可能会很不均衡,有些PDB...
- 在进入正题之前,我们先搞清楚一个问题,什么是数据库,什么是数据库实例。 数据库——物理操作系统文件的集合; 实 ...