网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Hadoop,ERP及大数据讨论区 »
返回列表
0
发起投票  发起投票 发新帖子 回复帖子     
查看: 9420 | 回复: 1  主题: 订单管理套件-在OM库ORA-4030 ORA-4031的错误[原创]      上一篇   下一篇 
匿名
发表于:IP:您无权察看 2012-3-20 12:12:39       复制这个帖子   引用回复这个帖子   回复这个帖子      位置

订单管理套件-在OM库ORA-4030 ORA-4031的错误[原创]

适用于:

Oracle Advanced Pricing - Version: 11.5 to 12.1.3 - Release: 11.5 to 12.1
Oracle Order Management - Version: 11.5 to 12.1.3 [Release: 11.5 to 12.1]
Oracle Shipping Execution - Version: 11.5.0 to 12.1.3 [Release: 11.5 to 12.1]
Information in this document applies to any platform.


目标:

订单管理套件在OM库ORA-4030 ORA-4031的错误。

ORA-4030/4031的故障排除方法。
简介:

本文档旨在帮助OM公司的工程师和客户明白为什么ORA-4030,ORA-4031错误会发生,以及如何去解决这些问题。
许多SR的记录在OM过程时遇到这个错误。要经过一个非常复杂的过程才能处理这个问题。本文档中的信息关于这个问题上的几个漏洞和建议。

问题和答案:

1.了解ORA-4030/4031错误

ORA-4030和ORA-4031错误发生时,操作系统(OS)不能分配足够的内存块,以支持一个正在运行的进程的内存消耗。简要了解Oracle的内存架构,将揭示一些关于这个问题的办法。

Oracle使用的内存来存储会话连接到数据的底层上,本次回话产生进程的相关信息有正在执行的程序代码,使用过程中的缓存数据等。Oracle使用的内存的基本结构是:

一)  系统全局区(SGA)组成的数据库缓冲区高速缓存,重做日志缓冲区,共享池,大池。这个区域是一个数据库实例的所有用户共享。 SGA内存被分配在实例中启动。 SGA的大小是由一些数据库(INIT.ORA)参数,如:SHARED_POOL_SIZE,DB_BLOCK_SIZE决定DB_BLOCK_BUFFERS,LOG_BUFFER的。

二)  程序全局区(PGA),栈和数据区组成。这个区域被分配到一个特定的过程中,当用户连接到数据库并启动会话。这方面的专门用于这一进程不共享。 PGA的大小取决于连接时,是由多种因素控制(稍后讨论)。 PGA_AGGREGATE_TARGET的数据库参数确定多少总内存可分配的一个实例中运行的所有进程。

三)  软件代码区是用来存放正在执行的代码的内存部分。当一个Oracle进程从操作系统请求更多的内存,但操作系统无法找到足够的可用内存从PGA分配的ORA-4030错误造成。可能发生如果操作系统没有足够的物理内存或交换空间的过程中提供,或操作系统配置,以限制可用的内存量的过程,或已经遇到一个Oracle错误。ORA-4031错误发生时,有枯竭的SGA区,OS是无法从共享区分配内存。应当指出,将通过这台机器上运行的实例共享一台机器的总RAM。例如,运行2个实例将有2 SGA的分配,余下的将在PGA中的每个实例正在运行的进程之间共享内存。还要注意的是SGA的大小影响PGA的留下的空间量。有时候,我们看到了发展建议减少SGA允许更多的内存分配给PGA(但可以有其他的影响)。

看到以下的项目6.B可能是这个样子的:ORA-4030错误在FDPSTP ORACLE错误4030

原因:FDPSTP失败,由于ORA-04030:进程内存不足时尝试分配16396字节(KOH-kghu呼叫的,PL / SQL VC2)...

括号中的数据告诉我们,记忆体元件失败。在这个例子中,“KOH-kghu呼叫堆和subheap的pmuccst”的通常用于PL / SQL集合和数组一样,索引表等堆转储分析提供了更多细节上的错误(见下面的项目3.E) 。

ORA-4031错误,可能是这个样子

ksedmp:内部或致命错误

ORA-04031:无法分配76488字节的共享内存(“共享池”,“QP_PREQ_GRP”,“PL / SQL的MPCODE”,“BAMIMA:巴姆缓冲区”)

