Oracle EBS 11i系统安装与维护

1.       E-Business Suite Installation
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.
 
1.1.       Pre-Installation
操作系统
最好是干净的系统。
如果以前装过Oracle相关产品,要删除所有Oracle安装(注册表中的Oracle和服务、系统盘下的/Program Files/Oracle/Inventory、环境变量)。
Setup Printer On Windows
添加打印机,如果无法添加,请检查“Print Spooler”服务是否启动。如果没有装打印机,RPT类型的请求将无法运行,会报REP-3002: Error initializing printer。
可以添加实际的打印机,也可以添加虚拟的打印机,后者需要选择打印端口为“文件”。
接下来是选择驱动程序,如果是虚拟打印机,则随便选一个,比如Epson Stylus COLOR 1520K ESC/PK(图略)。
给打印机命名为“noprint”。
是否打印测试纸选择“否”。
Setup Hosts
设置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目录,重启。
Setup MKS Toolkit
必须安装MKS Toolkit,Oracle安装过程中需要调用Unix命令(比如which/cc),这些命令在Windows下没有,而MKS Toolkit可以在Windows下模拟大部分Unix命令。安装路径:E:/MKS。(Metalink说C:/MKS,不知道为什么不用MKS Toolkit默认的安装路径;我改成E盘根目录)
Setup GNU Make
Oracle安装过程中需要调用gnumake命令。从http://ftp.gnu.org/pub/gnu/make/下载,比如make-3.80.tar.gz,解压,在命令行下build_w32.bat,第一遍有问题,再运行一遍就可以了;然后把WinRel下的gnumake.exe拷贝到J:/MKS/mksnt。运行
 
1.2.       Installation
Using Stage Directory
可以从DVD光盘安装,也可以把所有文件拷贝到硬盘,然后从硬盘安装,避免安装过程中不停的换光盘。从http://edelivery.oracle.com/EPD/GetUserInfo/get_form下载的文件,解压缩之后自然形成需要的目录结构,如下。
针对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张)
Start Rapidwiz
必须从命令行运行startCD/Disk1/rapidwiz下的rapidwiz,启动安装程序。
Welcome Informaiton
出来欢迎界面。
Select Wizard Operation
选择安装模式,初次安装请选择“Install Oracle Application E-Business 11i”,下面的“Use Express Configuration”不要选,这样我们可以自己配制安装选项,了解安装任务。
 
Load Configuration
第一次运行Rapidwiz,没有安装配置文件,所以要选择No,以后再启动Rapidwiz,就可以选择以前保存的安装配置文件。
Install Type
选择Single-node (All Services on a single node),所有服务都装在一台机器上。如果选择Multi-node,那么可以选择数据库和Concurrent Manager装在一台机器上,HTTP/FORM/REPROT服务和Application装在另一台机器上。
 
Define Database Type
选择Vision Demo的话会装一个演示环境,需要90G的空间。选择Fresh Database,会安装一个空的数据库,所有模块的设置都需要从头进行。
Database Install Information
选择数据库安装目录。选择Advance,可以把DB Oracle Home/SYS数据文件/LOG文件/Transaction数据文件/归档文件装在不同的磁盘上。这里没有提供控制文件的安装路径选择,只好待安装完之后,再来移动控制文件。
 
Select Licensing Type
这里的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的路径。
 
Global System Settings
必须输入一个域名。同时选择端口的偏移量,比如登录应用默认是8000,如果偏移1则为8001,其他各个端口都是如此;这样可以做到在一台机器上安装多个Instance而端口不会冲突;当然可以个别指定某一服务的端口,特别是当端口已被机器上的其他服务占用时,就必须个别指定了。
Save Instance-Specific Configuration
保存上面辛辛苦苦做的安装设置,以便下次重新安装或者Restart时直接使用。
 
