Apps Listener——FNDSM 和 FNDFS

ebs Application Listener 


FNSFS:

[appltest@vs155 ~]$ lsnrctl status APPS_TEST

LSNRCTL for Linux: Version 10.1.0.5.0 - Production on 24-JUN-2015 19:51:02

Copyright (c) 1991, 2004, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=TCP)(Host=vs155)(Port=1636))
STATUS of the LISTENER
------------------------
Alias                     APPS_TEST
Version                   TNSLSNR for Linux: Version 10.1.0.5.0 - Production
Start Date                13-MAY-2015 21:44:02
Uptime                    41 days 22 hr. 7 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/TEST/inst/apps/TEST_vs155/ora/10.1.2/network/admin/listener.ora
Listener Log File         /u01/TEST/inst/apps/TEST_vs155/logs/ora/10.1.2/network/apps_test.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vs155.hand-china.com)(PORT=1636)))
Services Summary...
Service "FNDFS" has 1 instance(s).
  Instance "FNDFS", status UNKNOWN, has 1 handler(s) for this service...
Service "FNDSM" has 1 instance(s).
  Instance "FNDSM", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

[appltest@vs155 ~]$ cd $ADMIN_SCRIPTS_HOME 
[appltest@vs155 scripts]$ adalnctl.sh status

adalnctl.sh version 120.3

Checking status for listener process APPS_TEST.

LSNRCTL for Linux: Version 10.1.0.5.0 - Production on 24-JUN-2015 19:51:51

Copyright (c) 1991, 2004, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=TCP)(Host=vs155)(Port=1636))
STATUS of the LISTENER
------------------------
Alias                     APPS_TEST
Version                   TNSLSNR for Linux: Version 10.1.0.5.0 - Production
Start Date                13-MAY-2015 21:44:02
Uptime                    41 days 22 hr. 7 min. 49 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/TEST/inst/apps/TEST_vs155/ora/10.1.2/network/admin/listener.ora
Listener Log File         /u01/TEST/inst/apps/TEST_vs155/logs/ora/10.1.2/network/apps_test.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vs155.hand-china.com)(PORT=1636)))
Services Summary...
Service "FNDFS" has 1 instance(s).
  Instance "FNDFS", status UNKNOWN, has 1 handler(s) for this service...
Service "FNDSM" has 1 instance(s).
  Instance "FNDSM", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

adalnctl.sh: exiting with status 0

adalnctl.sh: check the logfile /u01/TEST/inst/apps/TEST_vs155/logs/appl/admin/log/adalnctl.txt for more information ...  

同数据库一样,这个监听可以使用tnsping来ping通,可以通过查看tnsnames.ora文件,来获得对外提供的服务名。

The Basics About Report Review Agent (FNDFS) on 11i (Doc ID 111383.1)
 
FNDFSor the Report Review Agent (RRA)is the default text viewer within Oracle Applications, which allows users to view report output and log files. Report Review Agent is also referred to by the executable FNDFS. The default viewer must be configured correctly before external editors or browsers are used for viewing requests.

Since requests are run on the concurrent processing server on the database tier,the reports must be brought to the client for viewing. Oracle Application supplies a default text viewer called Report Review Agent. This is done by creating a database alias called FNDFS_ (and a "fake" SID called FNDFS), which, 
when called using the connect string found in the tnsnames.ora, launches the FNDFS executable.

With multiple $APPL_TOPs on a single Concurrent Processing Server, you can choose to have one or more Report Review Agent services. If you choose to use a singleRRA, then only one FNDFS executable is utilized; if you choose to use multiple RRA services, then the profile option RRA: Service Prefix must be set to the 
service name used for that product group.

II. How does Report Review Agent work?

A user runs a request from the FNDRSRUN form. For example, the user runs the Active Users report. The concurrent manager processes the request and produces output. The user makes a request to view the report. The system profile option RRA: Enabled has been checked to make sure the value is set to Yes. The file name and node name of the host is selected from the database. FNDFS_ (or whatever value is stored in the RRA: Service Prefix) is then added to what was returned for the node name. 

