嵌入云端:12c Policy-Managed Cluster为Oracle DBaaS助力

张乐奕

云和恩墨副总经理,Oracle ACE 总监,ACOUG 联合创始人

Policy-Managed Cluster 在 Oracle 11gR2 中被引进,在 Oracle 12c 中使用 dbca 创建 RAC 数据库的时候,Policy-Managed 选项已然成为默认值。

那么到底什么是 Policy-Managed 方式的集群和数据库呢?与以前的 Admin-Managed 方式有何区别?何种环境适合使用这种新的方式进行管理?本文尝试回答这些问题,并且做出简单的测试。

什么是 Policy-Managed 方式?

基于策略的管理方式,是以服务器池(Server Pools)为基础的,简单地说,就是先定义一些服务器池,池中包含一定量的服务器,然后再定义一些策略,根据这些策略 Oracle 会自动决定让多少数据库实例运行在池中的几台机器上。数据库实例名后缀、数据库实例个数、所运行的主机,这些都是通过策略决定的,而不是数据库管理员事先定好的。

与 Admin-Managed 方式有何区别?

实际上上面的表述已经明确说明了,Policy-Managed 和 Admin-Managed 方式的差别。让我们再回顾一下,在以往我们创建一个 RAC 数据库大概是怎样的方法,我们在dbca的界面中会选择要将数据库实例运行在整个集群中的几台机器上,或者是2台或者是3台,或是更多,但是只要在安装的时候选定几台机器,那么以后如果不做增减节点的操作,就始终会在这几台机器上运行。而且,通常会根据主机名称的排序自动将每台主机上的数据库实例依次命名为 dbname1 到 dbnameN。这些在管理员安装完毕以后,都不会再自动变化,这就是 Admin-Managed 方式。

何种环境适合使用这种新的方式进行管理?

当管理大量的服务器集群,并且在这些集群中运行着多种不同重要程度,不同策略的RAC数据库时,为了简化管理,建议使用 Policy-Managed 方式,实际上 Oracle 也建议只有在超过3台的服务器的时候才使用 Policy-Managed 来管理整个数据库集群。想象一下使用 Policy-Managed 方式可以达到的效果:如果我们有10台服务器组成,根据不同的应用的重要性定义服务器池的关键程度,然后在其中某些机器意外停机的情况下,仍然可以自动地保持足够多的机器给重要的系统提供数据库服务,而将不关键的系统数据库服务器个数降低到最低限度。

那么 Policy-Managed 方式到底长什么样?

在默认安装完 Oracle 12c 的 RAC 数据库之后,发现数据库实例始终只会启动在一个节点中。检查服务器池配置。

Free 池和 Generic 池是默认存在的,orcl_pool 池则是在 dbca 创建数据库的时候由我们自己定义的。其中Min: 0, Max: 1表示在这个池中最少允许有0台机器,最多允许有1台机器被使用。所以这也造成了使用这个服务器池的数据库实例始终只会启动在一个节点中,即使这在我们最初的定义中是一个 RAC 数据库。

当前的数据库实例启动在节点2中,比较一下节点1和节点2服务器使用情况的输出。

接下来需要修改一下配置,让 RAC 数据库以我们熟知的方式启动在多个节点上。 –修改 orcl_pool 池中最少运行一台机器,最多运行2台机器,还记得我们前面说的关键程度吗? importance 表示该池的关键程度,数字越大表示关键程度越高,越优先被考虑满足 Min 条件。

–重新检查服务器池信息,可以看到已经修改成功,Min: 1, Max: 2

–查看当前服务器池的状态,可以看到orcl_pool池中激活的服务器包括了节点1和节点2两台机器。

在修改完毕以后,节点1中的数据库实例就会自动启动,我们可以通过 crsctl 命令查看服务器的状态,其中 STATE_DETAILS 字段显示了正在启动资源,在正常启动完毕以后该字段会显示为空。

现在就出现了一个比较尴尬的情况(对于我们以前管理 RAC 的常识来说),由于 dbserver1 中的实例是后启动的,因此实例名后缀为2,而 dbserver2 中的实例名后缀是1,实际上,在 Policy-Managed 管理的 RAC 环境中,无需关注到底哪个实例启动在哪台机器上,我们需要的就是通过 SCAN IP,通过 Service 名去访问数据库就好,而不需要通过实例名访问数据库。但是这里为了测试一下功能,还是决定1归1,2归2,我有说过我是完美主义者吗?

最后将这个 RAC 数据库再改回到只会启动一个实例的默认状态。

以后,无论是启动在哪台机器上,数据库的实例名永远会是 dbname_1(注意,这里有一个下划线,这是 Policy-Managed 数据库实例的命名规则)。而我们访问数据库,则不应该指定实例名。比如:

因为现在您已经无需关心到底实例是启动在哪台机器上了,后面是一个资源池——是不是有些熟悉这样的表述,是的,没错,Cloud! 我们也贴上了 Cloud 这个红到发紫的词,这就是Oracle 私有云解决方案的构成组件之一。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-05-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Grace development

PHP程序员如何简单的开展服务治理架构(二)

服务治理 治理的绝笔是服务,在一家公司有玩各种语言的程序员,如何去统一管理他们开发的服务,这是一个问题。

352
来自专栏网络

创建一个DIY的APM监视Node.js中的Web应用程序的性能

Tl;dr 构建一个监视应用程序执行情况的工具不再是很困难了。Node.js中Async Hooks API和Performance Hooks API最近增加...

1748
来自专栏软件测试经验与教训

脚本开发和场景运行的检查点

2654
来自专栏CSDN技术头条

运用Kubernetes进行分布式负载测试

本文为CSDN原创编译文章,禁止转载。 负载测试是开发后台基础架构的重要一环,它不但能够演示系统在真实需求面前的性能表现,还可以通过模拟用户与设备行为,在应用程...

1946
来自专栏腾讯Bugly的专栏

【Dev Club 分享】微信mars 的高性能日志模块 xlog

Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。 本期,我们邀请了 ...

4915
来自专栏杨建荣的学习笔记

MySQL删除数据的简单尝试 (r7笔记第98天)

在Oracle里面对于数据清理,如果是非分区表,目前我经常的处理思路是下面三个。 第一种是中规中矩,做好备份,然后开始清理,当然这种情况只是说明数据清理的部分,...

2745
来自专栏数据分析

表格搞定 Asp.net Web 状态管理

 最近在网上搜罗了 ASP.NET WEB 状态管理方面的一些内容,终于把这些内容整合总结了一下。 1. 希望自己通过整理,能够掌握一些,为自己投资。 2. 以...

2836
来自专栏IT大咖说

H5开发在QQ钱包的应用实践

摘要 移动互联网时代,提高网页性能是每个前端团队的目标。作为QQ钱包团队的前端工程师,我们是如何通过自研nodejs服务和利用service worker实现H...

3389
来自专栏IT技术精选文摘

Nginx/LVS/HAProxy负载均衡软件的优缺点详解

PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。 一般对...

2048
来自专栏三流程序员的挣扎

Android 优化——网络优化

711

扫描关注云+社区