System Check Status
加查各种环境是否满足安装要求,比如端口是否可用、域名解析是否通过、需要的基本命令是否可用、磁盘空间是否足够等等
Validate System Configuration
加查结果。必须所有项目均OK,否则必须查出原因,直到检查通过。我碰到过两个问题:某一端口被其他程序占用(于是我Back到前面步骤改了该端口)、System Unilities Chek通不过(查看明细发现Which命令不成功,于是我卸载MKS后重新安装)。
Component Installation Review
最后Review所有设置,后悔还来得及。
Installation Confirm
确认开始安装。
 
 
Step 1 Of 5
安装数据库,没有问题。
Step 2 Of 5
安装数据库文件,并进行字符集转换,没有问题。
 
 
 
Step 3 Of 5
安装应用服务IAS和8.0.6,有问题,最后一直停留在100%,硬盘也没读写。
关掉安装程序,rapidwiz -restart再次运行,这次要选择上次保存好的配置文件,安装程序自动跳过前两个Step,但Step 3依然有问题,再关掉,再用rapidwiz -restart,通过。
 
 
Step 4 Of 5
安装Application文件和Comn文件,如AU_TOP,Form,SQL,Report等,没有问题。
Step 5 Of 5
系统配置,执行AutoconfigAdadmin等,没有问题。
 
Post-Install Checks
安装完之后的各项检查,自动完成。
Finish
大功告成!
 
 
 
 
1.3.       Post-Installation
登录操作系统
运行%APPL_TOP下的envshell.cmd,进入命令行,envshell.cmd会调用APPSPROD_.cmd设置应用的环境变量,比如各个TOP。Unix下用应用帐户直接Telnet上去即可。
进入adadmin
命令行下运行adadmin,除了system的密码需要输入外,各个参数默认即可。
这样就进入到Adadmin主菜单。
Update Snapshot Information
更新快照信息,以后打patch需要,这一步需要近一个小时。需要把并发管理器停掉,最好把应用也停了,只留数据库。
选择2,Maintain Applications Files and Registry Menu。
选择5,Maintain Snapshot Information
选择2,Update Current View Snapshot即可
系统开始更新快照,耐心等待。
Compile Flexfields
在主菜单界面选择3,Compile/Reload Applications Database Entities menu。
进入之后选择3,Compile flexfields。
Apply Maintainace Patch
针对11.5.10,需要打Patch 3140000/346000;从Metalink下载。
下载下来解压到同一个目录,即可用adpatch工具打上去。
Apply 2451368 Patch
这里以打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。
 
1.4.       Installation Test
启停数据库、应用服务
进入Windows服务界面,启动顺序如下:
1、起来数据库服务
2 、起来数据库侦听
3 、起来应用侦听
4 、这几个随便:apache服务,reports服务,forms服务,并发管理器服务
停止的时候反过来即可。
也可以通过命令来完成,请参考本文档相关章节;也可参考下面主页的Machine Admin Scripts。
登录
http://192.168.1.101:8000/ /OA_HTML/US/ICXINDEX.htm,以sysadmin登录。
选择System Adminsitrator职责
定义用户
请参考本文档相关章节。
Assign Responsibility To User
请参考本文档相关章节。
测试报表
运行Active Users报表。
View Output/View Log/Copy File
选择View Output,View Log,并在Tools菜单下选择Copy File…,看是否正常。
测试Export功能
查出上面建的用户,把鼠标移入Responsibility,选择File/Export,看是否弹出保存文件的窗口。
测试TCF Port
进入IE,输入http://192.168.1.101:8000/OA_HTML/jsp/fnd/aolj_tcf_test.jsp?t=1,报“无法显示网页”,烦。
测试Jserv Port
进入IE,输入http://192.168.1.101:8000/OA_HTML/jsp/fnd/aoljtest.jsp,看是否正常。
我的系统报:
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查了,以后用系统有问题再说。
CGI方式登录
http://huajhua.leiko.com:8000/dev60cgi/ifcgi60.exe ,登录报APP-FND-01542,打开$APPL_TOP/admin/_.xml,把里面的s_appserverid_authentication从SECURE改为OFF,adautocfg一下。
不过以后打Patch之前要记得改回来。
测试Workflow
以sysadmin登录,选择Workflow Administrator Web Applications职责,选择Item Type Definition,随便找一个,然后Run,参数随便填。下面是成功运行的工作流Requisition的Diagram。
2.       维护
 
