admin 管理员组

文章数量: 887021


2023年12月22日发(作者:java语言逻辑)

计算机系统应用 201 0年第1 9卷第9期 基于CACTI的分布式ORACLE监控系统的 设计与实现① 赵林海1,2李晓风1 谭海波i (1.中国科学院合肥物质科学研究院信息中心安徽合肥230031: 2.中国科学院研究生院北京1 00049) 摘. 要: 针对多个ORACLE数据库系统的主动性监控问题,提出一个基于CACTI的分布式监控报警系统。采 用“一个管理端十多个代理”的监控模式,CACTI作为监控管理端,在运行ORACLE数据库服务器上 添加代理模块,实现对物理住置上分布的多个ORACLE进行不间断的集中式监控。通过在CAC『rI上 对各个0RACLE数据库设置不同的性能报警粒度,实现系统多层次多粒度、灵活多样的监控策略,并 对数据库运行过程中的异常状态进行邮件和短信报警。实验结果和型号项目中的实际应用验证了系统 的有效性。 关键字:ORACLE;CACTI;分布式监控;报警 Design and Implementation of Distributed Oracle Monitor System Based on CACTI ZHAO Lin.Hai 一,LI Xiao.Feng ,TAN Hai.Bo (1.Information Center,Hefei Institutes ofPhysical Science,ChineseAcademy ofSciences,Hefei 230031,China; 2.Graduate University,Chinese Academy of Sciences,Beijing 1 00049,China) Abstract:In order to guarantee multiple ORACLE database system initiatively,a distributed guarantee warning system is proposed based On CACTI.By using the“one—manager-multi—agent'’mode,CACTI adds agent model to ORACLE database server to enable continous centralized monitoring on a distributed ORACLE database.Muli-ltevel and flexible monitoring strategies are realized by setting different granularity on CACTI for various ORACLE databases.The system alerts abnormal states of mail and message in a database.The experimental results and he tpractical application in model projects verify he teffectiveness of the system. Keywords:ORACLE;CACTI;distributed monitoring;warning 1 引言 数据库在中企业占据着至关重要的地位, 一系列复杂的业务逻辑操作,任何一个数据库性能过 低或发生故障将会对整个分布式系统造成严重的影 响,甚至给企业带来巨大的损失。要保障此类系统持 续可靠与高效的运行,必须对各个数据库进行有效的 监控,及时发现数据库运行中的异常状态,避免系统 崩溃。 ORACLE数据库作为大型数据库的首选,在大型企业 中得到广泛的应用。随着企业信息化的发展,数据量 的日益增多1单个数据库已经很难满足企业的实际需 求,因此,分布式数据库系统得到越来越多企业的青 睐。这些系统分布于不同的物理位置,相互配合完成 ①收稿时间:2009—1 2-22;收到修改稿时I'a-]:201 O-O1—22 134实用案例ApplicationCase 

