2023年11月28日发(作者:)
ebs系统架构简介1——三层结构上篇
《 Applications DBA 基础》3- 4 系统架构及基本系统管理知识
1. 系统架构介绍
==============
Oracle 的applications 主要包括⼀个⽂件系统,⼀个数据库:
⽽⽂件系统包括:forms(⽤来交互和更新数据)、reports(⽤来显⽰标准的输出数据)、⼀致性程序(提供了⼤容量、⾮交互的数据更新
操作)、程序和sql脚本(管理这个系统)、html和java(⽤来显⽰⽤户界⾯和实现商业应⽤)
数据库包括:数据对象(表、索引等)、代码对象(sql、plsql块,过程、函数、触发器)
分层架构分析:
1、Desktop Tier:
Oracle applications 的架构是 multi-tier 的。不同层有不同的 components 如下:
在Desktop Tier 上既有 典型的HTML界⾯⼜有传统的 FORMS 界⾯ 。FORMS界⾯通过Forms client Applet (Java client Applet的⼀种)与
应⽤服务器联系,下载 有关的JAR file。原来的11i 需要 Oracle 专⽤的JVM, 叫 Jinitiator。 R12 中只需要标准的 J2SE plugin JVM。JAR
⽂件包含了所有需要的类⽂件,⽤来显⽰ebs所有描述性的form表单。
对于form 客户端的applet,⼀般常⽤的jar⽂件在第⼀次session的时候就会下载到本地;但是对于不常⽤的jar⽂件,使⽤的时候才会下载下
来。所有下载下来的⽂件都会cache到本地的客户端,以供后续的会话使⽤,具体的cache⽬录如下:
Settings
C:UsersliuAppDataLocalLowSunJavaDeploymentcache
在R12中,我们可通过java插件的控制台(从哪个java图标点——打开控制⾯板——⾼级——java控制台)
所有对jar⽂件的更新都会被安装到应⽤层,然后才会被⾃动下载到客户端那⼀层。
2、Application Tier:
对应地, 在Application Tier,既有web 服务器,J2EE 服务器,也有传统的 FORMS/Reports 服务器。当然,还有 batch job ⽤的
Concurrent Manager。所以我们可以认为oracle application Tier包括了如下四个服务:
·Web services
·Forms services
·Concurrent Processing server
·Admin server
笼统的看,应⽤层扮演了两个⾓⾊:
1,、集群化不同的服务器(这⾥不是指硬件,是指提供服务的程序如:并⾏处理服务器(concurrent processing server))和服务组来完成
商业逻辑;
2、管理Desktop 和 database层的会话交互。
R12 有 如下 三个 Oracle HOME:
1. RDBMS _HOME: 这是 后台数据库⽤的。(我们稍后介绍)
2. 10.1.2 ORACLE_HOME : ⼜叫做Tools, C, or Developer ORACLE_HOME, 主要是给 FORMS 及 REPORTS ⽤的。(相当于 11i ⾥ 的
8.0.6 ORACLE_HOME。)
3. 10.1.3 ORACLE_HOME :⼜叫做 Web or Java ORACLE_HOME, 主要是给web server (Apache) 及 JAVA (OC4J )⽤的。( 相当于
11i ⾥ 的iAS ORACLE_HOME)
当看完上⾯的图⽚的时候你可能并不是很清晰到底10.1.2 和 10.1.3这两个ORACLE_HOME⽬录⾥到底有什么,或者说到底是什么样⼦,我
⽤secureCRT的⼀个⼩⼯具叫secureFX可以打开linux下的⽂件⽬录结构图:
这样我们⾮常清晰的认识到了这两个ORACLE_HOME⽬录所负责的功能。
2.1 、基于html的应⽤
2.1.1 10.1.3⽬录
还没有讲完,我们单独拿出10.1.3这个oracle home来讲⼀下起其内部机构:
web services是指处理来⾃客户端的请求的⼀个组件(与他处于平⾏关系的是forms 和 reports的组件,在10.1.2中),包括下⾯三个部分:
Web Lisener(就是HTTP Sserver,apache提供的)
OC4J(⽤来运⾏java程序的容器)
OPMN(oracle process manager)
基于html的应⽤有如下特点:
1、没有form界⾯;2、纯html和javascript开发;3、通过执⾏java代码动态⽣成html页⾯;4、对固定的页⾯层,使⽤元数据数据字典;5、
通过直接连接web服务器操作。
oracle applications server 可以分为oracle http server和j2ee的容器:
其中oracle http server 通俗的理解就是⼀个web listener,并且添加了⼀些组件,提供了信息传递到j2ee容器的功能, ⼀般就是apache 的
web服务器。。。
j2ee的容器分为两种:⼀种叫web container⽤来运⾏jsp 和servelet的,能够提供请求的分配,请求并发控制,请求⽣命周期管理。提供了请
求连接到jdbc 的⼀些组件等。。
还有⼀种叫:EJB(enterprise java bean) 它管理着所有的j2ee的应⽤程序(这些应⽤程序对数据库进⾏商业逻辑的操作)
oracle application Server 包含了下⾯三个驱动器,这些驱动器提供了到oracle数据库的⾼扩展⾼可靠的连接:
1)oracle JDBC drivers:oracle的JDBC驱动器,除了提供标准的JDBC api⽀持,还提供扩展的oracle指定的数据类型加强了性能。
2)J2EE Connectors:是j2ee平台的⼀部分,提供了⼀个基于java的解决⽅案,连接不同的应⽤程序服务器和企业信息系统。
3)DataDirect Connect Type 4 JDBC drivers:数据直接的JDBC驱动,对于连接⾮oracle数据⽤的。
2.1.2 、oracle application framework( 应⽤程序开发框架):
oracle applications framework :
oracle应⽤程序开发框架是基于html的开发平台,它是由⼀个: 基于java的应⽤程序层框架和相关的服务 组成,其设计的初衷是⽤来快速的
部署基于html的应⽤程序。
BC4J(business component for java):被包括在JDeveloper中,⽤来创建java的business组件,以表⽰商业逻辑;它还提供了⼀个“java
对象 到 表” 的映射机制。允许应⽤商业逻辑和⽤户界⾯的分离。
最后,我们在整体回顾⼀下HTML 页⾯服务的各个组件如何协同⼯作:
1)⽤户从浏览器⾥点击了⼀下⼀个按钮,这个按钮对应着⼀个函数功能。
2)浏览器转换成URL的访问请求到web listener。
3)web listener 去找OC4J(跑servelet的引擎),说客户要你执⾏某程序,或逻辑运算,并返回给客户结果。
4)Servelet会通过jsp程序去ebs的数据库的 metadata dictionary(元数据字典)取出⼀些表的数据,构造HTML页⾯。
5)HTML页⾯通过web server 返回给⽤户。
那么我们会继续往下想,JSP页⾯是怎么获得的ebs的数据呢?我们从上⾯的第4条继续引申:
1)AOL/J先确认⽤户要访问的page。
2)page 的定义信息(也就是元数据的UI定义信息(metadate UI definition))从数据库层的元数据仓库(metadata Repository)传送到应
⽤层。
3)保存了应⽤逻辑和访问数据库的 BC4J对象 被实例化。
4)java的控制编程组件 根据动态UI规则来⽣成页⾯的定义
5)UIX(HTML UI Generator)解释页⾯的定义,根据UI标准创建响应的html,发送到浏览器。
2.2、 Forms的服务
R12 还有⼤量的 FORMS 界⾯,所以 在服务器上也有 Forms Services。
Forms Services 由如下4个组件:
1)Forms Servlet:
当⼀个⽤户开始了⼀个Forms的应⽤程序,Forms Servlet就是⽤来建⽴最初始的连接,它给客户端返回HTML⽂件,这些HTML⽂件中含有Forms Client
applet(Applet是⼀种特殊的Java程序,它本⾝不能单独运⾏,需要嵌⼊在⼀个HTML⽂件中,借助浏览器或Appletviewer来解释执⾏)
2)Forms Client Applet:
是在客户端浏览器⾥运⾏的⼀个java applet,它为相应的Forms 运⾏时进程(Runtime Process)提供了⽤户界⾯。
3)Forms LIstener Servelet:运⾏在OC4J servelet container中的servelet,它负责如下⼏件事,1、管理每个客户端的Forms运⾏时进程的
⽣命周期;2、管理每个客户端连接到运⾏时进程的⽹络连接;3、通过Oracle Net 这种⽹络基础与oracle数据库进⾏交互;4、缓存客户端
需要的数据,⽐如从数据库⾥取出了好多⾏,可以⼀⾏⼀⾏的发到客户端,其余的先缓存在这⾥⾯。
使⽤forms listener servlet有如下的好处:
1)重建删除的连接
2)少量的机器和多⼝暴露在防⽕墙外,简单的防⽕墙和代理(proxy)服务器的配置
3)在internet上更强健和安全的部署
4)Forms Runtime Process:在Oracle Application Server⾥运⾏的⼀个进程,这个进程维护者客户端applet和数据库的交互。
Oralce Application Server Forms Services Architecture:
我们通过分析⼀个请求的过程,来熟悉⼀下Forms Services 的结构:
1)⽤户打开浏览器,并且为Forms 应⽤程序点了对应的URL地址。
2)HTTP Listener 解释这个URL并显⽰⼀个HTML页⾯,这个页⾯包含⼀个 applet 标签,描述了指向浏览器的Forms Java Client。URL调
⽤Forms Servlet动态的去创建HTML页⾯ 。
The HTTP Listener interprets the URL and displays an HTML page containing an
browser. The URL calls the Forms servlet to create the HTML page dynamically.
3)客户端接收到HTTP Listener 传送过来的HTML⽂件,这个HTML⽂件⽀持请求的信息 定位java类⽂件,这个java类⽂件构造Forms Java
Client;这个HTML⽂件也包含了请求的forms 应⽤程序的信息,传递给Forms Session的参数(如登录信息等)。
The client receives the HTML file served
by the HTTP Listener. The HTML file supplies the information required to locate the Java class files that make up the Forms Java Client. The HTML file also contains information about the requested Forms
application, as well as parameters that get passed to the Forms session, such as login information.
4)浏览器下载Forms Java Client 并启动Java Applet。
5)Forms Java Client Applet 通过HTTP Listener向Forms Listener Servlet 发送⼀个请求,去启动⼀个Forms Session。
6)Forms Listener Servlet收到Forms Java Client发送的请求后,为这个请求启动⼀个Forms Runtime Process。
7)Forms Runtime Process 把来⾃客户端的HTML⽂件指定的模块,还有库⽂件和菜单项等 获得过来。任何的Forms Java Client 和Forms
Runtime Process的交互都是通过Forms Listener Servlet的。
8)⽤户被提⽰输⼊数据库的登录信息,连接到数据库服务器的连接建⽴。
9)现在⽤户可以⽤Forms Application 对数据进⾏操作了。
2.3、Concurrent Manager:
并发管理器(concurrent manager)是并发处理的基础核⼼,承担了⼯作的计划和执⾏,它的本质是:
⼀个在oracle Application 中登记的可执⾏的程序库,作为操作系统的⼀个进程运⾏,运⾏的操作系统进程称为⽬标进程(target
processes,⼀般叫做worker),在同⼀时间⼀个⽬标进程可以启动⼀个并发程序。
并发管理器,可以运⾏任何的并发程序,或指定待定的并发程序,通过“⼯作班次(work shift)” 来指定运⾏的⽇期和时间。
主要负责处理 batch job, ⽐如复杂的报表,涉及⼤量更新的处理等。⽤户在前台提交请求 ( concurrent request),请求会写到 数据库的
表上去,然后,Concurrent Manager 就会读表,⼀个⼀个的进⾏处理。
EBS 有三个⾮常重要的master concurrent magagers:
Internal Concurrent Manager(ICM):它控制所有的其他的manager,可以说他就是⽼⼤,它在所有的manager运⾏之前运⾏。ICM主要的
⼯作就是启动或者关闭其他的concurrent managers,或者重新启动那些失败的managers。
Standard Manager(SM):运⾏那些不在特定manager⾥运⾏的reports和batch jobs,那哪些是specific 的concurrent manager呢?包括:
Inventory Manager,CRP Inquiry Manager,Receivables Tax Manager。
Conflict Resolution Manager (CRM):⽤不相容规则去检查并发程序的定义,然⽽,ICM也可以被配置的,接管CRM的⼯作去解决冲
突。
TransactionManager ⽤来⽀持同步请求处理。通过使⽤管道的⽅式来同步客户端和服务器之间的通信,使⽤
FND_ONOUS功能来实现
Concurrent request的 log 或 output file 会 通过 Report Review Agent ($FND_TOP/bin/FNDFS)送到 FORMS Services,再有
FORMS Services 传给 ⽤户的 browser。
Report Review Agent的详细内容可参看 :
《The Basics About Report Review Agent (FNDFS) on 11i (Doc ID 111383.1)》。
2.4、Admin Server
admin server是指⽤来维护数据库和数据模型的那个节点。
1.使⽤adpatch⼯具应⽤数据库层操作的补丁(d-driver)。(貌似这句话说的有问题,以我现在的理解,adpatch只是针对应⽤的各个模块的,
⽽opatch才是针对三个oracle home的)
2.使⽤adadmin⼯具维护应⽤数据。


发布评论