2.1.       Patch
打Patch通用步骤
检查已安装模块版本:
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
 
2.2.       小系统性能调整
由于我的笔记本只有512M内存,所以有必要调整系统性能,否则跑起来太慢。对于内存超过1G的系统,可以不用考虑。
原来系统起来约用内存1.2G,登录系统后约1.3G-1.5G;经过调整,系统起来约用内存600M,进入系统之后700M多。
停止不必要的Windows系统服务
Windows本身有很多服务是可以停止的。具体可查看网上资料;最后我系统启动之后内存占用不到100M;启动Word2003之后约125M。
停止MKS相关程序和服务
MKS Secure Shell Service/MKS Telnetd/MKSAUTH/NuTCRACKER Service都不需要,可以设为手动。此外还有一个伴随Windows一起启动的MKS程序也干掉。
Oracle相关服务
把所有的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]
Init.ora
编辑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 JServ
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之后,这些都会被覆盖,所以要重新配置,不然会奇怪为什么内存突然又长上去了。
Concurrent Manager
通过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
参见下个主题。
JVM参数
最近又发现%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”,发现内存果然锐减!
 
2.3.       Seeded Concurrent Program Scheduled
系统安装之后,有几个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信息;本来是每天运行,先停掉再说。
3.       Workflow Configuration
这里指嵌在EBS中的Workflow。
中文安装可参考商XXXX的《Oracle_WorkflowServer_Setup_11.5.10.doc》,完整的参考资料见Oracle的《Oracle Workflow Administrator's Guide》。
$FND_TOP/admin/sql下有Workflow管理和诊断脚本。
 
3.1.       Basic
设置步骤
摘自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
 