201 0年第1 9卷第9期 2研究现状 当前有不少商用的ORACLE数据库监控和管理工 具,比较有影响的如OEM(Oracle enterprise manager)P]、Embarcadero Database Solutions[2] 和Quest Central[3]等。通过比较可知,现有的监控 工具在集成性、集中式多点监控、监控层次粒度、灵 活性、实时监控报警和二次开发表现得不尽如人意。 虽然不少商用监控工具都支持邮件报警,但是均未能 实现短信报警的功能,这可能造成ORACLE数据库的 异常状态未能及时被发现,导致数据库系统的崩溃。 除了不能根据企业实际环境制定符合自身情况的监控 策略,现有的商用监控工具普遍价格不菲,给企业增 加了不少使用成本,所以有必要根据实际需要,制定 开发一个开源的监控系统。 前期关于ORACLE数据库系统管理维护的研究主 要集中在对数据库的性能优化和故障诊断等方面。本 文系统主要面向多个ORACLE数据库的监控,通过 CACTl【4】平台和编写代理模块实现分布式数据库的集 中管理监控。根据各ORACLE数据库服务器的实际情 况,用户可以在代理模块制定最合理的监控方案。因 此,系统在监控的内容、灵活性、扩展性、实时性等 方面具有更好的性能。 3系统设计与实现 3.1关键技术 3.1.1 CACTI 。 CACTI是一套基于PHP,MYSQL,SNMp[s]及 RRDTool开发的系统和网络监测图形分析工具,通过 snmpget从代理设备采集数据,然后使用RRDTool 绘制图像。CACTl除了提供基本的监控功能外,还提 供了许多功能插件用于扩展以满足不同服务的需求。 3.1.2 N盯一SNMP【6】 N盯一SNMP是一种开放源代码的SNMP协议开 发软件。通过NET—SNMP在被监控设备添加自定义 的代理模块,实现被监控设备性能数据的采集。 3.2系统结构 系统采用“一个管理端+多个代理”的监控模式, 如图1所示。每台ORACLE服务器均添加有代理模块, 每个代理模块负责采集本地ORACLE数据库的状态信 息。监控服务器上运行CACTI作为监控程序定时向所 有代理模块采集各个ORALCE数据库的状态信息,然 计算机系统应用 后对这些状态信息进行分析,如果有异常的状况就立 即发送报警消息给管理员。监控服务器采用的MYSQL 数据库不仅在性能上满足监控服务的要求,而且它是 开源的,企业无需支付使用费。 ORALCE服务器 图1 系统结构图 3.3系统环境 在实际设计中,系统由两部分组成,一部分为运 行CACTI的监控端,称之为Manager;另一部分为 被监控的ORACLE数据库服务器,其在物理上是分布 的,称之为Agent。因为这些分布的ORACLE数据库 服务器有可能是异构的,为了保证Manager能够与 各个Agent正常的通信,以及提高代理模块程序的复 用性,需要在每台服务器上安装N盯一SNMP软件。 它是基于SNMP协议的开发软件,而SNMP协议是当 前互联网设备均遵从的协议标准,所以使用 N盯一SNMP开发代理模块具有良好的跨平台性和移 植性。 3.4系统实现 监控系统是基于SNMP协议实现的,而在SNMP 协议通信中,被监控设备的各种状态信息是通过对象 标识符OID(Object Identifiers)【7l来识别。为此,代 理模块需要为ORACLE数据库的各种状态信息定义 OlD。为了使这些OlD在分布式的ORACLE数据库系 统中能够通用,需在各个代理模块中规范化OlD的定 义,保证系统中的OID与具体的0RACLE数据库性 能信息一一对应。 本文定义ORACLE数据库性能的父节点OlD 为.1.3.6.1.4.1.1 220,在此OID节点下添加所需的 Application Case实用案例135 

计算机系统应用 201 0年第1 9卷第9期 OID子节点,这些OID子节点对应于各个具体的性能 信息。除了这些ORALCE数据库共同的性能信息,各 代理模块通过在C语言程序中嵌入SQL语句来访 问ORACLE数据库IIo]。利用动态性能视图查询相应的 性能参数数据。下面举例介绍如何通过动态性能视图 采集ORACLE数据库的状态信息。 首先,下面代码中定义了两个整形变量temp— totaI和temp—used分别保存临时表空间TEMP的总 空间和已经使用的空间。通过视图DBA_TEMP—FILES 个代理模块还可以根据所在ORACLE数据库服务器的 实际情况添加相应的OlD子节点。添加完毕所需的OID 节点后,利用N盯一SNMP软件工具的库函数将定义的 OID添加到信息库里面。这样,Manager就可以通过 具体的OID节点和Agent的IP地址查询该ORACLE 数据库相应的性能信息,系统流程图如图2所示。 查询临时表空间TEMP的总空间,通过视图 Manager Agent 丽 Agen1 ...…………  ……;;  :———翟  一> — 里 :…… :…一…… : ;I性II1 ̄IE娜l01『 嚆 髓螂i ; 上 人 早  IlⅡ 髓 OIl^CLE 煳 ……..……….  ‘… … ……: 图2 系统流程图 在监控系统的Manager端,CACTI周期性的向 各个Agent发送查询ORACLE数据库状态信息的请 求,采集相应的性能状态数据。对于那些重要的性能 参数,CACTI可以为它们分别设置报警阈值。当 CACTI采集到数据后会将它们存储到MYSQL数据库 中,并用RRDTooI绘制图像。对于设置阈值的性能参 数,CACTI将采集到的数据与相应的阈值进行比较, 如果发现其不在阈值范围之内,CACTl就会立即发送 报警邮件和短信给管理员。 在每个Agent端,代理模块周期性地采集本地 ORACLE数据库的性能信息,并将得到的数据赋予对 应的OlD。当它接收到Manager的查询请求时,就 会将OlD的数据值返回给Manager。 3.5数据采集 ORACLE数据库有很多动态性能视图【8,9】,这些视 图自动收集并记录当前例程的活动信息。利用这些动 态性能视图,可以了解数据库运行的状态。通常情况 下,可以通过动态性能视图掌握两类重要的数据库运 行信息。一是了解数据库运行相关的性能数据,如内 存的使用量、磁盘排序发生的机率等。二是取得与磁 盘和内存结构相关的其他信息。这些信息将是数据库 管理员进行数据库维护与性能调整的主要参考依据。 136实用案例Application Case V¥TEMP—SPACE—HEADER查询已经使用的空间。 /★============================ ==:=============:=============== === , E×EC SQL Select BYTES Into:temp—total From DBA_TEMP-FILES; E×EC SQL Select BYTES—USED Into:temp—used FrOm V¥TEMP_SPACE—HEADER; , ====:======:======:========== ================================ ==i一 , 另外,还可以通过V¥SGAS 视图得到 ORACLE数据库里SharedPooI中空闲内存与共享池 当前使用内存的百分比。如下面代码所示。 , ==一I========================= =================:=============== ===★, EXEC SQL Select 1 00 S.BYTES/USED From V¥SGASTAT S,(Select Sum(BYTES) USED From V¥SGASTAT Where POOL=’shared pool’And NAME <>’free memory’) Where S.POOL=。shared pool。And S.NAME=’free memo : , —I.===:======================= ================================ :== , 代理模块通过ORACLE数据库的动态性能视图采 集到状态数据后,会将这些数据分别赋予对应的OlD 节点,更新当前值。 4系统测试结果与分析 CACTI通过OlD采集到各个Agent的性能状态 数据后,RRDTool就会根据这些数据绘制图像,让管 

