一种PGA内存溢出智能处理方法技术

技术编号:10758837 阅读:118 留言:0更新日期:2014-12-11 14:11
本发明专利技术公开了一种PGA内存溢出智能处理方法,包括如下步骤:a)设置PGA内存溢出处理阈值;b)调用数据库存储过程并实时监控PGA内存是否达到溢出处理阈值;c)当PGA内存达到溢出处理阈值后,自动生成PGA清理脚本;所述溢出处理阈值包括PGA告警阈值、PGA查杀阈值、单个进程PGA阈值以及SQL语句并发度阈值,所述PGA查杀阈值大于PGA告警阈值。本发明专利技术提供的PGA内存溢出智能处理方法,通过制定内存溢出自动处理阈值,在PGA内存分配达到阈值时,自动触发一系列操作,释放过多分配的PGA内存,减少或消除由于PGA内存溢出而引发的故障,并尽量减少人工干预,提高系统的稳定性、易用性和可用性。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了一种PGA内存溢出智能处理方法,包括如下步骤:a)设置PGA内存溢出处理阈值;b)调用数据库存储过程并实时监控PGA内存是否达到溢出处理阈值;c)当PGA内存达到溢出处理阈值后,自动生成PGA清理脚本;所述溢出处理阈值包括PGA告警阈值、PGA查杀阈值、单个进程PGA阈值以及SQL语句并发度阈值,所述PGA查杀阈值大于PGA告警阈值。本专利技术提供的PGA内存溢出智能处理方法,通过制定内存溢出自动处理阈值,在PGA内存分配达到阈值时,自动触发一系列操作,释放过多分配的PGA内存,减少或消除由于PGA内存溢出而引发的故障,并尽量减少人工干预,提高系统的稳定性、易用性和可用性。【专利说明】一种PGA内存溢出智能处理方法
本专利技术涉及一种内存溢出处理方法,尤其涉及一种PGA内存溢出智能处理方法。
技术介绍
PGA (Program Global Area程序全局区)是一块包含一个服务进程的数据和控制信息的内存区域。它是Oracle在一个服务进程启动是创建的,是非共享的。一个Oracle进程拥有一个PGA内存区。一个PGA也只能被拥有它的那个服务进程所访问,只有这个进程中的Oracle代码才能读写它。SQL工作区可以是自动的、全局的管理。DBA只要设置参数PGA_AGGREGATE_TARGET给一个实例的PGA内存指定总的大小。设置这个参数后,Oracle将它作为一个总的全局限制值,尽量使所有Oracle服务进程的PGA内存总数不超过这个值。 但在某些特殊情况下,比如:用户连接数量过多、每个进程分配的PGA过大、触发Oracle数据库BUG等,OracIe分配的PGA内存总量可能超过预先设定值。由于超出PGA预设值的这部分内存数量无法准确评估,所以会出现Oracle占用的主机整体内存过高,进而导致主机系统挂起或主机宕机、重启,严重影响业务的正常处理。 现有通用的处理方法如下:1、不做处理(问题无法准确定位);2、发现问题人工处理。上述需要人工干预或无法进行有效人工干预的情况下,无法确保Oracle数据库安全、稳定、高效的运行,以及业务的连续性。因此,现有处理方法的缺点: I)某些情况下问题无法准确定位处理。在某些情况下,比如PGA内存溢出后在短时间内导致操作系统无法登陆或数据库异常关闭,无法进行有效干预。 2)人工处理,但不及时。发现PGA内存溢出后可以进行人工处理,但无法保证每次均能得到及时处理。 3)人工处理,但可能出现误操作。可能在问题处理过程中对问题产生的原因出现误判和误操作的情况。 4)无法对问题进行提前预判并进行处理 5)无法针对单独的异常进程进行处理。手工处理此类问题一般的方法是终止所有数据库连接进程,但这样会使所有连接数据库的业务进程失效,影响业务处理。 6)事后无法得知造成PGA溢出的具体进程或SQL语句。由于在问题发生时没有针对当时的系统状况进行记录,所以后续无法得知当时引发问题的具体进程或SQL语句,不利于找到问题发生的根源。
技术实现思路
本专利技术所要解决的技术问题是提供一种PGA内存溢出智能处理方法,能够减少或消除由于PGA内存溢出而引发的故障,并尽量减少人工干预,减少系统的运维成本,提高系统的稳定性、易用性和可用性。 本专利技术为解决上述技术问题而采用的技术方案是提供一种PGA内存溢出智能处理方法,包括如下步骤:a)设置PGA内存溢出处理阈值;b)调用数据库存储过程并实时监控PGA内存是否达到溢出处理阈值;c)当PGA内存达到溢出处理阈值后,自动生成PGA清理脚本。 上述的PGA内存溢出智能处理方法,其中,所述步骤a)中的溢出处理阈值包括PGA告警阈值、PGA查杀阈值、单个进程PGA阈值以及SQL语句并发度阈值,所述PGA查杀阈值大于PGA告警阈值。 上述的PGA内存溢出智能处理方法,其中,所述步骤b)中的实时监控过程如下:bl)通过查询process视图的pga_alloc_mem值获取当前PGA分配总量,如果当前系统PGA分配总量未超过PGA告警阈值,则不做处理;b2)如果当前系统PGA分配总量超过PGA告警阈值,未达到PGA查杀阈值,则收集当前占用PGA内存超过50M的所有进程信息插入到一张数据库表中作为记录信息山3)如果当前系统PGA分配总量超过PGA查杀阈值,则继续查询process视图的pga_alloc_mem值获取PGA内存使用量超过单个进程PGA阈值的进程信息,以及继续查找并发度大于SQL语句并发度阈值的SQL语句;如果同时存在超过阈值的单个进程以及SQL语句,则继续生成终止所述进程的SHELL脚本,否则只记录信息。 上述的PGA内存溢出智能处理方法,其中,所述进程信息包括操作系统进程号、SQLID、发起连接的业务用户以及主机和应用程序;所述记录信息通过dbms_output.put_line方法输出到指定的日志文件。 上述的PGA内存溢出智能处理方法,其中,所述步骤a)?步骤c)通过设置计划任务进行定时调度。 本专利技术对比现有技术有如下的有益效果:本专利技术提供的PGA内存溢出智能处理方法,根据每套Oracle数据库所在服务器的内存分配以及历史运行情况、PGA基线值等制定内存溢出自动处理阈值,在PGA内存分配达到阈值时,自动触发一系列操作,释放过多分配的PGA内存。本专利技术通过自动的计划任务、自定义数据库存储过程等智能处理方法,减少或消除由于PGA内存溢出而引发的故障,并尽量减少人工干预,减少系统的运维成本,提高系统的稳定性、易用性和可用性。 【专利附图】【附图说明】 图1为本专利技术PGA内存溢出智能处理流程示意图; 图2为本专利技术整体流程及相互调用关系图; 图3为本专利技术数据库存储过程执行流程图。 【具体实施方式】 下面结合附图和实施例对本专利技术作进一步的描述。 图1为本专利技术PGA内存溢出智能处理流程示意图。 请参见图1,本专利技术提供的PGA内存溢出智能处理方法包括如下步骤: 步骤S1:设置PGA内存溢出处理阈值;包括PGA告警阈值、PGA查杀阈值、单个进程PGA阈值以及SQL语句并发度阈值,所述PGA查杀阈值大于PGA告警阈值; 步骤S2:调用数据库存储过程并实时监控PGA内存是否达到溢出处理阈值; 步骤S3:当PGA内存达到溢出处理阈值后,自动生成PGA清理脚本。 本专利技术提供的PGA内存溢出智能处理方法,整体架构包括以下三个重要组成部分: a)操作系统计划任务(负责定期调度) b)主脚本(负责调用存储过程,执行存储过程生成的PGA清理脚本) c)数据库存储过程(检查数据库并生成PGA清理脚本) 另有在过程中生成的PGA清理脚本和记录清理过程的日志文件。 本专利技术提供的PGA内存溢出智能处理方法,整体流程及相互调用关系如图2所示,各组件功能及原理说明如下: 1、操作系统计划任务 使用操作系统命令crontab,在指定时间点或者时间间隔调用一次主脚本,时间点或者时间间隔可以自定义。 2、主脚本 该脚本由操作系统计划任务调度,由三部分组成:设置环境变量、调用数据库存储过程以及执行由上述数据库存储过程生成的清理脚本清理PGA内存。 3、数据库存储过程 本文档来自技高网
...
一种PGA内存溢出智能处理方法

【技术保护点】
一种PGA内存溢出智能处理方法,其特征在于,包括如下步骤:a)设置PGA内存溢出处理阈值;b)调用数据库存储过程并实时监控PGA内存是否达到溢出处理阈值;c)当PGA内存达到溢出处理阈值后,自动生成PGA清理脚本。

【技术特征摘要】

【专利技术属性】
技术研发人员:程永新徐华春张文宇
申请(专利权)人:上海新炬网络技术有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1