3.2.       Database Layer
Table Partition
随着业务的增长和历史数据的增多,有几个工作流的表会越来越大,如果不进行分区,其性能(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
 
3.3.       Application Layer
Directory Service
在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
Background Engines
Workflow Background Process请求用来处理Timeount、Defer、Stuck的工作流;通常情况下我们需要分别为处理超时、阻塞、挂起各Schedule一个Workflow Background Process。
如果我们Schedule了该请求,但有时候等不及,也可手工提交;下面的例子是最常见的处理销售订单行Defer的请求:
 
3.4.       System Layer
Global Preferences
定义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_RESOUCE环境变量
WF_RESOURCE环境变量用于存储指向Workflow资源文件,EBS的资源文件为%FND_TOP%/%APPLRSC%/wf.res,不需要设置该变量。
 
3.5.       Notification Mailer
目前,Oracle Workflow支持SMTP协议(默认端口是25)处理出站消息、IMAP4协议(默认端口是143)处理进站消息,这也是Oracle Workflow对Mail服务器的要求。可以使用Microsoft Exchange作为Mail服务器,简单点,我们使用Imail。
IMAP4是Oracle Workflow Server对Mail Server的要求,对于用户,其客户端可以使用不支持IMAP4的Foxmail。
Imail设置
1. 按照默认选项安装 Imail
2. 启动Imail的服务:
SMTP/IMAP/Queue Manager/POP3
3. 创建Notification Mailer需要的用户,假定是wfmail;另外再建一个测试账号
huajhua
4. 用邮件客户端(文档说必须,所以我用Imail自带的Client)给wfmail创建三个目录:INBOX、PROCESS、
DISCARD

进入Workflow的配置管理界面
1. 进入OAM,需要有System Administrator职责:
2. Navigate to Worflow Manager 
3. 进入Service Components管理界面
启动两个Container服务
从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的管理器里面看相应用户的邮箱是否有东西。
 
 
 
4.       Oracle数据库
 
4.1.       系统管理
 
4.1.1.      如何启动Instance而不启动数据库
现象
在Windows下,Oracle是以Windows服务的形式存在,比如OracleServicePROD(PROD就是SID),启动它的时候实际启动了Instance(Load Parameter File,Configure SGA/Startup Background Process/Open Alert File and Trace File),接着又启动了数据库(Mount Control File/Open Data File)。
解决
设置注册表项HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0下的ORA__AUTOSTART=false即可
Note:If you use a user-friendly name for this customization as the replacement for , the following paragraphs will default nicely.
 
4.2.       常见问题
 
4.2.1.      ORA-12547: TNS:lost contact
现象
装完11.5.10,自己登录没有问题,从其他机器登录报ORA-12547: TNS:lost contact。查数据库Home下的network/admin/prod.log,发现信息:
TNS-12546: TNS:permission denied
 TNS-12560: TNS:protocol adapter error
 TNS-00516: Permission denied
原因
11.5.10默认情况下SQL*Net权限验证只允许本机访问。打开数据库Home下的network/admin/sqlnet.ora,有如下语句:
NAMES.DIRECTORY_PATH=(TNSNAMES, ONAMES,HOSTNAME)
SQLNET.EXPIRE_TIME= 10
sqlnet.authentication_services= (NTS)
tcp.validnode_checking = yes
tcp.invited_nodes=(HUAJHUA.leiko.com)
解决
把上面的tcp.validnode_checking设为no,或者在tcp.invited_nodes加入允许访问的IP或机器名。
 
 
4.2.2.      ORA-01031: insufficient privileges
现象
我重新安装操作系统之后,恢复了注册表(Software下Oracle分支、System下Oracle服务)、环境变量、C盘Program Files下的Inventory,但是启动的时候报ORA-01031: insufficient privileges。
sqlplus /nolog
connect / as sysdba
ERROR:
ORA-01031: insufficient privileges
原因
在Windows下没有建立ORA_DBA组(Unix是DBA组),并把当前登录用户加进去。执行connect / as sysdba的时候,Oracle要验证执行用户是否属于ORA_DBA组。 
1.       E-Business Suite Installation
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.
 
1.1.       Pre-Installation
操作系统
最好是干净的系统。
如果以前装过Oracle相关产品,要删除所有Oracle安装(注册表中的Oracle和服务、系统盘下的/Program Files/Oracle/Inventory、环境变量)。
Setup Printer On Windows
添加打印机,如果无法添加,请检查“Print Spooler”服务是否启动。如果没有装打印机,RPT类型的请求将无法运行,会报REP-3002: Error initializing printer。
可以添加实际的打印机,也可以添加虚拟的打印机,后者需要选择打印端口为“文件”。
接下来是选择驱动程序,如果是虚拟打印机,则随便选一个,比如Epson Stylus COLOR 1520K ESC/PK(图略)。
给打印机命名为“noprint”。
是否打印测试纸选择“否”。
Setup Hosts
设置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目录,重启。
Setup MKS Toolkit
必须安装MKS Toolkit,Oracle安装过程中需要调用Unix命令(比如which/cc),这些命令在Windows下没有,而MKS Toolkit可以在Windows下模拟大部分Unix命令。安装路径:E:/MKS。(Metalink说C:/MKS,不知道为什么不用MKS Toolkit默认的安装路径;我改成E盘根目录)
Setup GNU Make
Oracle安装过程中需要调用gnumake命令。从 http://ftp.gnu.org/pub/gnu/make/下载,比如make-3.80.tar.gz,解压,在 命令行下build_w32.bat,第一遍有问题,再运行一遍就可以了;然后把WinRel下的gnumake.exe拷贝到J:/MKS/mksnt。运行
 
1.2.       Installation
Using Stage Directory
可以从DVD光盘安装,也可以把所有文件拷贝到硬盘,然后从硬盘安装,避免安装过程中不停的换光盘。从 http://edelivery.oracle.com/EPD/GetUserInfo/get_form下载的文件,解压缩之后自然形成需要的目录结构,如下。
针对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张)
Start Rapidwiz
必须从命令行运行startCD/Disk1/rapidwiz下的rapidwiz,启动安装程序。
Welcome Informaiton
出来欢迎界面。
Select Wizard Operation
选择安装模式,初次安装请选择“Install Oracle Application E-Business 11i”,下面的“Use Express Configuration”不要选,这样我们可以自己配制安装选项,了解安装任务。
 
