Tag Archives: DBMS_RESOURCE_MANAGER

ODA环境同一服务器中资源划分(二)

简单描述如何实现在同一台服务器上不同的应用之间进行资源划分。 这里介绍资源管理器的方式。 无论是Exadata还是ODA,服务器的配置都越来越强大。因此都存在着把多个应用集中到一起的需求。 对于Exadata而言,一般来说部署的应用数据量大,并发应用高,很少会有多个应用同时部署在一个数据库服务器上的需求,反而经常是需要RAC中的多个节点同时支持某个应用,因此对于Exadata来说,应用资源划分的解决方案是SERVER POOL。 而ODA则和Exadata不同,由于ODA受扩展性,磁盘容量以及配置的限制,因此把多个应用集成到ODA上,那么这些应用多半都是小应用,考虑到ODA只有两个节点组成的RAC,因此对于ODA来说,如何在同一个服务器上给各个应用划分资源,而尽量减少应用之间的相互干扰就是十分有意义的事情了。 除了利用操作系统上的解决方案外,Oracle提供了两种方式的解决方案。一个是通过把多个应用分布到多个数据库中,通过限制每个数据库可以使用的CPU数量实现,即INSTANCE STAGE;另一个是把所有的应用集中到一个数据库,通过数据库的资源管理器实现资源的划分。 如果要使用资源管理器来分配资源,那么需要将所有的应用集中到同一个数据库中,然后根据用户、访问方式以及主机名的不同来设定不同的资源组,并将CPU资源按照一定的比例分配给不同的资源组。 在ODA上使用SWINGBENCH进行压力测试,选择100G的订单环境进行测试,当并发达到6000左右时,ODA两个服务器的CPU基本跑满,前端SWINGBENCH开始出现连接超时的情况,说明当前这种压力已经是服务器所能支持的最大值了。 此时,如果数据库中存在其他的应用,那么这些应用势必会受到压力测试的影响,应用访问的效率必然严重下降。 下面看一个简单的例子,数据库中存在两个用户分布对应两个不同的应用,可以通过下面的方法来给不同的应用分配CPU时间片资源: SQL> BEGIN 2 DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA(); 3 DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA(); 4 DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => ‘SOE_GROUP’,COMMENT => ‘soe first group’); 5 DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => ‘S2_GROUP’, COMMENT => ‘soe2 group’); 6 DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(ATTRIBUTE => DBMS_RESOURCE_MANAGER.ORACLE_USER, VALUE => … Continue reading

Posted in ORACLE | Tagged , , , , , | Leave a comment