当前位置: 首页>编程语言>正文

Oracle多租户下的内存管理

Oracle的早期版本都是单租户的,即一个实例下只有一个数据库,多个应用系统可以共用一个数据库(需要分别建立用户),缺点是隔离效果不好,管理难度大,数据安全有一定的风险。
Oracle从12c开始推出了多租户概念,引入了CDB(container database,容器数据库)和PDB(pluggable database,可插拔数据库)。Oracle的CDB可以看成是一个容器,用来存放数据库。在CDB中可以有多个PDB,其中存在一个root根容器(CDBOracle多租户下的内存管理,ROOT)、一个种子容器(PDB,第1张SEED)和多个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%。


https://www.xamrdz.com/lan/59c1994619.html

相关文章: