This section give you a guide to install Oracle Application on microsoft windows.
OS: Windows XP With SP1
EBS: 11.5.10IP: 192.168.1.101
PC Name: huajhua
Domain: leiko.com, you need not add to domain in deedRAM: 512M, 1.5G Virtual Memory
Disk Space: 80G, 20G For Stage File, 60G For Installation.
最好是干净的系统。
如果以前装过Oracle相关产品,要删除所有Oracle安装(注册表中的Oracle和服务、系统盘下的\Program Files\Oracle\Inventory、环境变量)。
添加打印机,如果无法添加,请检查“Print Spooler”服务是否启动。如果没有装打印机,RPT类型的请求将无法运行,会报REP-3002: Error initializing printer。
可以添加实际的打印机,也可以添加虚拟的打印机,后者需要选择打印端口为“文件”。
接下来是选择驱动程序,如果是虚拟打印机,则随便选一个,比如Epson Stylus COLOR 1520K ESC/PK(图略)。
给打印机命名为“noprint”。
是否打印测试纸选择“否”。
设置Host文件,否则安装过程中检查名称解析将通不过。
Setup Static IP Address And DNS Suffix
在“本地连接”的属性里面设置静态IP和DNS后缀。
Setup Microsoft Visual C++ 6.0
Oracle安装过程中需要调用VC6的link命令。安装VC英文版即可,路径:E:\VC98。(Metalink说C:\ VC98,不知道为什么不用VC6默认的安装路径;我改成E盘根目录)。安装VC、ActiveX、Data Access三个组件即可。装完把link.exe拷贝到System32目录,重启。
必须安装MKS Toolkit,Oracle安装过程中需要调用Unix命令(比如which/cc),这些命令在Windows下没有,而MKS Toolkit可以在Windows下模拟大部分Unix命令。安装路径:E:\MKS。(Metalink说C:\MKS,不知道为什么不用MKS Toolkit默认的安装路径;我改成E盘根目录)
Oracle安装过程中需要调用gnumake命令。从下载,比如make-3.80.tar.gz,解压,在命令行下build_w32.bat,第一遍有问题,再运行一遍就可以了;然后把WinRel下的gnumake.exe拷贝到J:\MKS\mksnt。运行
可以从DVD光盘安装,也可以把所有文件拷贝到硬盘,然后从硬盘安装,避免安装过程中不停的换光盘。从下载的文件,解压缩之后自然形成需要的目录结构,如下。
针对11.5.10.2版本,需要Oracle® Applications 11i Release 11.5.10.2 Rapid Install Start Here - Disk 1 (Part 7 of 7)(1张)、Oracle® Applications 11i Release 11.5.10.2 for Microsoft Windows Rapid Install RDBMS - Disk 1(3张)、Oracle® Applications 11i Release 11.5.10.2 for Microsoft Windows Rapid Install Databases - Disk 1(7张)、Oracle® Applications 11i Release 11.5.10.2 for Microsoft Windows Rapid Install Databases - Disk 2(6张)、Oracle® Applications 11i Release 11.5.10.2 for Microsoft Windows Rapid Install Databases - Disk 3(6张)、Oracle® Applications 11i Release 11.5.10.2 for Microsoft Windows Rapid Install Tools - Disk 1(3张)、Oracle® Applications 11i Release 11.5.10.2 for Microsoft Windows Rapid Install APPL_TOP - Disk 1(7张)
必须从命令行运行startCD\Disk1\rapidwiz下的rapidwiz,启动安装程序。
出来欢迎界面。
选择安装模式,初次安装请选择“Install Oracle Application E-Business 11i”,下面的“Use Express Configuration”不要选,这样我们可以自己配制安装选项,了解安装任务。
第一次运行Rapidwiz,没有安装配置文件,所以要选择No,以后再启动Rapidwiz,就可以选择以前保存的安装配置文件。
选择Single-node (All Services on a single node),所有服务都装在一台机器上。如果选择Multi-node,那么可以选择数据库和Concurrent Manager装在一台机器上,HTTP/FORM/REPROT服务和Application装在另一台机器上。
选择Vision Demo的话会装一个演示环境,需要90G的空间。选择Fresh Database,会安装一个空的数据库,所有模块的设置都需要从头进行。
Database Install Information
选择数据库安装目录。选择Advance,可以把DB Oracle Home/SYS数据文件/LOG文件/Transaction数据文件/归档文件装在不同的磁盘上。这里没有提供控制文件的安装路径选择,只好待安装完之后,再来移动控制文件。
这里的License选择,仅仅代表你买了什么产品,并不会影响功能模块的使用。安装完之后也可以通过OAM来添加License。
E-Business Suite Licensing模式默认选择了一些常用的模块。
Component Applications Licensing模式则需要我们手工选择,如Order Management /Inventory Management/Purchasing/Discrete Manufaturing/Financials/Human Resources。
Select Country-specific Functionalities
选择本地化功能,很多国家和地区都有一些特殊的本地化功能,比如Europe。为使安装最小化,这里我不选。
Select Additional Languages
默认只有American English,可以添加其他语言,比如Chinese,启用NLS。这里的选择还不够,需要在安装完之后打相应的语言包。为使安装最小化,这里我不加新的。
Select Inernationalization Settings
选择主语言、区域、数据库字符集、应用字符集,如果选择非US7ASCII,那么安装过程中,会自动对数据库进行字符集转换(我猜是针对数据库)。(注,在Adadmin里面也有字符集转换功能,我猜是针对应用)。
Configuration Information for Node
选择工具文件的路径和Application及Application Server的路径;这里同样可以分别定义APPL/ORA/IAS的路径。
必须输入一个域名。同时选择端口的偏移量,比如登录应用默认是8000,如果偏移1则为8001,其他各个端口都是如此;这样可以做到在一台机器上安装多个Instance而端口不会冲突;当然可以个别指定某一服务的端口,特别是当端口已被机器上的其他服务占用时,就必须个别指定了。
Save Instance-Specific Configuration
保存上面辛辛苦苦做的安装设置,以便下次重新安装或者Restart时直接使用。
加查各种环境是否满足安装要求,比如端口是否可用、域名解析是否通过、需要的基本命令是否可用、磁盘空间是否足够等等
Validate System Configuration
加查结果。必须所有项目均OK,否则必须查出原因,直到检查通过。我碰到过两个问题:某一端口被其他程序占用(于是我Back到前面步骤改了该端口)、System Unilities Chek通不过(查看明细发现Which命令不成功,于是我卸载MKS后重新安装)。
Component Installation Review
最后Review所有设置,后悔还来得及。
确认开始安装。
安装数据库,没有问题。
安装数据库文件,并进行字符集转换,没有问题。
安装应用服务IAS和8.0.6,有问题,最后一直停留在100%,硬盘也没读写。
关掉安装程序,rapidwiz -restart再次运行,这次要选择上次保存好的配置文件,安装程序自动跳过前两个Step,但Step 3依然有问题,再关掉,再用rapidwiz -restart,通过。
安装Application文件和Comn文件,如AU_TOP,Form,SQL,Report等,没有问题。
系统配置,执行AutoconfigAdadmin等,没有问题。
安装完之后的各项检查,自动完成。
大功告成!
运行%APPL_TOP下的envshell.cmd,进入命令行,envshell.cmd会调用APPSPROD_.cmd设置应用的环境变量,比如各个TOP。Unix下用应用帐户直接Telnet上去即可。
命令行下运行adadmin,除了system的密码需要输入外,各个参数默认即可。
这样就进入到Adadmin主菜单。
Update Snapshot Information
更新快照信息,以后打patch需要,这一步需要近一个小时。需要把并发管理器停掉,最好把应用也停了,只留数据库。
选择2,Maintain Applications Files and Registry Menu。
选择5,Maintain Snapshot Information
选择2,Update Current View Snapshot即可
系统开始更新快照,耐心等待。
在主菜单界面选择3,Compile/Reload Applications Database Entities menu。
进入之后选择3,Compile flexfields。
针对11.5.10,需要打Patch 3140000/346000;从Metalink下载。
下载下来解压到同一个目录,即可用adpatch工具打上去。
这里以打2451368 Patch为例。这个Patch是AR的多组织转换Patch,如果不打,在执行Convert To Multi-Org的时候会报警告。
先运行adadmin,切换到5,Change Maintenance Mode,然后Enable Mainenance Mode。
退出adadmin,进入到2451368 Patch所在的目录,如E:\Stage11i\patch\2451368,直接运行adpatch,按照提示操作即可。
打完Patch,再进入adadmin,disable maintenace mode。
进入Windows服务界面,启动顺序如下:
1、起来数据库服务
2、起来数据库侦听
3、起来应用侦听
4、这几个随便:apache服务,reports服务,forms服务,并发管理器服务
停止的时候反过来即可。
也可以通过命令来完成,请参考本文档相关章节;也可参考下面主页的Machine Admin Scripts。
或,以sysadmin登录。
选择System Adminsitrator职责
请参考本文档相关章节。
Assign Responsibility To User
请参考本文档相关章节。
运行Active Users报表。
View Output/View Log/Copy File
选择View Output,View Log,并在Tools菜单下选择Copy File…,看是否正常。
查出上面建的用户,把鼠标移入Responsibility,选择File/Export,看是否弹出保存文件的窗口。
进入IE,输入,报“无法显示网页”,烦。
进入IE,输入,看是否正常。
我的系统报:
Missing e:\oracle\prodcomn\java\apps.zip
Missing e:\oracle\prodora\iAS\portal30\jpdk\lib\partnerApp.jar
Missing e:\oracle\prodora\iAS\mapviewer\lib\sdoapi101.jar
Missing e:\oracle\prodora\iAS\mapviewer\lib\sdovis.jar
Missing e:\oracle\prodora\iAS\mapviewer\lib\mapviewer118.jar
不管它,很多人都碰到;Metalink说可以在jserv.properties等文件中把相关条目注释掉。
选择页面底部的Enter AOL/J Setup Test以进行更多的测试,我的大部分是“无法显示网页”,懒得上Metalink查了,以后用系统有问题再说。
不过以后打Patch之前要记得改回来。
以sysadmin登录,选择Workflow Administrator Web Applications职责,选择Item Type Definition,随便找一个,然后Run,参数随便填。下面是成功运行的工作流Requisition的Diagram。
检查已安装模块版本:
SELECT app.application_short_name, app.application_name, pi.patch_level
FROM fnd_product_installations pi, fnd_application_vl app
WHERE app.application_id = pi.application_id
检查已安装Patch:
SELECT * FROM ad_applied_patches WHERE patch_name = '2451368'。
从Metalink找到需要的Patch,然后
0. 阅读Read readme document,看有没有条件,下载,用Unzip解压
1. applmgr用户登录操作系统
2. 设置环境变量( $APPL_TOP/APPSORA.env)
3. 停应用 adstpall.sh (至少要停并发服务器),数据库和监听保持启动状态
4. 用adadmin Enable Maintenance Mode
5. 之后,运行adpatch命令,从cxxx.drv开始打,然后是dxxx.drv,gxxx.drv
6. 用adadmin Disable Maintenance Mode
7. 启动应用 adstrall.sh
由于我的笔记本只有512M内存,所以有必要调整系统性能,否则跑起来太慢。对于内存超过1G的系统,可以不用考虑。
原来系统起来约用内存1.2G,登录系统后约1.3G-1.5G;经过调整,系统起来约用内存600M,进入系统之后700M多。
Windows本身有很多服务是可以停止的。具体可查看网上资料;最后我系统启动之后内存占用不到100M;启动Word2003之后约125M。
MKS Secure Shell Service/MKS Telnetd/MKSAUTH/NuTCRACKER Service都不需要,可以设为手动。此外还有一个伴随Windows一起启动的MKS程序也干掉。
把所有的Oracle服务设为手动,有些原来自动起来的服务其实一般都用不上,比如:
Oracle Fulfillment Server PROD_huajhua
Oracle Metrics Client PROD_huajhua
Oracle Metrics Server
PROD_huajhuaOracleDiscoverer4i_PROD。
以后可以根据需要启动,要用数据库,可启动:
OraclePROD_db920_RDBMSTNSListenerPROD
OracleServicePROD
如果要用Application,先启动数据库,再启动应用服务:
OraclePRODOra806_2TNSListener80APPS_PROD
Oracle Apache Server PROD_huajhua
O OracleFormsServer-Forms60PROD_huajhua
如果要运行请求,那么再启动
racleConcMgrPROD_huajhua
如果要运行报表,那么再启动
Oracle Reports Server [Rep60_PROD]
编辑DB Oracle_Home/9.2.0/dbs下的Init.ora文件,调整内存参数:
db_cache_size = 40000000 #HUAJHUA#Default 163577856
pga_aggregate_target =150M #HUAJHUA#Default 1G
shared_pool_size = 50000000 #HUAJHUA#Default 300000000
shared_pool_reserved_size= 10000000 #HUAJHUA#Default 30000000
java_pool_size = 10000000 #HUAJHUA#Default 52428800
由于9i采取自动内存管理(workarea_size_policy=AUTO),所以只要保证后面3个加起来不超过pga_aggregate_target即可。
这时再启动数据库,发现总共内存只用300M多,原来需要700-800M左右。
Apache一起来就用掉500-600M的内存,我发现可以调整Jserv的配置文件以减少不必要的加载,主要是jar文件。
先备份%IAS_ORACLE_HOME%\Apache\Jserv\etc文件夹
编辑jserv.conf、jserv.properties、jserv.properties.org、jserv_restrict.properties这4个文件,注释掉所有和disco4iviewer、emailcenter、mobile、viewer4i、xmlsvcs、Portal有关的语句。这一步可以减掉约200M内存;数据库、Form/Report、Apache起来之后只有500M。#HUAJHUA#
应该还有其他地方可以调,有空再研究。
注意,运行adautocfg之后,这些都会被覆盖,所以要重新配置,不然会奇怪为什么内存突然又长上去了。
通过Windows Task Manager可以发现,里面有大量的exe文件在运行,有的5个,有的3个。
FNDLIBR.exe
FNDCRM.exe Conflict Resolution Manager
POXCON.exe
INVLIBR.exe
RCVOLTM.exe
CONCSUB.exe
……
其实这些都是并发管理器,如果把它们调为1,这样又可以少占一些内存,而且可以提高系统运行速度。
N: System Administrator\Concurrent\Manager\Define
查出全部Enabled的并发管理器,点击Work Shifts,可以调整每个管理器的Processes数。Conflict Resolution Manager定2个,Standard Manager定2个,其他的全部调为1。以后如果碰到请求处于Pending状态,再来调整也不迟。如果做得绝一点,只留Internal Manager和Standard Manager,其它的等运行相关请求时报“No Manager”再来调也可以!
这样,整个系统起来之后,加一个Word,一个IE,一个SnagIT,约630M内存!
Scheduled Concurrent Program
参见下个主题。
最近又发现%APPLTOP%\Admin\PROD_huajhua.xml的内容通过adautocfg写到各个地方的配置文件。其中关于JVM的参数很值得怀疑,因为每次Apache起来,系统都有3个java.exe进程,而且狂占内存,我想这个跟JVM的内存参数有关:-verbose:gc -Xmx512M -Xms128M -XX:MaxPermSize=128M -XX:NewRatio=2 -XX:+PrintGCTimeStamps -XX:+UseTLAB 。这样的内存参数在文件有几个地方。
我把上面的改为-Xmx128M -Xms64M -XX:MaxPermSize=64M;还有几个地方也作类似的调整。
重新运行auto config,然后重新调整了上面提到的“Apache JServ”,发现内存果然锐减!
系统安装之后,有几个Scheduled的程序。
OAM Applications Dashboard Collection
如果进入OAM页面,即下面的Oracle Application Manager,那么可以看到很多管理参数和性能参数;OAM Applications Dashboard Collection就是用来动态收集这些信息的。可以考虑把它取消,以后需要的时候手工运行。
Purge Debug Log and System Alerts
还没研究清楚;本来是每天运行,先停掉再说。
Workflow Control Queue Cleanup
还没研究清楚;本来是每天运行,先停掉再说。
Synchronize Workflow LOCAL tables (Report Set)
还没研究清楚,Metalink说是用来同步各个模块的User和Role信息;本来是每天运行,先停掉再说。
这里指嵌在EBS中的Workflow。
中文安装可参考商XXXX的《Oracle_WorkflowServer_Setup_11.5.10.doc》,完整的参考资料见Oracle的《Oracle Workflow Administrator's Guide》。
$FND_TOP/admin/sql下有Workflow管理和诊断脚本。
摘自Oracle Workflow Administrator's Guide。下面的章节详细说明Required的和比较有用的设置步骤。
Worflow的核心功能之一就是消息(Notification),要发消息,当然要有接收人,这个接收人可能是一个user、一个employee、一个Responsibility、一个客户、一个职位等等。
在EBS中这些接收人分散在各个模块的各个表中,而Worflow Engine仅承认WF_表中的接收人。
Oracle目录服务的作用就是把这些分散的资料按照统一的格式集中起来,存在WF_LOCAL系列的表中,并以来源字段区分。这样我们在程序中如果要找某一个接收人,仅从WF_LOCAL系列的表中查询即可(实际应用中,是调用一个标准API从WF_ROLES视图取数),不需要记住所有的源表。
接收人分用户和角色,角色包含一个或多个用户,对应的视图为wf_users/wf_roles/wf_user_roles。如果消息的接收人为职责,那么这个职责下的所有用户都会收到消息。这个好理解,不多说。
下面以EBS的登录user为例。
1. 原来存储的表为:fnd_user,假定这里面有个用户User_Name为huajhua,User_ID为1001
2. 对应一个按照目录服务格式要求的视图:wf_fnd_usr_roles
3. WF Bulk Synchronize Local Tables请求会把wf_fnd_usr_roles的数据同步到wf_local_roles中,orig_system字段标志为fnd_usr
4. 如果以后我们要发通知给huajhua,那么通过API可以获得该用户:WF_DIRECTORY.GETROLENAME(‘FND_USR’, 1001,x_name,x_displayname)
值得一提的是如果User和Employee关联了,那么orig_system将是PER。举几个例子:
Type of Role |
Orig_System |
User_Flag |
|
|
|
ERP用户,未和HR中的员工建立关联 |
FND_USR |
Y |
ERP用户,和HR中的员工建立关联 |
PER |
Y |
不是ERP用户,而是HR中的员工 |
PER_ROLE |
N |
客户/员工 |
HZ_PARTY |
Y |
直接插入WF_LOCAL_USERS的记录 |
WF_LOCAL_USERS |
Y |
直接插入WF_LOCAL_ROLES的记录 |
WF_LOCAL_ROLES |
N |
职责 |
FND_RESP |
N |
职位Position |
POS |
N |
更详细的说明请看Oracle Workflow Administrator's Guide。
所以,总的来说,Workflow的目录服务就是收集用户和角色信息,以统一的格式提供给Workflow消息系统使用。包括:
1. 一套本地表:WF_LOCALXXX
2. 一套实际使用的视图:WF_USERS/WF_ROLES/WF_USER_ROELS
3. 一套各来源视图:WF__ROLES
4. 一个批量同步请求集:Synchronize Workflow LOCAL tables(增量同步需要安装Patch,请看Notes171703.1)
5. 一套API:WF_DIRECTORY
随着业务的增长和历史数据的增多,有几个工作流的表会越来越大,如果不进行分区,其性能(DML和Export/Import)是比较糟糕的。默认情况下,只有目录服务的几个表是按来源分区过的;其他的表,需要运行%FND_TOP%/admin/sql/wfupartb.sql来分区。值得一提的是,wfupartb.sql本身是学习Oracle Partition的最好材料。我的11.5.10没有打补丁,wfupartb.sql是空的;我是从客户那里看wfupartb.sql的,它们是11.5.9。
需要分区的表和索引为:目录服务表、WF_ITEM_ACTIVITY_STATUSES及索引、WF_ITEM_ACTIVITY_STATUSES_H及索引、WF_ITEM_ATTRIBUTE_VALUES及索引、WWF_ITEMS及索引。以WF_ITEM_ATTRIBUTE_VALUES为例,它保留的是工作流实例的各个属性值,华为在Purge之后这个表仍然有7000万条记录,Export这个表要37个小时。
以下SQL用来查看分区情况:
SELECT t.owner, t.table_name, t.partitioned
FROM all_tables t
WHERE t.table_name LIKE 'WF%'
ORDER BY t.partitioned
在System Administrator下,跑Synchronize Workflow LOCAL tables即可。该请求集建议计划运行。
如果我们加了个fnd user,但没跑这个同步程序(可能是还没到计划时间),那么Workflow并不知道有这个用户存在,这就导致为什么有“我跑过了Fill Employee Hierarchy,为什么通知还是没发到XXX”的问题。实际上,对于通知没发到XXX的问题,有如下原因:
1. 程序错误,没有设置正确的Notification Performer
2. 如果是PO,可能没跑Fill Employee Hierarchy
3. 一个Employee分配给了多个User,那么其实只有第一个User收到了消息
4. 数据还没有同步到Workflow,即没跑Synchronize Workflow LOCAL tables
Workflow Background Process请求用来处理Timeount、Defer、Stuck的工作流;通常情况下我们需要分别为处理超时、阻塞、挂起各Schedule一个Workflow Background Process。
如果我们Schedule了该请求,但有时候等不及,也可手工提交;下面的例子是最常见的处理销售订单行Defer的请求:
定义Workflow全局参数。仅需关注两个参数。
Workflow System Administrator默认是sysadmin,说明只有sysadmin可以查看、管理任何workflow和实例;*表示任何人都可以。
Notification Style,默认是Do not send me mail,说明通知只能通过登录EBS后查看,不能通过Email。
N: SYS/Workflow/Global Preferences
参考SQL: SELECT * FROM wf_resources WHERE NAME = 'WF_ADMIN_ROLE'。参考设置:
Parameter |
Value |
|
|
Workflow System Administrator |
* |
Notification Style |
HTML mail |
|
|
WF_RESOURCE环境变量用于存储指向Workflow资源文件,EBS的资源文件为%FND_TOP%/%APPLRSC%/wf.res,不需要设置该变量。
目前,Oracle Workflow支持SMTP协议(默认端口是25)处理出站消息、IMAP4协议(默认端口是143)处理进站消息,这也是Oracle Workflow对Mail服务器的要求。可以使用Microsoft Exchange作为Mail服务器,简单点,我们使用Imail。
IMAP4是Oracle Workflow Server对Mail Server的要求,对于用户,其客户端可以使用不支持IMAP4的Foxmail。
1. 按照默认选项安装Imail
2. 启动Imail的服务:SMTP/IMAP/Queue Manager/POP3
3. 创建Notification Mailer需要的用户,假定是wfmail;另外再建一个测试账号huajhua
4. 用邮件客户端(文档说必须,所以我用Imail自带的Client)给wfmail创建三个目录:INBOX、PROCESS、DISCARD
1. 进入OAM,需要有System Administrator职责:
2. Navigate to Worflow Manager
3. 进入Service Components管理界面
从Container选择Workflow Mailer Service,进入该容器服务控制界面。然后先后启动Workflow Mailer Service和Workflow Agent Listener Service。
* 这两个玩意儿其实是Concurrent Manager的两个Adminster。启动这两个服务后,到系统中去看,这两个Administer也起来了。
回到Service Components管理界面,发现需要的服务只有Workflow Notification Mailer由于没有配置过而没有起来。
配置Workflow Notification Mailer
选择Workflow Notification Mailer,点击下面的Edit按钮,有8个步骤,跳过1、5、6。
参考设置:
Parameter |
Value |
说明 |
|
|
|
Inbound Thread Count |
0 |
0表示没有Inbound消息,这样就不要求Mail服务器支持IMAP4 |
Inbound EMail Account |
Server Name |
huajhua |
邮件服务器 |
User Name |
wfmail |
用户名 |
Password |
wfmail |
密码 |
Outbound EMail Account |
Server Name |
huajhua |
邮件服务器 |
User Name |
wfmail |
用户名 |
Test Address |
test@huajhua |
|
Send |
Reply-to Address |
wfmail@huajhua |
|
|
|
|
第7步是测试,一定要从LOV里面选一个角色,Oracle会按照这个角色的“Notification Style”给前面设置的Test Address发一个通知,请记住ID号。
测试角色有两个要求:emali地址(随意)、mail类型的Notification Style。否则mail无法正确发到Test Address。
第8步完成后,回到Service Components管理界面,发现Workflow Notification Mailer也起来了。
用客户端收test@huajhua的信,看ID号就可以知道是第7步测试步骤发来的;最直接就是在Imail的管理器里面看相应用户的邮箱是否有东西。