《Oracle Applications DBA 基础》3- 4 系统架构及基本系统管理知识

Oracle Applications DBA 基础》3- 4 系统架构及基本系统管理知识

3. 系统架构介绍
==============

参考资料:

1. Oracle Applications Concepts
http://download.oracle.com/docs/ ... acrobat/120oacg.pdf

2. Oracle Applications Maintenance Procedures
http://download.oracle.com/docs/ ... robat/r12adproc.pdf

3.《Oracle EBS R12: Install, Patch and Maintain Applications 》之
Applications Components,Environment Files/control scripts/languages,
Applications Filesystems ,Applications Database。

4. <828157.1> Useful Articles for the Oracle E-Business Suite Technology Stack
for Technical Consultant/DBA

--------

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。


对应地, 在Application Tier,既有web 服务器,J2EE 服务器,也有传统的 FORMS/Reports 服务器。
当然,还有 batch job 用的 Concurrent Manager。

针对HTML-Based 的应用, Oracle 开发 Oracle Applications Framework (OAF)。OAF 包括如下
component:
- AOL Java (AOL/J)
- Business Components for Java (BC4J)
- Java Controller
- Metadata UI Definition
- UIX HTML Generator        

OAF 采用 J2EE 的 MVC (Model- View - Controller) 的 design pattern。 所以如果你用过
J2EE MVC 开发,应该不难理解。比一般的 MVC 开发稍微复杂一点的是 HTML 页面的生成是由
存在数据库里面的 metadata dictionary 控制。

R12 还有大量的 FORMS 界面,所以 在服务器上也有 Forms Services。Forms Services 由
Forms listener Servlet (java servlet 的一种, 响应 Forms client applet 的请求) 及
Forms runtime 构成。

Concurrent Manager: 负责处理 batch job, 比如复杂的报表,涉及大量更新的处理等。用户
在前台提交请求 ( concurrent request),请求会写到 数据库的表上去,然后,Concurrent Manager 就会读表,一个
一个的进行处理。

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)》。

Database Tier:

R12 有 如下 三个 Oracle HOME:
1. RDBMS
ORACLE_HOME: 这是 后台数据库用的。
2. 10.1.2 ORACLE_HOME : 又叫做Tools, C, or Developer ORACLE_HOME。 相当于 11i 里 的
8.0.6 ORACLE_HOME。 主要是给 FORMS 及 REPORTS 用的。
3. 10.1.3 ORACLE_HOME :又叫做 Web or Java ORACLE_HOME,  相当于 11i 里 的iAS ORACLE_HOME,
主要是给web server (Apache) 及 JAVA (OC4J )用的。

R12 有各种各样的 应用模块,例如,Finance, HR, CRM, Manufacturing 等,针对一些公用的功能,
Oracle 开发了 Oracle Applications Technology Layer。

Oracle Applications Technology Layer 包含的功能有:
1. Oracle Applications DBA (AD): 就是一些安装,维护用的工具, 包括:
AD Administration (adadmin)
AD Merge Patch
AutoConfig
AutoPatch (adpatch)
Rapid Clone
Rapid Install (rapidwiz)

2. Oracle Application Object Library (FND)
security (responsibility, data group etc), profile option,
concurrent processing
flexfield         
       
3. Oracle Applications Utilities (AU): 维护 整个 Applications 用的,
例如 FORMS 的源文件 等等。
4. Oracle Applications Framework (OAF): 就是我们上面提到的OAF 开发平台。
5. Oracle Workflow (WF): Oracle的 工作流 工具。
6. Oracle Alert (ALR)
7. Oracle XML Publisher (XDO): 开发报表用的,强项是 data 跟 layout 分开。
8. Oracle Applications Manager (OAM): 系统管理用的。

===========================================
Environment Files

R12的环境非常复杂,目录众多,所以 Oracle 准备了很多 Environment Files。