For example, if ORACLE is returned for the value of the node name, the result would be FNDFS_ORACLE. 
If there is a value for the RRA: Service Prefix, for example, AOLCOMMON and the node name is ORACLE, the result would be AOLCOMMON_ORACLE. (Only the name of the entry is changed, not the SID or other parts of the tnsnames.ora and listener.ora.) 

SQL*Net then tries to make a connection. It looks for an entry in the tnsnames.ora file for FNDFS. If the connection is made, the listener.ora file is used to 
resolve the FNDFS_oracle SID found in the tnsnames.ora file. The PROGRAM, with the path to the FNDFS executable, is then launched. FNDFS runs and returns the selected file. The default viewer is then launched and the report is passed to be viewed by the user.

Basic function of FNDFS
======================
1) The user selects ‘Request Output’, ‘Request Log’, or ‘Manager Log’

2) The file name and nodename are selected from the database Reports:

Outfile: 

SELECT outfile_name, outfile_node_name FROM fnd_concurrent_requests WHERE request_id = :id;

Logfiles:

SELECT logfile_name, logfile_node_name FROM fnd_concurrent_requests WHERE request_id = :id;

Manager logs:

SELECT logfile_name, node_name FROM fnd_concurrent_processes WHERE concurrent_process_id = :process_id;

3) The client takes the nodename that was returned and adds FNDFS_ to the beginning of it. For example, if xprod_ser1 was returned as the node name, the client would construct the string: FNDFS_xprod_ser1

4) The client takes this string and attempts to use it as a SQL*Net connect descriptor. SQL*Net will attempt to resolve this descriptor  into a host and SID using a local tnsnames.ora file or Oracle Names.

5) If successfully resolved, a connection is made to the given host. The listener on this host receives the connection request, and resolves the SID using its listener.ora file. If it finds a PROGRAM parameter listed for this SID, it will launch this program. (which should be $FND_TOP/bin/FNDFS)

6) The FNDFS executable runs. The client sends RPC commands to it to return the requested file.

Common error :

An error occurred while attempting to establish an application file server connection with the node There may be a network connection
problem or the listener on node may not be running.


-This can indicate a multitude of problems, and unfortunately, it does not display anymore helpful messages.

-This most commonly indicates a problem with the local tnsnames.ora file or the listener.ora file on the server. Check that the customer added an FNDFS entry to the tnsnames.ora file.

-Check that the hostname and port are correct. Make sure that the entry is named FNDFS_hostname. Also, if the customer has edited the file himself, he may have inadvertently corrupted the file. SQL*Net is very picky about the syntax of this file.

-An extra space or carriage return could cause RRA to fail. The only supported method of editing this file is to use Network Manager. Have the customer backup the old file, then create a new one with Network Manager if you suspect that this file may be bad.

-Once you are sure the tnsnames.ora file is correct, you should be able to use TNSPing to ping the listener. (Be sure to ping the FNDFS alias) It should return an OK result.

-Errors here may indicate that the listener is not properly set up.

-Make sure that you are using the exact name of the server (check this with: uname -n) If you have the wrong name in the tnsnames file entry, the tnsping will work, but RRA will not. For example, suppose the server’s real name is XPROD_SER1, and you
create a tnsnames entry called: FNDFS_DBSERV because you have a DNS alias for this server. You can ping the server normally, because DNS will resolve this name for you. You can run TNSPing with FNDFS_DBSERV and it will resolve this connect string and it will ping the server and return an OK result. This would lead you to believe that everything is OK on the client side. However, RRA still does not work. This is because RRA is using the real server name, and it is trying to resolve the connect string  NDFS_XPROD_SER1, and this entry does not exist. A client-side trace would discover this error.

FNDSM is the Service manager(服务管理器). FNDSM is executable & core component in GSM ( Generic Service Management Framework通用服务管理框架 ). You start FNDSM services via APPS listener on all Nodes in Application Tier.为什么能够通过APPS Listener启动应用层的SM(服务管理器)呢?——因为在监听的配置文件中有如下代码:

[appl02@vs009 admin]$ echo $TNS_ADMIN 
/u01/VIS02/inst/apps/VIS02_vs009/ora/10.1.2/network/admin

[appl02@vs009 admin]$ls
listener.ora  tnsnames.ora