Load Configuration
第一次运行Rapidwiz,没有安装配置文件,所以要选择No,以后再启动Rapidwiz,就可以选择以前保存的安装配置文件。
Install Type
选择Single-node (All Services on a single node),所有服务都装在一台机器上。如果选择Multi-node,那么可以选择数据库和Concurrent Manager装在一台机器上,HTTP/FORM/REPROT服务和Application装在另一台机器上。
 
Define Database Type
选择Vision Demo的话会装一个演示环境,需要90G的空间。选择Fresh Database,会安装一个空的数据库,所有模块的设置都需要从头进行。
Database Install Information
选择数据库安装目录。选择Advance,可以把DB Oracle Home/SYS数据文件/LOG文件/Transaction数据文件/归档文件装在不同的磁盘上。这里没有提供控制文件的安装路径选择,只好待安装完之后,再来移动控制文件。
 
Select Licensing Type
这里的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的路径。
 
Global System Settings
必须输入一个域名。同时选择端口的偏移量,比如登录应用默认是8000,如果偏移1则为8001,其他各个端口都是如此;这样可以做到在一台机器上安装多个Instance而端口不会冲突;当然可以个别指定某一服务的端口,特别是当端口已被机器上的其他服务占用时,就必须个别指定了。
Save Instance-Specific Configuration
保存上面辛辛苦苦做的安装设置,以便下次重新安装或者Restart时直接使用。
 
System Check Status
加查各种环境是否满足安装要求,比如端口是否可用、域名解析是否通过、需要的基本命令是否可用、磁盘空间是否足够等等
Validate System Configuration
加查结果。必须所有项目均OK,否则必须查出原因,直到检查通过。我碰到过两个问题:某一端口被其他程序占用(于是我Back到前面步骤改了该端口)、System Unilities Chek通不过(查看明细发现Which命令不成功,于是我卸载MKS后重新安装)。
Component Installation Review
最后Review所有设置,后悔还来得及。
Installation Confirm
确认开始安装。
 
 
Step 1 Of 5
安装数据库,没有问题。
Step 2 Of 5
安装数据库文件,并进行字符集转换,没有问题。
 
 
 
Step 3 Of 5
安装应用服务IAS和8.0.6,有问题,最后一直停留在100%,硬盘也没读写。
关掉安装程序,rapidwiz -restart再次运行,这次要选择上次保存好的配置文件,安装程序自动跳过前两个Step,但Step 3依然有问题,再关掉,再用rapidwiz -restart,通过。
 
 
Step 4 Of 5
安装Application文件和Comn文件,如AU_TOP,Form,SQL,Report等,没有问题。
Step 5 Of 5
系统配置,执行AutoconfigAdadmin等,没有问题。
 
Post-Install Checks
安装完之后的各项检查,自动完成。
Finish
大功告成!
 
 
 
 
1.3.       Post-Installation
登录操作系统
运行%APPL_TOP下的envshell.cmd,进入命令行,envshell.cmd会调用APPSPROD_.cmd设置应用的环境变量,比如各个TOP。Unix下用应用帐户直接Telnet上去即可。
进入adadmin
命令行下运行adadmin,除了system的密码需要输入外,各个参数默认即可。
这样就进入到Adadmin主菜单。
Update Snapshot Information
更新快照信息,以后打patch需要,这一步需要近一个小时。需要把并发管理器停掉,最好把应用也停了,只留数据库。
选择2,Maintain Applications Files and Registry Menu。
选择5,Maintain Snapshot Information
选择2,Update Current View Snapshot即可
系统开始更新快照,耐心等待。
Compile Flexfields
在主菜单界面选择3,Compile/Reload Applications Database Entities menu。
进入之后选择3,Compile flexfields。
Apply Maintainace Patch
针对11.5.10,需要打Patch 3140000/346000;从Metalink下载。
下载下来解压到同一个目录,即可用adpatch工具打上去。
Apply 2451368 Patch
这里以打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。
 
