利用Instance Caging实现数据库服务器的资源整合
Kaya 发表于 os2ora.com
随着业务的发展,IT部门的服务器数量会越来越庞大,另一方面,这些服务器的利用率却得不到充分利用,于是,服务器的资源整合就被提上了议事日程,这方面的相应的解决方案一般有
- Hardware Partitions,
- O/S Workload Managers,
- Virtualization
- 等等。
在11gR2中,Oracle也提供了一种简单有效的方法实现对服务器资源的整合,这就是Instance Caging技术。
下面的描述实际上来源于Oracle发表的一篇白皮书,下载地址
http://www.oracle.com/technology/products/manageability/database/pdf/owp_instance_caging.pdf
下面是两种应用资源整合的场合:
1. 对性能要求不严格的数据库,一般我们可以把多个数据库放在同个服务器上,没有突发负载的情况下,所有数据库共享服务器的资源,与把服务器的资源划分隔离给不同的数据库相比,这一方面可以充分利用服务器的计算资源,另一方面也省去了管理的开销。这时,要处理的主要问题在于当某个数据库有突发的工作负载的时候,我们不能让这个数据库占用整台机器的资源,以防止对其它数据库资源的争用。这时,我们说出现了资源过度分配的问题。
举个例子来说,一个有4个CPU的系统,运行着4个数据库,我们可以规定任一个数据库用CPU的最高额度是3个CPU。于是,当4个数据库同时处于业务高峰时,理论上的主机最高压力就会达到12CPU。不过,当启用Instance Caging之后,每个数据库能运行的进程数将受到控制,OS根据每个数据库能运行的进程数分配给每个数据库相应的CPU资源。这样,多个同时处于业务高峰的数据库将会根据预设的最高额度值共享服务器的资源。
2. 对性能要求苛刻的数据库,一般而言,我们希望对CPU进行分区,分配给不同的数据库不同的CPU数目,这样不同的数据库之间就不会造成相互的影响。比如有4个CPU,两个数据库,那么我们可以为第一个数据库分配1个CPU,第二个数据库分配3个CPU。
那么,如何启用Instance Caging呢?简单的两步:
1. 设置cpu_count
2. 启用任何一个Resource Manager Plan.
下面是一个实际案例,利用Instance Caging实现对服务器资源的分区的一个测试结果。
可以看到,Instance Caging还是实现了它所宣称的partition功能的。

补充一点,Instance caging是free的,其他厂商不管对小机做hard或soft分区都是需要charge费用的,这一点也很有吸引力。