企业如何通过使用服务来协助管理Oracle RAC数据库,以保证其最佳性能,本文将做详细介绍。 让我们从使用服务来检查连接的数量开始,这种检查涉及到集群中的每个实例。在下面的查询输出中,我删除了默认服务以保持简洁。剩下的是我定义的两个服务,它们应用于两个连接到3节点Oracle RAC系统的应用程序。
一个是公司的ERP应用程序,另一个是Web服务器程序。 正如所看到的,我把两个服务分散到所有三个数据库实例中。这有时意味着两个应用程序正在争夺相同的处理资源。ERP服务上一共有183个连接,Web服务器上则有397个。
在每个服务上,每个实例都有不到200个连接。 SQL> select se……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
企业如何通过使用服务来协助管理Oracle RAC数据库,以保证其最佳性能,本文将做详细介绍。
让我们从使用服务来检查连接的数量开始,这种检查涉及到集群中的每个实例。在下面的查询输出中,我删除了默认服务以保持简洁。剩下的是我定义的两个服务,它们应用于两个连接到3节点Oracle RAC系统的应用程序。一个是公司的ERP应用程序,另一个是Web服务器程序。
正如所看到的,我把两个服务分散到所有三个数据库实例中。这有时意味着两个应用程序正在争夺相同的处理资源。ERP服务上一共有183个连接,Web服务器上则有397个。在每个服务上,每个实例都有不到200个连接。
SQL> select service_name,inst_id,count(*)
2 from gv$session
3 group by service_name,inst_id
4 order by service_name,inst_id;
SERVICE_NAME INST_ID COUNT(*)
--------------- ---------- ----------
erp_svc 1 62
erp_svc 2 60
erp_svc 3 61
web_svc 1 130
web_svc 2 133
web_svc 3 134
另一个可选方案是将ERP服务部署在一个节点上,在另外两个节点上部署Web服务。如果我按照这个标准重新配置服务,那上面的查询结果看起来可能是这样的:
SERVICE_NAME INST_ID COUNT(*)
--------------- ---------- ----------
erp_svc 1 183
web_svc 2 198
web_svc 3 199
每个实例上的连接数依然不到200,但是现在两个应用程序不必再争夺相同的资源。
有了服务的存在,配置对于应用程序来说将会是透明的。数据库管理员(DBA)可以使用Oracle's Server Control Utility或SRVCTL来重新配置跨集群节点上的服务分布。这使DBA可以完全控制服务的平衡,以满足特定的需求。在我的例子中,输入的命令可能与如下的例子类似:
srvctl modify service -d orcl -s erp_svc -n -i "orcl1" -a "orcl2,orcl3"
srvctl modify service -d orcl -s web_svc -n -i "orcl2,orcl3" -a "orcl1"
ERP服务现在托管在第一个节点。然而,如果实例停止运行,服务可以搬迁到另一个实例上,这同样适用于Web服务,当某个实例变得不可用时,Web服务也可以完成类似的迁移。以这种方式配置服务,我们可以隔离应用程序的使用,但仍然可以利用Oracle RAC数据库的高可用性。
基于每个服务上的连接数量来平衡工作负载,是DBA分散Oracle RAC服务的一种方式。Oracle实例存在着几个动态性能视图,可以帮助DBA在Oracle RAC平衡服务。例如,你可能想看看SERVICE_STATS和SERVICEMETRIC。然而,我最喜欢的一个视图是SERVICE_WAIT_CLASS,它通过分类辨别,终止那些拖慢进程的“等待事件”,在每个服务和实例都可用。这里有一个例子,它用来跟踪两种与Web服务器和客户关系管理(CRM)系统相关的等待服务:
SQL> SELECT wait_class,service_name,inst_id,total_waits,time_waited
2 FROM gv$service_wait_class
3 WHERE wait_class IN ('Cluster','User I/O')
4 ORDER BY wait_class,service_name,inst_id;
WAIT_CLASS SERVICE_NAME INST_ID TOTAL_WAITS TIME_WAITED
---------- ------------ ------- ----------- -----------
Cluster crm_svc 1 12576 7157
Cluster crm_svc 2 12659 2686
Cluster web_svc 2 2063 972
User I/O crm_svc 1 13147 8256
User I/O crm_svc 2 1433 664
User I/O web_svc 2 10930 9588
在这个查询输出中,我们可以看到,CRM服务分布在两个实例上,并且存在十分严重的集群等待现象。如果该服务可以包含在一个实例中,集群等待时间应该会有所减少,因为这样做减少了全局缓存转移的次数。
另一方面,如果DBA管理Oracle RAC环境时只是使用一个服务来管理集群中运行的所有应用程序,他们将无法控制这些连接所使用的实例。为不同的应用程序配置不同的服务,DBA可以更有效地平衡集群工作负载,在Oracle RAC数据库环境下实现更好的应用程序性能。
作者
Techtarget旗下Searchoracle网站的资深专家,有16年IT行业经验、计算机科学硕士、专攻数据库方向,曾担任系统管理员等职。此外,他还获Oracle 7.3、8和8i的OCP数据库管理员证书,目前为SGT Inc.公司首席DBA。
翻译
TechTarget特邀编辑。北京邮电大学计算机科学与技术专业硕士。熟悉软件开发流程,对系统管理,网络配置,数据库应用等方面有深入的理解和实践经验。现就职于IBM(中国)投资有限公司,从事IBM服务器相关软件的开发工作。业余时间喜欢游泳登山,爱健身,喜欢结交朋友。
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
数据库和数据仓库的区别在哪儿?
目前,大部分数据仓库还是用数据库进行管理。数据库是整个数据仓库环境的核心,是数据存放的地方和提供对数据检索的支持。
-
CouchDB使用体验
不要在大数据上尝试CouchDB,不要在需要频繁查询的地方使用CouchDB,不要在需要大量汇总、分析数据的地方使用CouchDB。