2012年写过一篇关于Oracle E-Business Suite并发管理器的文章,回头看之前总结的内容还是比较单薄,很多点没说到,最近在看这块的内容,索性再写一篇稍微完整的文章来。
Oracle E-Business Suite并发处理机制(Current Processing)的好处
区别于普通功能的处理机制,并发处理机制其实是一个异步处理机制,它把程序放到后台来运行,前台的操作还给用户,允许用户可以继续做其他业务。
技术上将,异步处理的好处是降低系统特定时间点的负载,提升系统资源的整体使用率。感受上讲,异步的机制可以有效提升整体的使用感受,减少用户无效的等待时间。
什么样的程序可以用并发机制来处理
报表类
报表是一种非常个性化的东西,一般也是每家公司客户化最多的部分,如果为报表需求都开发不同的列表界面来查询、展示,那么工作量将是巨大的。所以Oracle把报表嵌入到并发处理中,通过一些灵活的配置或少量的开发(Reports/BI Publisher Reports)既可以实现用户各类报表的需求.
流程类
多用于批量事务处理,或是长时间运行的业务,如库存管理器批量处理接口表中的临时事务。
并发处理机制(Current Processing)的两类组件
并发处理机制(Current Processing)包括两类组件:
- 并发管理器(Concurrent Managers)
- 并发请求(Concurrent Requests)
像公司中“经理”一样,Manager给Worker安排任务,Worker负责具体的执行。Oracle EBS中的Concurrent Managers就是负责安排工作,Concurrent Requests负责具体的执行。
并发管理器(Concurrent Managers)的分类
一家企业一般都有许多的经理,有着高低之分,总裁、总监、经理、主管....Oracle EBS这家企业中,同样也有着许多不同层面上的Concurrent Manager,有核心的Concurrent Managers管理团队(Internal Concurrent Manager、Standard Manager、Conflict Resolution Mananger),也有普通Concurrent Managers。核心的Concurrent Managers团队管理下边普通Concurrent Managers。
1.核心的三个并发管理器:
- Internal Concurrent Manager(内部管理器) — The master manager is called the Internal Concurrent Manager (ICM) because it controls the behavior of all of the other managers, and because the ICM is the boss, it must be running before any other managers can be activated. The main functions of the ICM are to start up and shutdown the individual concurrent managers, and reset the other managers after one them has a failure.
- Standard Manager(标准管理器) — Another important master Concurrent Manager is called the Standard Manager (SM). The SM functions to run any reports and batch jobs that have not been defined to run in any specific product manager. Examples of specific concurrent managers include the Inventory Manager, CRP Inquiry Manager, and the Receivables Tax Manager.It is not recommended to add specialization rules to the standard manager as it can cause problems.
- Conflict Resolution Manager(冲突解决管理器) — The Conflict Resolution Manager (CRM) functions to check concurrent program definitions for incompatibility rules. However, the ICM can be configured to take over the CRM‘s job to resolve incompatibilities.
小结:
- Internal Concurrent Manager是管理器中的BOSS,总负责人,控制着其他并发管理器的运作。
- Standard Mananger是标准管理器,没有纳入其他特定管理器(Specific Concurrent Managers)的请求,默认就会由标准管理器管理。
- Conflict Resolution Manager主要用于处理日程冲突。
2.特定用途的并发管理器(Specific Concurrent Managers ,SCM)
除了上边说的三个核心并发管理器,还有众多的特定用途的并发管理器,如库存管理员(Inventory Manager),接收事务处理管理器(Receiving Transaction Manager),MRP Manager,以及用户自定义的并发管理器。
并发管理器是如何管理并发请求的
并发请求从提交到运行大概的过程是这样的:用户首先提交并发程序运行请求,并发请求会首先放入请求队列中,再由Internal Concurrent Manager根据特定的规则找到对应的Concurrent Manager(是Standard Manager,还是特定的并发管理器)来运行这些请求。下图为一个典型的并发管理器管理并发请求的流程图:
并发管理器的定义
并发管理器(Concurrent Manager) = 参数(缓存大小、节点设置...) + 特殊规则(Specialization Rules) + 工作班次(Work Shifts)
并发管理器的定义路径:系统管理员职责->并发->经理->定义,定义过程也可以参考官方文档:Link。以Inventory Manager为例,下图为库存管理器的定义界面。
Cache Size:这个数字表示并发管理器每次读取多少请求来运行。
Enter the number of requests your manager remembers each time it reads which requests to run. For example, if a manager‘s work shift has 1 target process and a cache value of 3, it will read three requests, and try to run those three requests before reading any new requests.
Tip: Enter a value of 1 when defining a manager that runs long, time-consuming jobs, and a value of 3 or 4 for managers that run small, quick jobs.
Node:这个是并发管理器负载均衡的设置,即Parallel Concurrent Processing(PCP)。如果服务器是多节点的,那么可以在这里设定并发管理器以哪个节点为主节点运行,哪个节点为辅节点。
If you are operating in a parallel concurrent processing environment and you want your manager to operate on a specific node, select the name of the node.
The primary node, if available, is the node your concurrent manager operates on. If the primary node or the database instance on it goes down, your concurrent manager migrates to its secondary node. Your concurrent manager migrates back to its primary node when that node becomes available.
特殊规则(Specialization Rules)中设定并发管理要包括/排除的并发请求。
工作班次(Work Shifts)中赋予Inventory Manager并发管理器的运行班次(Work Shift),运行班次决定了并发管理什么日子、什么时间来运行。
流程(Processes):这个字段Oracle EBS中文翻译的有问题,官方翻译成“流程”,我觉翻译成“进程”更好,这个参数表示,对于每个班次, Concurrent Manager能够调用最大操作系统层的进程数量来并发处理请求。
休眠秒(Sleep Seconds):表示班次间的间隔时间。
The sleep time for your manager during this work shift. Sleep time is the number of seconds your manager waits between checking the list of pending concurrent requests (concurrent requests waiting to be started).Tip: Set the sleep time to be very brief during periods when the number of requests submitted is expected to be high.
如何判断并发管理器是否正常运行
系统管理员职责,Concurrent->Managers->Administer,如果Target和Actual相等,并且都大于0,则表示并发管理器为启动和运行状态。
- The Target column lists the number of processes that should be running for each manager for this particular workshift.
- The Actual column lists the number of processes that are actually running.
If the Actual column is zero, there are no processes running for this manager.
If the Target column is zero, then either a workshift has not been assigned to this manager, or the current workshift does not specify any target processes.
If the target column is not zero, then the manager processes have either failed to start up,or gone down. One should check the manager‘s logfile and the ICM logfile. One can also search for OS processes using the ‘ps‘ command.It is possible for the form to be inaccurate, i.e. it may show actual processes even though they are not really running. When in doubt, check for processes at the OS level.
操作系统下如何检查Concurrent Mananger的运行情况
FNDLIBR进程是否启动,这个表示Internal Concurrent Manager进程是否运行
ps -ef | grep FNDLIBR
FNDLIBR process indicates that concurrent mnagers are up and requests are running on the system.Sometimes it happens that even after stopping the concurrent managers by adcmctl.sh stop apps/apps some of the requests might continue running. In such cases you can wait for say 5 minutes and then if it dos not stop then you can kill those FNDLIBR processes bykill -9 <processid>
其他Application Concurrent Manager
INVLIBR is the process for the following Managers
Manager to run Immediate Concurrent Programs defined in INVLIBR
[[email protected] ~]$ ps -ef | grep INVLIBR
oracle 7111 7004 0 Jul03 ? 00:00:07 INVLIBR
oracle 14016 13573 0 19:40 pts/5 00:00:00 grep INVLIBR
[[email protected] ~]$
MRCLIB is the process for the following Managers
MRP Manager
[[email protected] ~]$ ps -ef | grep MRCLIB
oracle 7113 7004 0 Jul03 ? 00:00:06 MRCLIB
oracle 14024 13573 0 19:40 pts/5 00:00:00 grep MRCLIB
[[email protected] ~]$
PALIBR is the process for the following Managers
PA Streamline Manager
[[email protected] ~]$ ps -ef | grep PALIBR
oracle 7110 7004 0 Jul03 ? 00:00:06 PALIBR
oracle 14003 13573 0 19:39 pts/5 00:00:00 grep PALIBR
[[email protected] ~]$
并发管理器/并发请求的日志在哪里?
可参考Metalink Note 105133.1:Concurrent Processing - Concurrent Manager Generic Platform Questions and Answers
- Where do concurrent request or manager logfiles and output files go?
- What are the logfile and output file naming conventions?
Current Processing Tables
表 | 说明 |
---|---|
FND_CONCURRENT_REQUESTS | Details of user requests, including status, start date, and completion date |
FND_CONCURRENT_PROGRAMS | Details of concurrent programs,including execution method, whether the program is constrained, and whether it must be run alone. |
FND_CONCURRENT_PROCESSES | Cross-references between concurrent requests and queues,and a history of concurrent manager processes |
FND_CONCURRENT_QUEUES | Information about each of the concurrent manager queues |
也可以参考我之前的一篇文章:http://blog.csdn.net/pan_tian/article/details/7702103
Oracle原厂提供并发相关的脚本 - $FND_TOP/sql Scripts
- afimchk.sql - Tells the status of the ICM
- afcmstat.sql - Lists active manager processes
- afrqrun.sql - Lists all the running, waiting and Terminating requests
- afrqwait.sql - Lists requests that are constrained and waiting for the ICM to release them.
- afrqscm.sql - Prints log file name of managers that can run a given request.
- afcmcreq.sql - Prints the log file name of the manager that processed the request
- afrqstat.sql - Summary of completed concurrent requests grouped by completion status and execution type..
- afimlock.sql - Lists locks that the ICM is waiting to get
- afcmrrq.sql - Lists managers that currently are running a request
运行步骤:
1.sqlplus apps/[email protected]
2.SQL> @$FND_TOP/sql/afimchk.sql
参考
Specialized / Dedicated Concurrent Managers (Enhancing Performance)
Concurrent manager in Oracle Apps
Best Practices for Performance for Concurrent Managers in E-Business Suite (Doc ID 1057802.1)
Best Practices for Performance for Concurrent Managers in E-Business Suite
EBS - Technology Area - Webcast Recording ‘E-Business Suite - Concurrent Manager Performance - Best Practices‘ [video] (Doc ID 1367676.1)
Concurrent Manager Questions and Answers Relating to Generic Platform [ID 105133.1]
Basic information about Concurrent Managers (Doc ID 69336.1)
Concurrent Processing - Concurrent Manager Generic Platform Questions and Answers (Doc ID 105133.1)
转载请注明出处:http://blog.csdn.net/pan_tian/article/details/42967585