上面提到的三个 Oracle HOME ,每一个 都有各自的 Environment File,另外,
APPL_TOP 也有自己的Environment File。
它们分别是: ( <CONTEXT_NAME> is <SID>_<hostname> )

${RDBMS Oracle HOME}/<CONTEXT_NAME>.env
${10.1.2 Oracle HOME}/<CONTEXT_NAME>.env
${IAS Oracle HOME}/<CONTEXT_NAME>.env
$APPL_TOP/<CONTEXT_NAME>.env

除此以外,Apps Tier 还有一个总的Environment File。
$APPL_TOP/APPS<CONTEXT_NAME>.env

Key Parameters in <CONTEXT_NAME>.env:
APPL_TOP:
ADMIN_SCRIPTS_HOME:
GWYUID:
FND_TOP
AU_TOP:
<product>_TOP
PATH
APPLCSF:
APPLLOG
APPLOUT:
APPLTMP : Temporary Files 的位置
APPLPTMP : PL/SQL output 的位置
INST_TOP

还有一些变量 定义在其他文件,但引用在 <CONTEXT_NAME>.env 里,例如
$APPL_TOP/admin/adovars.env, 它包含有:
JAVA_TOP : all java files
OA_JRE_TOP : jre location
OAH_TOP : HTML files location
LD_LIBRARY_PATH
CLASSPATH

另外,还有一些 Environment file, 例如 adconfig.txt,fndenv.env ,
devenv.env ,但不常用。

有了正确的 Environment file 后, Oracle 提供 Application Tier Server
Control Scripts 给 我们 start/stop/status app tier 的 各个
components。所有的 scripts 都在 ADMIN_SCRIPT_HOME 目录上。

常用的有
cd $ADMIN_SCRIPTS_HOME (  $INST_TOP/admin/scripts )
adstrtal.sh
adstpall.sh
adautocfg.sh
adalnctl.sh
adapcctl.sh
adcmctl.sh
adopmnctl.sh

这些 Environment Files 都是由 Oracle 的 Autoconfig 自动管理。

Oracle Applications 可以支持 NLS 和 MLS。 NLS 指 支持某一种语言,比如中文;
MLS指在一个安装中同时支持几种语言,比如一家公司同一个安装下,既有中国分公司,也有
美国分公司,所以需要同时支持中文和英文。

要支持非英语的语言或同时支持几种语言,就要考虑 Character Sets 的问题。

除了在数据库层要考虑合适的Character Sets外, 还要考虑 database tier,
application tier, 和 desktop tier 三者的 Character Sets 要一致。比如,
如果在 db tier 选了 UTF8,那么 application tier 和 desktop tier 也要 UTF8。

除了语言支持外, Oracle Applications 还有Country-specific Functionalities 以达到
Globalizations 的目的。这在 rapid install 时选择。


============================================================
Oracle Application file systems

了解了 Environment Files 和 start/stop control scripts 后,我们可以进一步了解
Oracle Applications 的 file systems。

先看Database Tier , File System 没什么特别,最简单的就是一个file system装software binary,
一个 file system 装 data。像下面这样:
/u03/db/tech_st/10.2.0
/u04/db/apps_st/data/
       
在Application Tier File System 上, 就主要有
APPL_TOP , COMMON_TOP, TOOLS Oracle HOME,IAS Oracle HOME 和 INST_TOP.

APPL_TOP:                /u01/apps/apps_st/appl
COMMON_TOP:                /u01/apps/apps_st/comn
TOOLS Oracle Home:        /u01/apps/tech_st/10.1.2
IAS Oracle HOme:        /u01/apps/tech_st/10.1.3
INST_TOP:                /u02/inst/apps/PROD_mis

在 APPL_TOP 目录下, 每一个 product 有各自的 Product Directories。 例如
gl,ad,fnd 等等。

在每一个 Product Directory 下,有着相同的 目录结构。

[applvis@mis appl]$ ls $APPL_TOP/gl/12.0.0

