Oracle Applications – Concepts

根据自己制定的Study Plan [Flickr Image],今天浏览完了Concepts文档,总算在脑子里面有个Oracle EBS大致的轮廓了。

1. Oracle Applications Architecture
典型三层结构,Desktop Tier + Application Tier + Database Tier
Desktop Tier通过浏览器,利用Oracle自己的JVM – JInitiator跟Application Tier通讯,将表单以JAR文件的形式缓存在本地。
Application Tier是业务层,通过自带的Oracle806数据库(Net8)跟底层Database Tier中的Oracle9i通讯,包含这么几个服务:Web server, Forms server, Concurrent Processing server, Reports server, Discoverer server (optional), Admin server。
Database Tier不用多说,业务数据都保存在这个数据库中,EBS11.5.9默认安装Oracle9201,需要手动打patch到9206。

2. Release 11i Enhancements
因为从来没有接触过以前的版本,所以这个Enhancements部分对我而言没什么意义。
只需要登录一次E-Business Suite Home就可以了,不再需要单独登录其它的工具或者产品。
提供了Oracle Applications Manager(OAM)工具来配置,监控,诊断Oracle Applications系统。
Application Tier部分使用了Oracle9iAS。
Database Tier支持且为cost-based optimization (CBO)做了优化,支持Database Resource Manager,支持Partitioned Tables,启用了Invoker Rights功能保证大部分的包都只安装在APPS用户下以节省维护成本,支持实体化视图(MV),支持RAC。

3. Internationalization Support
因为开始支持UTF8字符集,所以不再需要特殊的处理方法,在一个实例中就可以解决多语种问题了。
在任何一层如果选用了UTF8字符集,那么其它层也必须使用此字符集。
在安装的时候就应该筹划好字符集的选择,否则事后再修改是一件困难的工作。

4. File System
这一部分花了一段时间去学习,并且登录了四川移动的开发Portal来比对文档中提到的目录结构,基本上还算明朗,最后自己用SmartDraw画了一个Oracle Application File System Map [Flickr Image] 来清理思路。

还有不少environment setup files以及其中的环境变量需要以后慢慢去熟悉。

5. Data Model
各个产品的数据对象,比如表,索引,约束,序列等,都存在自己的产品用户下,我现在使用的系统中有220个用户,粗略估计一下大概有200个用户是Oracle Applications产品相关的。

SQL> select count(*) from dba_users;

COUNT(*)
----------
220

所有产品的编码对象,比如视图,包,存储过程,函数,触发器等,都保存在APPS用户下,同时每个产品用户都授权给APPS用户访问自己数据的权限,所以我们只需要通过APPS用户就可以直接访问各个产品用户的数据。很明显这个特点让维护成本大大降低。

多组织(Multiple Organization)构架通过分区表来实现,正常情况下,用户访问的是根据分区关键字返回的视图(通过FND_CLIENT_INFO包?),而不会去访问后缀为”_ALL”的基表。

这边没有用到多币种报表(Multiple Reporting Currencies),跳过。

推荐的Release 11i的Oracle9i Server Tablespaces包含:SYSTEM, Rollback, Temporary以及每个产品使用自己的表空间,每个产品有两个表空间,一个给数据用,一个给索引用,通常命名规则是’产品简称+D’表示数据表空间,’产品简称+X’表示索引表空间,比如HRD和HRX。我使用的这个测试环境中,表空间有371个。

SQL> select count(*) from dba_tablespaces;

COUNT(*)
----------
371

Release 11i要求Database Block Size最少是8K。

最后提到了”Sizing Factor”,这里有个奇怪的问题,既然前面已经提到全部产品表空间都是LMT,为什么还要提单个Object的NEXT参数设定?对于LMT的表空间来说NEXT参数还有什么意义?并且居然还强调“Do not use a sizing factor of 0%.”,哪位可以给我一个解答

以上只是很简单的一个印象,文档中的很多东西一时还无法理解,不过感觉有Oracle RDBMS基础,对于理解Oracle Applications会有很大帮助,不管如何,它只是一个应用程序,最终去读取存储在Oracle Database中的数据而已。

BTW:我们的测试环境是IBM AIX。

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
PL/SQL Release 9.2.0.6.0 - Production
CORE 9.2.0.6.0 Production

TNS for IBM/AIX RISC System/6000: Version 9.2.0.6.0 - Production
NLSRTL Version 9.2.0.6.0 - Production

再BTW,我现在周围的情景是,前后左右的女孩儿不停地从抽屉里翻出各种各样的零食塞进嘴里,然后满足地发出“啊哟,好撑啊”的感慨。Cool,下班!