201 0年第1 9卷第9期 理员能够直观的查阅ORALCE当前的状态。默认情况 下,CACTI每隔五分钟就会向分布的各个ORALCE 数据库服务器采集一次数据。这个采集周期可以根据 实际情况进行调整,对于重要的ORALCE数据库可以 适当缩短采集的周期,在提高监控实时性的同时,也 要避免过于频繁的采集而给ORACLE数据库服务器造 成严重的负担。为了方便管理,系统对分布的 ORACLER数据库进行规范命名。根据本文2.4的数 据采集,下面给出了名字为ARP—SE一5的ORACLE 数据库的CACTI监控示意图。 图3为ARP—SE一5临时表空间TEMP的状态图, 图中记录该ORALCE数据库表空间TEMP每个时刻的 状态。从图中可以看出大约从9时至1 5时TEMP的 空间均未发送变化,2 5.07GB的空间已经被使用,还 剩余5.98GB的空间,说明在这段时间内未有用户对 该表空间进行操作。在ORACLE数据库中,所有的数 据对象都存放在指定的表空间中。当表空间被存放满 后,用户将不能继续往里面存入数据,需要对表空间 进行扩展。为了保证ORACLE数据库的正常存储,可 以在CACTI中设置TEMP剩余空间的报警阈值。例如, 可以设置剩余空间的阈值为50OMB,当TEMP的剩余 空间低于500MB时,CACTl就会立即发送报警邮件 和短信给数据库管理员。 From e e8 09:K:e7 i。2 ̄/89/08 15:毒5:e7 II如酣Current: .07 6 Average: 25 87 E H : 器.87 } : 25。船G II Free Current; S 诣‘Average: S,驰6 f : S.靼G 】c: S.拿8 G 图3 表空间TEMP状态图 图4为SharedPool中空闲内存与使用内存的百 分比示意图。查询结果能够反映Shared Pool Memory的分配是否合理。如果百分比高于1 00%, 则表示Shared Pool Memory分配过度,分配给共享 计算机系统应用 池的内存很可能被浪费掉。如果百分比在1 00%至 20%之间,则表示Shared Pool Memory关注过多, 分配的大小可以接受,但不是最佳。如果百分比低于 20%l则表示Shared Pool Memory分配适当,已用 内存和空闲内存处在最佳状态。从图中可以看出,大 约从9时开始至1 5时,数值一直发生变化,但均处 在最佳状态,说明数据库ARP—SE一5当前分配的 Shared PooI Memory大小合理。 图4 SharedPool中空闲内存与使用内存百分比图 利用CACTI的报警机制,可以设置该百分比的阈 值为1 00%,当采集到的数值高于阈值,则发邮件通 知数据库管理员注意Shared Pool Memory的状态。 如果该数值长时间高于阈值,那么数据库管理员应及 时调整Shared Pool Memory的大小,优化ORACLE 数据库的性能。 5结束语 CACTI和N盯一SNMP在监控领域应用十分广泛, 文章利用它们实现对分布式ORACLE数据库的集中监 控系统。该系统目前已经投入使用,运行稳定,能够 同时监控多台ORACLE数据库服务器,可以根据实际 情况为每个ORACLE数据库制定不同监控策略,并对 异常状况发送报警邮件和短信通知管理员。此外,系 统具有良好的扩展性,只需要在代理模块稍加修改就 可以满足监控需求的变化。 参考文献 1 Ernst B,Rasmussen HR,Schwinn U,et a1.Enterprise DBA part 1A:Architecture and administration.Oracle (下转第133页) Application Case实用案例137 