admin  forms  html  lib  mds    mesg  patch    sql
bin    help   java  log  media  out   reports

$APPL_TOP/admin 主要有 给 AD utilities 用的 各种文件。其他需要注意的direcrory
还有:
AD Directory: $APPL_TOP/ad, adadmin/adpatch/adconfig.sh etc.
AU Directory:  $APPL_TOP/au
Common Components Directory :                         $COMMON_TOP
Applications Technology Stack Directory :         Tools and IAS Oracle HOME.
Database Directories:                                 rdbms Oracle Home . $ORACLE_HOME/appsutil etc.


有关 Applications 的配置参数,Oracle 都放在一个 Applications Context File 上。
$INST_TOP/appl/admin/<SID>_<HOSTNAME>.xml. 这也是 AUTOCONFIG 的设计。


=============================================================
Oracle database tier

最后,我们看R12的后台数据库。

Oracle Applications 充分使用 Oracle 数据库提供的各种数据类型:
select object_type, count(*) from dba_objects
where owner not like '%SYS%' group by object_type order by 1;
OBJECT_TYPE           COUNT(*)
------------------- ----------
CLUSTER                      1
DATABASE LINK               60
EVALUATION CONTEXT          30
FUNCTION                   109
INDEX                    56080
INDEX PARTITION           5128
INDEX SUBPARTITION        3266
INDEXTYPE                    2
JAVA CLASS                 968
JAVA RESOURCE                9
JAVA SOURCE                  2
JOB                          2
LIBRARY                     18
LOB                       2086
LOB PARTITION              326
LOB SUBPARTITION           752
MATERIALIZED VIEW          768
OPERATOR                     7
PACKAGE                  53673
PACKAGE BODY             52528
PROCEDURE                  285
QUEUE                      264
RULE                        21
RULE SET                    87
SEQUENCE                 11659
SYNONYM                  78416
TABLE                    33005
TABLE PARTITION           3106
TABLE SUBPARTITION        1586
TRIGGER                   6630
TYPE                      4240
TYPE BODY                  119
VIEW                     34631
XML SCHEMA                  91

可看到既有数据,也有各种 code ,JAVA,PL/SQL,Trigger 等。还有hybrid的
如MATERIALIZED VIEW。

R12 支持 Multiple Languages,有关的translated data 放在 translation table (_TL)
中。

所有的product 都各自有自己的Product Schema 放数据 object 例如tables ,
indexes, sequences。 所有的 code object 例如 triggers ,views, pl/sql, synonyms
等都集中在一个 统一的 schema 叫 APPS 上。 应用通过 这个 schema来 access data。

数据库上 R12 并没有用到什么特别的 Database Features.

Database Tier 有关的 Server Process Scripts 可在以下目录找到:
<RDBMS ORACLE_HOME>/appsutil/scripts/<CONTEXT_NAME>

除了以上的基本配置外, 其他一些稍微复杂的配置考虑:
1. Load balancing ,这主要有以下两方面:
- Network 层面 - 主要采用 hardware load balancer ,象 F5 这样的系统,外置在
oracle app
server 外,然后两者结合 。最简单有效的就是,一个 hardware load balancer 的web 入口,
然后指到 几个不同的 EBS app server 上。
- Concurrent processing 及database 层面 - 采用 Parallel Concurrent Processing (PCP)
和 Oracle RAC 的技术。

具体,可参考 Using Load-Balancers with Oracle E-Business Suite Release 12 (Doc ID 380489.1)。

2. Failover
在这方面, R12比11i 有进步, 每一个 app server 的安装都是一样的,所以app server 之间
services 可以 互相 failover。 例如,一开此,系统如下运行:
app server 1:Web, Forms.
app server 2: Concurrent Processing

假如 app server 1 停了,你可以将 Web,Forms 的服务 在 app server 2 上启动。
app server 1:
app server 2: Web, Forms, Concurrent Processing