[appl02@vs009 admin]$ cat listener.ora 
# $Header: admk80ln_ux.sql 120.9 2007/03/09 04:31:05 sbandla ship $
# LISTENER.ORA For Oracle Applications
# This file is automatically generated
APPS_VIS02 =
  (ADDRESS_LIST =
    (ADDRESS= (PROTOCOL= TCP)(Host= vs009)(Port= 1628))
  )
SID_LIST_APPS_VIS02 =
  (SID_LIST =
    ( SID_DESC = ( SID_NAME = FNDSM )
                 ( ORACLE_HOME = /u01/VIS02/apps/tech_st/10.1.2 )
                 ( PROGRAM = /u01/VIS02/apps/apps_st/appl/fnd/12.0.0/bin/FNDSM)
                 ( envs='MYAPPSORA=/u01/VIS02/apps/apps_st/appl/APPSVIS02_vs009.env,PATH=/usr/bin:/usr/ccs/bin:/bin,FNDSM_SCRIPT=/u01/VIS02/inst/apps/VIS02_vs009/admin/scripts/gsmstart.sh' )
    )
    ( SID_DESC = ( SID_NAME = FNDFS  )
                 ( ORACLE_HOME = /u01/VIS02/apps/tech_st/10.1.2 )
                 ( PROGRAM = /u01/VIS02/apps/apps_st/appl/fnd/12.0.0/bin/FNDFS )
                 ( envs='EPC_DISABLED=TRUE,NLS_LANG=American_America.AL32UTF8,LD_LIBRARY_PATH=/u01/VIS02/apps/tech_st/10.1.2/lib32:/u01/VIS02/apps/tech_st/10.1.2/lib:/usr/X11R6/lib:/usr/openwin/lib:/u01/VIS02/apps/tech_st/10.1.2/jdk/jre/lib/i386:/u01/VIS02/apps/tech_st/10.1.2/jdk/jre/lib/i386/server:/u01/VIS02/apps/tech_st/10.1.2/jdk/jre/lib/i386/native_threads:/u01/VIS02/apps/apps_st/appl/sht/12.0.0/lib,SHLIB_PATH=/u01/VIS02/apps/tech_st/10.1.2/lib32:/u01/VIS02/apps/tech_st/10.1.2/lib:/usr/X11R6/lib:/usr/openwin/lib:/u01/VIS02/apps/tech_st/10.1.2/jdk/jre/lib/i386:/u01/VIS02/apps/tech_st/10.1.2/jdk/jre/lib/i386/server:/u01/VIS02/apps/tech_st/10.1.2/jdk/jre/lib/i386/native_threads:/u01/VIS02/apps/apps_st/appl/sht/12.0.0/lib,LIBPATH=/u01/VIS02/apps/tech_st/10.1.2/lib32:/u01/VIS02/apps/tech_st/10.1.2/lib:/usr/X11R6/lib:/usr/openwin/lib:/u01/VIS02/apps/tech_st/10.1.2/jdk/jre/lib/i386:/u01/VIS02/apps/tech_st/10.1.2/jdk/jre/lib/i386/server:/u01/VIS02/apps/tech_st/10.1.2/jdk/jre/lib/i386/native_threads:/u01/VIS02/apps/apps_st/appl/sht/12.0.0/lib,APPLFSTT=VIS02_BALANCE;VIS02_FO;VIS02,APPLFSWD=/u01/VIS02/inst/apps/VIS02_vs009/appl/admin;/u01/VIS02/inst/apps/VIS02_vs009/appltmp;/u01/VIS02/apps/apps_st/comn/webapps/oacore/html/oam/nonUix/launchMode/restricted' )
    )
  )
STARTUP_WAIT_TIME_APPS_VIS02 = 0
CONNECT_TIMEOUT_APPS_VIS02 = 10
TRACE_LEVEL_APPS_VIS02 = OFF
LOG_DIRECTORY_APPS_VIS02 = /u01/VIS02/inst/apps/VIS02_vs009/logs/ora/10.1.2/network
LOG_FILE_APPS_VIS02 = APPS_VIS02
TRACE_DIRECTORY_APPS_VIS02 = /u01/VIS02/inst/apps/VIS02_vs009/logs/ora/10.1.2/network
TRACE_FILE_APPS_VIS02 = APPS_VIS02
ADMIN_RESTRICTIONS_APPS_VIS02 = ON
IFILE = /u01/VIS02/inst/apps/VIS02_vs009/ora/10.1.2/network/admin/VIS02_vs009_listener_ifile.ora
SUBSCRIBE_FOR_NODE_DOWN_EVENT_APPS_VIS02 = OFF