1.4.       Installation Test
启停数据库、应用服务
进入Windows服务界面,启动顺序如下:
1、起来数据库服务
2、起来数据库侦听
3、起来应用侦听
4、这几个随便:apache服务,reports服务,forms服务,并发管理器服务
停止的时候反过来即可。
也可以通过命令来完成,请参考本文档相关章节;也可参考下面主页的Machine Admin Scripts。
登录
http://192.168.1.101:8000//OA_HTML/US/ICXINDEX.htm,以sysadmin登录。
选择System Adminsitrator职责
定义用户
请参考本文档相关章节。
Assign Responsibility To User
请参考本文档相关章节。
测试报表
运行Active Users报表。
View Output/View Log/Copy File
选择View Output,View Log,并在Tools菜单下选择Copy File…,看是否正常。
测试Export功能
查出上面建的用户,把鼠标移入Responsibility,选择File/Export,看是否弹出保存文件的窗口。
测试TCF Port
进入IE,输入 http://192.168.1.101:8000/OA_HTML/jsp/fnd/aolj_tcf_test.jsp?t=1,报“无法显示网页”,烦。
测试Jserv Port
进入IE,输入 http://192.168.1.101:8000/OA_HTML/jsp/fnd/aoljtest.jsp,看是否正常。
我的系统报:
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查了,以后用系统有问题再说。
CGI方式登录
http://huajhua.leiko.com:8000/dev60cgi/ifcgi60.exe,登录报APP-FND-01542,打开$APPL_TOP/admin/_.xml,把里面的 s_appserverid_authentication从SECURE改为OFF,adautocfg一下。
不过以后打Patch之前要记得改回来。
测试Workflow
以sysadmin登录,选择Workflow Administrator Web Applications职责,选择Item Type Definition,随便找一个,然后Run,参数随便填。下面是成功运行的工作流Requisition的Diagram。
2.       维护
 
2.1.       Patch
打Patch通用步骤
检查已安装模块版本:
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
 
2.2.       小系统性能调整
由于我的笔记本只有512M内存,所以有必要调整系统性能,否则跑起来太慢。对于内存超过1G的系统,可以不用考虑。
原来系统起来约用内存1.2G,登录系统后约1.3G-1.5G;经过调整,系统起来约用内存600M,进入系统之后700M多。
停止不必要的Windows系统服务
Windows本身有很多服务是可以停止的。具体可查看网上资料;最后我系统启动之后内存占用不到100M;启动Word2003之后约125M。
停止MKS相关程序和服务
MKS Secure Shell Service/MKS Telnetd/MKSAUTH/NuTCRACKER Service都不需要,可以设为手动。此外还有一个伴随Windows一起启动的MKS程序也干掉。
Oracle相关服务
把所有的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]
Init.ora
编辑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 JServ
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之后,这些都会被覆盖,所以要重新配置,不然会奇怪为什么内存突然又长上去了。
Concurrent Manager
通过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
参见下个主题。
JVM参数
最近又发现%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”,发现内存果然锐减!
 
2.3.       Seeded Concurrent Program Scheduled
系统安装之后,有几个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信息;本来是每天运行,先停掉再说。
3.       Workflow Configuration
这里指嵌在EBS中的Workflow。
中文安装可参考商XXXX的《Oracle_WorkflowServer_Setup_11.5.10.doc》,完整的参考资料见Oracle的《Oracle Workflow Administrator's Guide》。
$FND_TOP/admin/sql下有Workflow管理和诊断脚本。
 
3.1.       Basic
设置步骤
摘自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
 