R12 还提供 shared app tier file system 的安装,所以两台机器间的failover 比较方便。
具体,可参考
Sharing The Application Tier File System in Oracle E-Business Suite Release 12 (Doc ID 384248.1)


==================================================================
4: 基本系统管理知识

结合上面提到的系统架构的基本知识,这里总结R12系统的基本管理知识,就是如何做我们最关心的
最基本的start/stop/status 。

1. database 方面:
如上述,Database Tier 有关的 Server Process Scripts 可在以下目录找到:
<RDBMS ORACLE_HOME>/appsutil/scripts/<CONTEXT_NAME>。主要有:

addbctl.sh : start/stop db
addlnctl.sh: start/stop/status listener
adautocfg.sh:autoconfig script for db tier

与后台数据库相关的 network config 文件在 $ORACLE_HOME/network/admin/<CONTEXT_NAME>.
例如 listener.ora,tnsnames.ora 之类。

另外, 应用层也有 listener。对应的
tnsnames.ora and listener.ora file 在 $INST_TOP/ora/10.1.2/network/admin。
应用层的listener 主要是给 Concurrent Manager 用的,包括如下两个program:
FNDFS: Report Review Agent  
FNDSM: Service Manager

对应的 listener script 是: $ADMIN_SCRIPTS_HOME/adalnctl.sh
通常的command 也可应用,例如 tnsping, lsnrctl 等:
LSNRCTL> set current_listener APPS_PROD

2. Enviornment File
一般的管理支持需要熟悉 上面提到的Enviornment File 。通常我们会分别source 在
db user 和 app tier user。例如:

[applvis@mis ~]$ cat .bash_profile

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
. /u01/appl/APPSVIS_mis.env
export PATH
unset USERNAME
########

3. Apache
R12的web server - Apache 的control script 在 $ADMIN_SCRIPTS_HOME :
adapcctl.sh status apps/apps

主要的配置文件在:
        $IAS_ORACLE_HOME/Apache/Apache/conf
       
一些有用的URL:
       
http://mis.myerp.com:8000/OA_HTML/jtflogin.jsp
       
       
http://mis.myerp.com:8000/OA_JAV ... gistry/Registry.dat
检查 JSP 用的 URL:
       
http://mis.myerp.com:8000/OA_HTML/jsp/fnd/fndping.jsp
检查 Forms 用的,直接login FORMS:
       
http://mis.myerp.com:8000/forms/frmservlet

Forms 的有关文件在 $FORMS_PATH 。
Reports 的有关文件在 $REPORTS_PATH

Concurrent Manager的control script 在 $ADMIN_SCRIPTS_HOME :
        adcmctl.sh status  apps/apps

OC4J/OPMN 的control script 在 $ADMIN_SCRIPTS_HOME :
        adopmnctl.sh status apps/apps
        adoacorectl.sh status apps/apps
        adformsctl.sh status apps/apps
        adoafmctl.sh status apps/apps

基本上,applications tier 的所有 control script 都在$ADMIN_SCRIPTS_HOME。
格式 也一致, 就是 start/stop/status.
       
DBC File:
dbc (Database Connectivity)file 是给 applications tier 连接 database用的。它的
位置在:$FND_SECURE。如果该目录下有多个 .dbc file,profile option value
"Applications Database ID" 决定用哪个。

如下的命令可测试 .dbc file 是否正确:
java oracle.apps.fnd.security.AdminAppServer apps/apps status DBC=$INST_TOP/appl/fnd/12.0.0/secure/PROD.dbc

PL/SQL, Log and Out direcotry:
R12通常用到的 log file, temp file, 或者 output file 都可以在如下地方找到:
        $APPLTMP
        $APPLPTMP
        utl_file_dir
        $LOG_HOME
        fnd_log_messages

================================

Reference:
<387208.1>:         Fusion Middleware Reports "ABC" Health Check
<113428.1>:         CONCURRENT C and PRO*C PROGRAM TUTORIAL
<342500.1>:         Quick Start: Designing, Testing, and Deploying Oracle Reports with 10G Middleware