这个文件也就说明了,监听程序里,配置了SM(服务管理器)的程序路径,环境变量,PATH等运行所需要的所有信息。

Service Managers are spawned(被产生) on the middle-tier nodes of a GSM enabled system in order to act as an agent of the ICM(SM在系统中被产生,作为一个ICM(内部并发管理器)的代理程序). When the ICM sees that it needs An SM to perform some function, such as start a concurrent manager process, on a middle-tier node, it will make remote procedure  control calls to the Apps listener on that node to start the Service manager(当ICM发现有需要运行的请求,ICM就会通过一个远程调用,调用APPS Listener去启动SM). Once the Service Manager has been started and initialized, the ICM communicates directly to the SM through RPC, giving it information to manage the services on that node(一旦SM启动了,ICM通过RPC直接和SM交流,提供给SM信息,去管理这个SM).

-The Service manager is spawned from the APPS TNS Listener

- The APPS TNS Listener must be started on every middle-tier node in the system, and started by the user that starts ICM(e.g. applmgr)

-TNS Listener spawns Service Manager to run as agent of ICM for the local node

-The Service Manager is started by ICM on demand(一旦需要) when needed. If no management actions are needed on a node, a Service Manager will not be started by ICM until necessary. When ICM exits its Service Managers exit as well.

-The Service Manager environment is set by APPSORA.env as defined in listener.ora

-The listener.ora and tnsnames.ora files must be configured properly for the listener to be able to spawn the Service Manager and for the ICM to be able to check the status of the Service Manager. 


补充下ICM和SM在操作系统上的进程关系:

oracle 官方文档中,有如下描述:

When the ICM is initiated on UNIX, the $FND_TOP/bin/startmgr program is invoked.

This calls $FND_TOP/bin/batchmgr, which then:
1. Starts a shell process.
2. Starts the ICM process using the command FNDLIBR, with startup parameters  FND, CPMGR, and FNDCPMBR.
3. Creates log files (std.mgr and wnnn.mgr) in $APPLCSF/$APPLLOG.

通过如下进程查看,目测28146就是这个shell进程,然后他启动了ICM,也就是28151进程。当然这个时候如果不需要并发管理器,ICM就不会去启动FNDSM进程,如果收到了应用listener的请求,说是有并发请求需要某个特定的并发管理器去跑,这样就会请求启动FNDSM(注意这个是os直接启动,父进程号是1),然后由FNDSM去启动ICM管理的其他并发管理器。

[appl04@test248 log]$ ps -fu appl04
UID        PID  PPID  C STIME TTY          TIME CMD

appl04   28146     1  0 Jun12 ?        00:00:00 sh
appl04   28151 28146  0 Jun12 ?        00:01:10 FNDLIBR                            
appl04   28247 27701  0 Jun12 ?        00:29:24 /u01/VIS04/app/fs1/EBSapps/comn/uti
appl04   28289     1  0 Jun12 ?        00:00:01 FNDSM
appl04   28345 28289  0 Jun12 ?        00:00:01 RCVOLTM apps/ZG3533039134971EFCEB43
appl04   28348 28289  0 Jun12 ?        00:00:00 POXCON apps/ZG6F2F844025759208B82DF
appl04   28349 28289  0 Jun12 ?        00:00:00 INCTM apps/ZGE1BE696768335F9D33CF9F
appl04   28360 28289  0 Jun12 ?        00:00:41 /u01/VIS04/app/fs1/EBSapps/comn/uti
appl04   28361 28289  0 Jun12 ?        00:00:09 FNDCRM apps/ZG27D5BF7068DA4A156F2F2
appl04   28362 28289  0 Jun12 ?        00:00:06 FNDSCH                             
appl04   28363 28289  0 Jun12 ?        00:00:01 FNDLIBR                            
appl04   28364 28289  0 Jun12 ?        00:00:00 FNDLIBR                            
appl04   28365 28289  0 Jun12 ?        00:00:00 FNDLIBR                            
appl04   28368 28289  0 Jun12 ?        00:00:00 INVLIBR                            
appl04   28370 28289  0 Jun12 ?        00:00:02 FNDLIBR             