201 0年第1 9卷第9期 计算机系统应用 将用户此权限的功能向量码以及此操作的功能属性编 号传给CheckOperateAccess函数进行判断。如果返 之可以在不同的基于数字证书的应用系统中很方便地 设置权限。只需替换系统中验证签名的函数模块(同一 加密设备无需替换),就可以将本系统应用到其他数字 证书认证的系统上。这样就大大减轻了权限管理模块 的实现难度,实现了权限管理与系统业务的分离。目 回真,表示用户有权限进行此限操作。函数的形式及 参数表示如下。 public bool Check0perateAccess(strlng operation Code,int operationld) 前该系统模块已经成功应用于国家教育电子身份认证 2.7系统性能优化 系统中,取得了不错的效果。 在每次页面加载时,都要用到资源功能属性集, 并且系统对访问的每个页面窗口都要进行权限检查, 参考, 献 而一个用户又可能隶属于多个角色,因此每次都要从 l Sandhu R.Role.based Access Control Models. 数据库中来检索权限会严重影响系统的性能。为解决 Computer,1996,29(2):38—47. 这个问题,在系统运行时,可将这些数据缓存到服务 2蔡昭权.基于业务无关的权限管理的设计与实现. 器中,常驻内存,如果在运行中更改了这些数据,则 计算机工程,2008,34(9):1 83—1 85. 同时更新缓存中的数据。如将资源操作属性集存入 3王权,杨林,刘伟,王桢珍.基于USBKEY的访问控制 HashTable[操作编号,操作名称】,将资源列表的数据 方法研究.计算机工程与设计,2008,29(I 1):27—29. 集,权限数据集缓存到内存中,这样要用这些数据时 4 Ferraiolo D,Kuhn R.An Introduction to Role Based 直接从缓存中读取,节省了系统频繁访问数据库的开 Access Contro1.[2007—05-10].http://csrc.nist.gov/rbac/. 销,也提高了权限计算的效率。 5徐斌,袁健.基于Web2.0的用户权限管理研究与实现. 3结束语 计算机工程,2008,34(13):157—159. 本文分析并比较了基于数字证书的权限管理与传 6暴志刚,胡艳军,顾新建.基于Web的系统权限管理实 统用户名/密码方式认证的权限管理区别,并针对不同 现方法.计算机工程,2006,32(1):169—170. 之处给出相应的实现方法。本文采用功能向量码的方 7高正宪,涂亚庆,李中学.PKI和RBAC授权数字证书 法了设计一个基于数字证书的通用权限管理模块,使 的设计与实现.计算机工程,2008,34(2):I17一l19. (上接第1 37页) Corporation,1 999. 6李明江.SNMP简单网络管理协议.北京:电子工业出 2 Embarcadero Corporation.DBArtisan:Leading cross・ 版社。2007.78—162. platform database administration solution for 7 Case J,McCloghrie K,Rose M,et a1.Textual Conven- maximum availability,performance,and securiyt. tions for Version2 of the Simple Network Manage・ http://www.embarcadero.corn/products/dbartisan/index merit Protocol(SNMPv2).RFC2579.IETF,1999. .html,2008. 8 Hassan A.Afyouni.Oracle9i数据库性能调整与优化. 3 Foster I,Kesselman C,Fsudik G A Security Architee- 吴越胜,张耀辉等译.北京:清华大学出版社,2005.34 ture for Computional Grids.1EEE Computer Society, —256 2002. 9 Marlene Theriault,Rachel Carmichae1.James Viscusi. 4岑锐坚.使用Cacti监测系统与网络性能.开放系统世 Oracle9i DBA基础教程.杨涛,杨晓云,王建桥,高文雅 界,2006,(7):69—72. 等译.北京:机械工业出版社,2003.59—170. 5 W.Richard Stevens,Gary R.Wright.TCP/IP详解,卷 10孙宏昌.Pro*C程序设计和Oracle调用接口.j匕京: 1.陆雪莹等泽.北京:机械工业出版社,2000.270—292. 电子工业出版社.1996.10—128. Application Case实用案例133 


本文标签: 系统 数据库 监控