=================================================================================

从一个“普通”的Oracle DBAOracle数据库管理员)转变为Oracle Applications DBAOracle应用程序数据库管理员),有两个内容你必须去弄清楚。第一个内容是如何成为一个Oracle Applications DBAOracle应用程序数据库管理员)。第二个内容是你要搞清楚Oracle应用程序背后的架构体系,也就是说你要明白诸如以下产品的结构体系:Oracle电子商务套件、Oracle 11i数据库、Siebel产品等。 本文首先讲述如何从一个普通的Oracle DBA转变为一个Oracle Applications DBAOracle应用程序数据库管理员),接着讲述一些Oracle应用软件架构方面的内容 。 如何成为Oracle应用程序数据库管理员 首先是角色的转变 Oracle Applications DBAOracle应用程序数据库管理员)对“普通”的Oracle DBAOracle数据库管理员)来说是一个很大的挑战。拿Oracle EBS DBAOracle 电子商务套件DBA)来说,不仅需要了解EBS的各个组件、服务,而且还要更主动和其他相关人员接触。 一个Oracle Applications DBAOracle应用程序数据库管理员)不仅需要和其他DBA一样去负责managing、 sizing、maintaining和 tuning database这些日常的数据库管理的工作,如果他的Apps database是OLTP系统的话,他还需要监察wait和lock 。Oracle E-Business Suite还有一些特性需要DBA去完成,比如从外部资源里灌数据到Apps database里,或支持开发人员从已有数据中提取数据。 接着工作内容的转变 作为一个Oracle Applications DBAOracle应用程序数据库管理员),要想更好的对Oracle Application database做支持,需要仔细记住以下几项。 1.网络上没有什么比较容易简单的文档让你去熟悉Apps DBA,所以我建议去看帮助。 2.在你没有经过多次测试并且得到客户认可的时候不要去打补丁,并且你要确信这个补丁解决了现有的问题,而且没有带来其它新的问题。 3.记住Oracle Applications会有很多索引,定期rebuild index会对性能有好处,当然做这项工作应该在系统的空闲时间。 4.不要为了提高性能而在没有询问oracle Support前试着去增加额外的indexes。如果你一定要去做,那千万记住要有文档作记录,因为在这之后你再打patch的时候它可能会把你做的修改自动复原。 5. 知道怎么样是正确的打patch,先计划打哪个patch,然后取得patch,接着打patch,测试,最后文档记录。 6. 要知道任何时刻数据库都可能会有一些object 是invalid的,你的一些操作也会增加invalid objects,定期检查这些invalid objects的数量,然后定期用utlrp去重新编译,utlrp.squ在ORACLE HOME的rdbms/admin下,需要用SYS运行。在你的DB运行过程中如果碰到错误,就可以先重新编译invalid objects,如果没有解决问题再去递交iTAR(Internet created Technical Assistance Request). 7.能看懂日志。 8.了解Apps database的环境,包括操作系统和DB的,当你对你的工作环境了如指掌后,一切也就变得容易了,那时,你就是一个悠闲的Apps DBA了。 另外,对于APPS DB(应用程序数据库)来说,你可能需要创建或拷贝(克隆)多个生产库以外的数据库,比如测试和开发数据库,当然,需要多少数据库是由你的商业需求所决定的。开发环境数据库是供开发人员进行report,PL/SQL等开发的,这个环境可以在开发人员觉得数据已经不再满足开发需求的时候,当然也可以在这个环境测试补丁(patches)。当然最终使用patch的时候还需要在测试环境做测试,因为测试数据库是和生产数据库环境最接近的。(上面说的克隆cloning是一种将applications layer和database layer完全复制的一种方法。)所以,当你拥有这三个数据库的时候,打patch的步骤是先development database再test database最后才在production database环境应用。 构架应用体系 如果你研究过Oracle Forms,使用过Application Server和Devel
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值