时间: 2024-09-13 22:43:16

Apps Listener——FNDSM 和 FNDFS的相关文章

EBS DBA 问题问答

1) Why do we keep the same password for APPS & APPLSYS ? This is required during Oracle Applications Login. The process is as follows : a) Initial Sign on (http://hostname.domain.com:port) This uses APPLSYSPUB schema to authenticate and validate AOL

Windows 8 Store Apps学习(62) 通信: Socket TCP, Socket UDP

介绍 重新想象 Windows 8 Store Apps 之 通信 Socket - Tcp Demo Socket - 实现一个自定义的 http server Socket - Udp Demo 示例 1.演示 socket tcp 的应用(本例既做服务端又做客户端) Communication/Socket/TcpDemo.xaml <Page x:Class="XamlDemo.Communication.Socket.TcpDemo" xmlns="http:

重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP

原文:重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP [源码下载] 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 通信 Socket - Tcp Demo Socket - 实现一个自定义的 http server Socket - Udp Demo 示例1.演示 soc

Windows 8 Store Apps学习(39) 契约: Share Contract

介绍 重新想象 Windows 8 Store Apps 之 契约 Share Contract - 右侧边栏称之为 Charm,其 中的"共享"称之为 Share Contract 示例 1.演示如何开发共享源 Contracts/ShareContract/ShareSource.xaml <Page x:Class="XamlDemo.Contracts.ShareContract.ShareSource" xmlns="http://sche

office web apps-Asp.net整合Office Web Apps,Word无法编辑的问题

问题描述 Asp.net整合Office Web Apps,Word无法编辑的问题 Excel PowerPoint 都可以预览并编辑,但是Word无法编辑,这个问题怎么解决呀. 样例地址:https://code.msdn.microsoft.com/office/Building-an-Office-Web-f98650d6 解决方案 我添加了日志,当格式为docx时 Request.Header中X-WOPI-Override为cobalt

常用的Facebook Apps实用工具

Facebook平台下的有很多优秀的Apps实用工具,大量的第三方工具极大扩展了Facebook的功能和应用,给Facebook带来了巨大的成功.在Facebook海量的实用工具中,我挑选了几个优秀的Apps推荐给大家,安装后会令大家的Facebook功能得到很大的增强,以下是这些应用程序清单和介绍. Twitter - 可以将Twitter发布的信息同步到Facebook,也可以在Facebook发布信息到Twitter上,这是Twitter官方页面推荐的实用工具,同步速度非常快,Twitte

Web Apps的绝佳案例:Web Apps的特性

文章描述:Google Web App开发指南第一章:什么是Web Apps? 很多人向我问起学习HTML5技术的权威入门资料,我总是毫不犹豫地推荐由Google推出的HTML5rocks,这个网站就像一个宝库,包含经典的教程.文章.Demo和代码.近日 Chrome小组又推出了一个很酷的Web App电子书,讲述了Chrome开发人员对Web Apps的思考和最佳实践,推荐每个关注Web Apps的开发者阅读.Web AppTrend为方便国内开发者浏览,将全文进行翻译. 注:这本书就是一个W

Oracle 8i TNS Listener 缓冲区溢出漏洞

Oracle 8i TNS Listener 缓冲区溢出漏洞 (Other,缺陷)     Oracle 8i 发现重大漏洞,允许攻击者执行任意代码 详细: Oracle 8i TNS (Transparent Network Substrate) Listener 负责建立和维系客户机同 ORACLE 数据库服务的远程连接.发现该 Listener 存在缓冲区溢出漏洞.攻击者成功利用此漏洞,将能在数据库服务器上执行任意代码. 更为糟糕的是,缓冲溢出发生在验证之前,这意味着激活了口令保护机制的

.NET P2P: Writing Peer-to-Peer Networked Apps with the Microsoft .NET Framework

p2p NET P2P: Writing Peer-to-Peer Networked Apps with the Microsoft .NET Framework Lance Olson This article assumes you're familiar with HTTP and .NET Level of Difficulty 1 2 3 Download the code for this article: NetPeers.exe(66KB) Browse the code fo