3.2.       Database Layer
Table Partition
随着业务的增长和历史数据的增多,有几个工作流的表会越来越大,如果不进行分区,其性能(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
 
3.3.       Application Layer
Directory Service
在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
Background Engines
Workflow Background Process请求用来处理Timeount、Defer、Stuck的工作流;通常情况下我们需要分别为处理超时、阻塞、挂起各Schedule一个Workflow Background Process。
如果我们Schedule了该请求,但有时候等不及,也可手工提交;下面的例子是最常见的处理销售订单行Defer的请求:
 
3.4.       System Layer
Global Preferences
定义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_RESOUCE环境变量
WF_RESOURCE环境变量用于存储指向Workflow资源文件,EBS的资源文件为%FND_TOP%/%APPLRSC%/wf.res,不需要设置该变量。
 
3.5.       Notification Mailer
目前,Oracle Workflow支持SMTP协议(默认端口是25)处理出站消息、IMAP4协议(默认端口是143)处理进站消息,这也是Oracle Workflow对Mail服务器的要求。可以使用Microsoft Exchange作为Mail服务器,简单点,我们使用Imail。
IMAP4是Oracle Workflow Server对Mail Server的要求,对于用户,其客户端可以使用不支持IMAP4的Foxmail。
Imail设置
1. 按照默认选项安装Imail
2. 启动Imail的服务:SMTP/IMAP/Queue Manager/POP3
3. 创建Notification Mailer需要的用户,假定是wfmail;另外再建一个测试账号huajhua
4. 用邮件客户端(文档说必须,所以我用Imail自带的Client)给wfmail创建三个目录:INBOX、PROCESS、DISCARD

进入Workflow的配置管理界面
1. 进入OAM,需要有System Administrator职责:
2. Navigate to Worflow Manager 
3. 进入Service Components管理界面
启动两个Container服务
从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的管理器里面看相应用户的邮箱是否有东西。
 
 
 
4.       Oracle数据库
 
4.1.       系统管理
 
4.1.1.      如何启动Instance而不启动数据库
现象
在Windows下,Oracle是以Windows服务的形式存在,比如OracleServicePROD(PROD就是SID),启动它的时候实际启动了Instance(Load Parameter File,Configure SGA/Startup Background Process/Open Alert File and Trace File),接着又启动了数据库(Mount Control File/Open Data File)。
解决
设置注册表项HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0下的ORA__AUTOSTART=false即可
Note:If you use a user-friendly name for this customization as the replacement for , the following paragraphs will default nicely.
 
4.2.       常见问题
 
4.2.1.      ORA-12547: TNS:lost contact
现象
装完11.5.10,自己登录没有问题,从其他机器登录报ORA-12547: TNS:lost contact。查数据库Home下的network/admin/prod.log,发现信息:
TNS-12546: TNS:permission denied
 TNS-12560: TNS:protocol adapter error
 TNS-00516: Permission denied
原因
11.5.10默认情况下SQL*Net权限验证只允许本机访问。打开数据库Home下的network/admin/sqlnet.ora,有如下语句:
NAMES.DIRECTORY_PATH=(TNSNAMES, ONAMES,HOSTNAME)
SQLNET.EXPIRE_TIME= 10
sqlnet.authentication_services= (NTS)
tcp.validnode_checking = yes
tcp.invited_nodes=(HUAJHUA.leiko.com)
解决
把上面的tcp.validnode_checking设为no,或者在tcp.invited_nodes加入允许访问的IP或机器名。
 
 
4.2.2.      ORA-01031: insufficient privileges
现象
我重新安装操作系统之后,恢复了注册表(Software下Oracle分支、System下Oracle服务)、环境变量、C盘Program Files下的Inventory,但是启动的时候报ORA-01031: insufficient privileges。
sqlplus /nolog
connect / as sysdba
ERROR:
ORA-01031: insufficient privileges
原因
在Windows下没有建立ORA_DBA组(Unix是DBA组),并把当前登录用户加进去。执行connect / as sysdba的时候,Oracle要验证执行用户是否属于ORA_DBA组。

你可能感兴趣的:(ORACLE,ERP)