Loader Worker 和Sql*Loader 参数
Posted on March 25, 2010 - Filed Under Database, E-Business Suite | Leave a Comment
之前介绍过MRP技术概览,其中有一个过程便是Loader Worker(装入程序工作流程),该过程实际上是通过Sql*Loader从操作系统数据文件中将数据加载到数据库中。而在主计划设置选项中,其中一项是设置Sql*Loader参数: 那么这些参数究竟是什么含义?我们又如何通过调整这些参数来优化Loader Worker的性能呢? 先来观察Loader Worker,会发现其执行时有两个或三个参数,如: CTRL_FILE=/u08/test/prodcomn/admin/out/TEST/M1922497MRLD_ITEMS.ctl DATA_FILE=/u08/test/prodcomn/admin/out/TEST/M1922497MRLD_ITEMS.dat DISCARD_FILE=/u08/test/prodcomn/admin/out/TEST/M1922497MRLD_ITEMS.dis 其中CTRL_FILE和DATA_FILE是每个并发请求都会有的,DISCARD_FILE会在部分并发请求中存在,比如载入MRP_SYSTEM_ITEMS表数据时就有该参数。想要理解这些参数的含义,便要先了解Sql*Loader参数的含义。 Sql*Loader 参数有数十个,相关的有如下几个: CONTROL 该参数指定了一个决定Sql*Loader行为的配置文件,它决定了需要从哪个数据文件读取数据,载入到哪张表里,分别有哪些字段等等。对应于Loader Worker的参数CTRL_FILE。 DATA 该参数指定了数据来源,也就是从哪个数据文件中读取记录。指定的数据文件每行的数据往往有特定的格式,有特定的分隔符区分每个字段的值。对应于Loader Worker的参数DATA_FILE。 DISCARD 该参数指定了一个文件用于记录那些未被正常导入到数据库中的记录。对应于Load Worker的参数DISCARD_FILE。 BINDSIZE Sql*Loader分批从数据文件中读取记录并提交到数据库中,每批的大小是有限制。该参数决定了Sql*Loader从数据文件读取记录大小的上限,除了每次读取的记录数必须小于ROWS指定的数目外,大小上不得超过BINDSIZE所指定的数值。该参数计量单位是Byte。 ROWS (每次Commit的记录数) 在Conventional Path模式时,它限定了bind array最大记录数。在Direct Path模式时,它限定了保存之前从数据文件中读取的最大记录数。它的作用和BINDSIZE类似,只是一个限制了记录数,一个限制了记录大小。 READSIZE (读缓存大小) 该参数仅针对从数据文件载入数据的方式时有效,默认值为64k,最大值因系统平台各有不同。在Conventional Path模式时,bind array 受限于读缓存,也就是说,在系统内存和bind array足够大的前提下,如果读缓存越大,则可以有更多的记录在commit前被读取,这也就意味着载入性能越好。当READSIZE小于BINDSIZE时,则READSIZE会被自动加大。 上述参数中,BINDSIZE和ROWS对应于Sql*Loader参数设置界面的相应字段,其他参数则对应于并发请求的相应参数。
MPS Relief Worker
Posted on February 4, 2010 - Filed Under E-Business Suite | Leave a Comment
mps-relief-worker
EBS的后台执行方式
Posted on January 28, 2010 - Filed Under E-Business Suite | Leave a Comment
ebs-background-process
使用EBS日志功能
Posted on January 9, 2010 - Filed Under E-Business Suite | Leave a Comment
目前,EBS系统中存在多种日志记录方式,有用于PL/SQL的,有用于Java的,有OAF等开发框架自带的,也有Forms Server之类服务器专用的诊断方式。通常来讲,所有二次开发,为了统一规范和便于管理,应当将将客户化系统中日志记录和Oracle EBS中的日志记录进行整合,用统一的方式进行日志记录和诊断。 Oracle EBS调试日志级别 系统中将调试日志级别分为6个级别,分别是: Type Level Description UNEXPECTED 6 未知异常 ERROR 5 错误 EXCEPTION 4 异常 EVENT 3 事件 PROCEDURE 2 过程 STATEMENT 1 语句,该级别最低,记录的日志信息也最详细。 该级别通过配置文件 FND:调试日志级别 控制。 调试日志模块 日志必须指定当前所执行的程序,也就是所谓的模块。模块用于区分不用程序产生的日志,比如我的一套用于将EBS事件通过手机短消息发送出去的整套程序统一定义成日志模块:oracle.apps.cux.msg.transport。如此,不论是简单的PL/SQL、Form或并发程序产生的短信内容,都可以作为一个整体进行日志记录。模块名可以自行定义,该定义需要有意义,并能和其他程序明确区分。该特性由配置文件 FND:调试日志模块 控制。 不需要修改代码,诊断时可以根据需要随时启用或关闭调试日志,由配置文件 FND:启用调试日志 控制。 调用示例 先在程序中创建过程,如: PROCEDURE trace(x_level IN NUMBER, x_message IN VARCHAR2) IS BEGIN IF (x_level >= fnd_log.g_current_runtime_level) THEN IF (fnd_log.test(x_level, [...]
Error: Delivery xxxx cannot be Ship Confirmed
Posted on December 9, 2009 - Filed Under E-Business Suite | Leave a Comment
一切正常操作,但是在做发运确认时,依旧提示如下错误: Error: Delivery [xxxx] cannot be Ship Confirmed. For more information click the details button. 点击查看错误明细: Error: In delivery [xxxx] , the total shipped quantity for order number [xxxxx] exceeds the tolerance.The source system for this order is Project Contracts. The maximum shipped quantity allowed for the line [xxxxxx] within this delivery is 30. Actions [...]
no valid responsibilities available
Posted on November 17, 2009 - Filed Under E-Business Suite | Leave a Comment
案例:用户的职责中存在一个form,从Web页面登录后点击form,出来错误信息:“对不起,不存在可用的有效责任”,英文信息为:“Sorry, no valid responsibilities available”。如果cgi模式下,从其他职责切换过去则正常。 检查职责定义发现Responsibility Key(责任关键字)值是中文——这是很糟糕的习惯,任何key-like的存在都不应该出现ASCII(如英文字母、数字、下划线等)之外的字符。Oracle数据库虽然支持索引字段使用中文,甚至字段名都可以用中文,但是对于EBS这种大型应用而言,使用中文便存在风险。在此案例中,职责Responsibility Key用中文貌似正常,但是职责信息需要被同步到其他地方,而同步程序,你不能保证它会正常工作。 这其实是一个常见问题。解决办法也很简单,正常途径是新建职责(使用英文责任关键字),然后替换下用户的职责即可。非正常途径如下: 在数据表(FND_RESPONSIBILITY)中将RESPONSIBILITY_KEY修改为英文字符。 执行并发请求Sync responsibility role data into the WF table(使责任职责数据与 WF 表同步) 清理缓存。路径:Functional Administrator -> Core Services -> Caching Framework -> Global Configuration -> Clear All Cache P.S: 关于清理缓存的知识请参考《清理 Oracle EBS 的缓存》。 OK,让用户重新登录吧。