ORA-06508:PL / SQL中:无法找到程序单元被称为本次会议的当前SQL语句:OE_ORDER_IMPORT_MAIN_PVT.ORDER_IMPORT_CONC_PGM(:errbufRC的:A0,内容:A1,A2,A3,A4纸,A5)的结束;...

2.为什么ORA-4030/4031错误会发生

OM套件使用PL / SQL集合的进程中来存储数据。例如,定价发动机采用像qp_preq_lines_tmp表保存在内存中的数据处理定价请求。在处理销售订单,订单的行读入内存如下:

oe_line_util.Query_Rows
(p_line_id => p_line_id,p_header_id => p_header_id,x_line_tbl => x_line_tbl);


这里的订单的所有行读入的“x_line_tbl',这是一个集合的索引表类型存储在PGA内存。多行上的顺序,然后利用更多的内存。

问题发生时,这些藏品长得过大,超过操作系统的物理内存容量。通常情况下,我们看到资源密集的进程正在运行时,如订舱,调度,定价,或进口(可调用其他进程之一)当OM的错误。有时候代码错误可能会导致错误,像游标管理不善,太多的人可能打开游标等。

(参见错误5077005)。


在其他时间可能会出现错误时,操作系统尝试加载到内存中执行一个PL / SQL块或包。例如,有时可能会出现问题时调用了定价引擎,然后执行生成属性映射程序。伴随着次要的错误,例如,我们可能会看到ORA-4030/4031错误:ORA-6508:无法找到程序单元被称为(参见Bug 5357819)。

3.应收集哪些数据

最初,这样的错误应该由服务器技术(ATG)组进行调查,以确保客户的环境是否正确配置为运行Oracle应用程序。他们都有更好的装备审查的内存大小和分配,并告知,如果正遇到任何已知的错误(如内存泄漏)。一旦他们有一定的问题不在于通过调整操作系统参数进行解析,然后在SR应看着由产品工程师(有机质,QP,WSH的,RLM的,锆石等)。如果SR进入该产品的队列中,然后我们应该收集尽可能错误的数据,以帮助ATG组更好地了解失败的过程。在OM,我们需要确定哪个进程失败,什么样的数据量导致系统要强调的。例如,如果进口秩序的过程中错误被命中,那么有多少条记录进行处理之前发生错误:10000或15000或50000等,如果预订失败如在订单上的行数的信息,或是否套正在使用或项目类型(ATO,动力输出等)是非常有用的。

这将有助于我们确定正在打什么样的内存限制,那么我们可以提供一些建议避免错误。

有价值诊断:

一)  获取init.ora文件(或运行bde_chkcbo.sq),以验证数据库参数。 @参数值的详细信息,请参阅未公开说明216205.1(内部说明)。像一个数据库跟踪和调试文件通常诊断将有助于查明当时正在执行的应用程序代码,并可以表明错误使用游标循环等。

二)  检查PGA_AGGREGATE_TARGET(在32位操作系统,这可高达4GB,64位操作系统,它可以是> 4GB)。该参数决定了在一个实例中运行的所有进程(PGA),可分配的内存量。可以使用下面的SQL:SQL> SELECT * GV $ PGASTAT;

三)  你可以看到使用的进程内存(PGA),使用以下查询:只要你启动该程序,找出会话ID的数据库会议(使用oracle_session_id,的fnd_concurrent_requests oracle_process_id列)的表。

SQL> COL名称格式A30的SQL>选择SID,名称,价值从V $ STATNAME N,V $ SESSTAT小号其中sid = - 代替你浓程序会话的SID和n.STATISTIC#= s.STATISTIC#名称如“会话PGA%%%的内存订购3递增;---看到所有会话的PGA的使用SQL> SELECT名称,金额(价值),MAX(价值)从V $ SESSTAT S,V $ STATNAME列印s.statistic#= n.statistic#及(n.name LIKE'%PGA像'%UGA%'%'或n.name)组由n.name;---看到个别为每个会话的PGA使用的SQL>选择SID,名称,价值从V $ SESSTAT S,V $ STATNAME列印s.statistic#= n.statistic#及(n.name LIKE'%PGA像'%UGA%'%'或n.name)订购SID;



 操作
订单管理套件-在OM库ORA-4030 ORA-4031的错误[原创]
  回复:订单管理套件-在OM库ORA-4030 ORA-4031的错误[原创] 匿名