Oracle Fusion Application(FA)打补丁是管理Fusion应用的一个重要而有规律的管理任务。P4FA(Patch for FA)是对融合中间件,数据库,WebLogic Server等编写的可以一次性完成所有补丁任务的一个小程序。每个FA版本都有自己的一套P4FA补丁。 P4FA补丁是累积的,管理员最好始终应用最新的补丁以保持系统的健壮性。
P4FA中所有的补丁都可以手动安装,但一个一个手动打容易出错。FASPOT就是在这种情况下诞生了。FASPOT可以将P4FA的补丁自动进行安装。FASPOT原来只是Oracle 公司内部使用的一个工具 ,但自从2014年后,这个FASPOT脚本被捆绑到了P4FA补丁中并提供给客户使用了。这一技术大大简化了FA打补丁的维护过程与成本。本文介只是简单介绍一下如何利用FASPOT为P4FA打补丁。
FASPOT应用补丁大致有以下几种:
Fusion中间件组件补丁(包括atgpf,ODI,oracle_common,SOA,webtier,ECM,SES,WebCenter,WLS)
身份和访问管理(包括OID,OIM&OHS)
截止到目前P4FA提供的RDBMS补丁还不能使用FASPOT自动完成。
FASPOT的基本结构:
FASPOT目录结构如下所示:
FASPOT
| - README.txt文件
| - build.xml
| - config
| - …
| - ENV
| - faspot.properties
| - …
| - faspot.sh
| - patch_log_dir
| - …
| - setEnv.sh
| - tools
| - …
简单解释:
build.xml文件 - 包含了所有的补丁目标的FA环境
README.txt文件
faspot.sh - 脚本执行的ant目标内容
setEnv.sh - 脚本设置为FASPOT实用程序的执行环境。
ENV - 包含用户需要脚本执行之前更新属性文件。
faspot.properties - 包含有关安装的组件和修补程序下载位置的详细信息
faspot.properties.template - 示例模板文件,根据需要来填充值并产生faspot.properties
配置 - 包含产品特定的配置文件,并在运行时生成的模板。
工具 - 含有被用于setEnv.sh设置ANT_HOME ANT库文件等。
patch_work_dir - 在运行时,在用户需要的位置创建目录以供存放解压后的补丁文件。该目录将包含所有提取p4fa补丁,只此这个目录应该在所有主机共享的位置。
patch_log_dir - FASPOT脚本执行过程中生成的日志存储在此目录中。
1.编辑文件faspot.properties
编辑FASPOT属性文件,其中包含有关补丁需要安装的主机名,目录名,用户名,密码等信息。编辑这个文件通常是为这个特定P4FA补丁提供一些关键的信息。用户可以复制 /env/fasport.properties.template到 /env/fasport.properties并开始编辑该文件。
作为一个必不可少的步骤两个变量P4FA下载目录和补丁临时目录必须编辑类似于下面的例子:
PATCH_DOWNLOAD_DIR=/150304_0746_3_S/p4fa_patches
PATCH_WORK_DIR=/150304_0746_3_S/patch_work_dir
基于配置环境修改以下值:
#Modify the following values based on the configuration environment
#############GENERAL#########################################
#PATCH_DOWNLOAD_DIR should contain the following folders
### 1)rel92oneoffs
#############################################################
PATCH_DOWNLOAD_DIR=%PATCH_DOWNLOAD_DIR%
PATCH_WORK_DIR=%PATCH_WORK_DIR%
#############################################################
############FA(FMW COPONENTS)################################
#atgpf - ATGPF
#############################################################
ATGPF_HOST_NAME=%PRIMORDIAL_HOST_NAME%
ATGPF_ORACLE_HOME=/u01/APPLTOP/fusionapps/atgpf
ATGPF_JDK_LOC=/u01/APPLTOP/fusionapps/jdk6
ATGPF_DEFAULTS_FILE=/u01/APPLTOP/fusionapps/atgpf/admin/%ATGPF_FA_DB_SID%/defaults.txt
ATGPF_ADPATCH_WORKERS=4
ATGPF_FA_DB_SID=%ATGPF_FA_DB_SID%
ATGPF_FA_DB_USER=fusion
ATGPF_FA_DB_PASSWD=%ATGPF_FA_DB_PASSWD%
ATGPF_WEBCENTER_USER=fusion_webcenter
ATGPF_WEBCENTER_PASSWORD=%ATGPF_WEBCENTER_PASSWORD%
ATGPF_APM_USER=fusion_apm
ATGPF_APM_PASSWORD=%ATGPF_APM_PASSWORD%
ATGPF_FUSION_ORA_ESS_USER=fusion_ora_ess
ATGPF_FUSION_ORA_ESS_PASSWORD=%ATGPF_FUSION_ORA_ESS_PASSWORD%
ATGPF_FUSION_RUNTIME_USER=fusion_runtime
ATGPF_FUSION_RUNTIME_PASSWORD=%ATGPF_FUSION_RUNTIME_PASSWORD%
ATGPF_SYSTEM_PASSWORD=%ATGPF_SYSTEM_PASSWORD%
ATGPF_SYS_PASSWORD=%ATGPF_SYS_PASSWORD%
ATGPF_MIDDLEWARE_HOME=/u01/APPLTOP/fusionapps
ATGPF_WEBLOGIC_HOME=/u01/APPLTOP/fusionapps/wlserver_10.3
#############################################################
#bi - BI
#############################################################
#For SAAS P4FA patching is done from Primoridal host.
#Enter PRIMORDIAL_HOST_NAME for BI_HOST_NAME
BI_HOST_NAME=%PRIMORDIAL_HOST_NAME%
BI_ORACLE_HOME=/u01/APPLTOP/fusionapps/bi
BI_JDK_LOC=/u01/APPLTOP/fusionapps/jdk6
BI_WL_ADMIN_USER=FAAdmin
BI_WL_ADMIN_PASSWD=%WL_ADMIN_PASSWD%
BI_WL_ADMIN_URL=t3://bi.oracleoutsourcing.com:10201
BI_WL_ADMIN_HTTP_URL=http://bi.oracleoutsourcing.com:10201
BI_MIDDLEWARE_HOME=/u01/APPLTOP/fusionapps
BI_WEBLOGIC_HOME=/u01/APPLTOP/fusionapps/wlserver_10.3
BI_DOMAIN_HOME=/u01/APPLTOP/instance/domains/bi.oracleoutsourcing.com/BIDomain
#############################################################
#ecm - ECM
#############################################################
ECM_HOST_NAME=%PRIMORDIAL_HOST_NAME%
ECM_ORACLE_HOME=/u01/APPLTOP/fusionapps/ecm
ECM_JDK_LOC=/u01/APPLTOP/fusionapps/jdk6
ECM_WL_ADMIN_USER=FAAdmin
ECM_WL_ADMIN_PASSWD=%WL_ADMIN_PASSWD%
ECM_WL_ADMIN_URL=t3://admin-apps.oracleoutsourcing.com:7001
ECM_MIDDLEWARE_HOME=/u01/APPLTOP/fusionapps
ECM_WEBLOGIC_HOME=/u01/APPLTOP/fusionapps/wlserver_10.3
#############################################################
#EDQ
#############################################################
EDQ_HOST_NAME=%PRIMORDIAL_HOST_NAME%
EDQ_ORACLE_HOME=/u01/APPLTOP/fusionapps/edq
EDQ_JDK_LOC=/u01/APPLTOP/fusionapps/jdk6
EDQ_MIDDLEWARE_HOME=/u01/APPLTOP/fusionapps
EDQ_WEBLOGIC_HOME=/u01/APPLTOP/fusionapps/wlserver_10.3
#############################################################
#ODI
#############################################################
ODI_HOST_NAME=%PRIMORDIAL_HOST_NAME%
ODI_ORACLE_HOME=/u01/APPLTOP/fusionapps/odi
ODI_JDK_LOC=/u01/APPLTOP/fusionapps/jdk6
ODI_MIDDLEWARE_HOME=/u01/APPLTOP/fusionapps
ODI_WEBLOGIC_HOME=/u01/APPLTOP/fusionapps/wlserver_10.3
#############################################################
#OSN
#############################################################
OSN_HOST_NAME=%PRIMORDIAL_HOST_NAME%
OSN_ORACLE_HOME=/u01/APPLTOP/fusionapps/osn
OSN_JDK_LOC=/u01/APPLTOP/fusionapps/jdk6
OSN_MIDDLEWARE_HOME=/u01/APPLTOP/fusionapps
OSN_WEBLOGIC_HOME=/u01/APPLTOP/fusionapps/wlserver_10.3
#############################################################
#ORACLE COMMON - FA(FMW)
#############################################################
OC_HOST_NAME=%PRIMORDIAL_HOST_NAME%
OC_ORACLE_HOME=/u01/APPLTOP/fusionapps/oracle_common
OC_JDK_LOC=/u01/APPLTOP/fusionapps/jdk6
OC_DOMAIN_HOME_LOC_LIST=/u01/APPLTOP/instance/domains/admin-apps.oracleoutsourcing.com/CRMDomain,/u01/APPLTOP/instance/domains/admin-apps.oracleoutsourcing.com/HCMDomain,/u01/APPLTOP/instance/domai
ns/admin-apps.oracleoutsourcing.com/CommonDomain,/u01/APPLTOP/instance/domains/admin-apps.oracleoutsourcing.com/FinancialDomain
OC_MIDDLEWARE_HOME=/u01/APPLTOP/fusionapps
OC_WEBLOGIC_HOME=/u01/APPLTOP/fusionapps/wlserver_10.3
#############################################################
#SES
#############################################################
SES_HOST_NAME=%PRIMORDIAL_HOST_NAME%
SES_ORACLE_HOME=/u01/APPLTOP/fusionapps/ses
SES_JDK_LOC=/u01/APPLTOP/fusionapps/jdk6
SES_DOMAIN_HOME=/u01/APPLTOP/instance/domains/admin-apps.oracleoutsourcing.com/CommonDomain
SES_SEARCH_SERVER_NAME=search_server_1
SES_ESS_SERVER_NAME=ess_server1
SES_MIDDLEWARE_HOME=/u01/APPLTOP/fusionapps
SES_WEBLOGIC_HOME=/u01/APPLTOP/fusionapps/wlserver_10.3
#modify properties for ses psa response file
SEARCH.databaseType=Oracle Database
SEARCH.databaseConnectionString=%DATABASE_HOST_NAME%:%DATABASE_LISTENER_PORT%/%ATGPF_FA_DB_SID%
SEARCH.schemaUserName=SEARCHSYS
SEARCH.cleartextSchemaPassword=%SES_SEARCHSYS_PASSWORD%
SEARCH.dbaUserName=sys as sysdba
SEARCH.cleartextDbaPassword=%ATGPF_SYS_PASSWORD%
#############################################################
#SOA
#############################################################
SOA_HOST_NAME=%PRIMORDIAL_HOST_NAME%
SOA_ORACLE_HOME=/u01/APPLTOP/fusionapps/soa
SOA_JDK_LOC=/u01/APPLTOP/fusionapps/jdk6
SOA_MIDDLEWARE_HOME=/u01/APPLTOP/fusionapps
SOA_WEBLOGIC_HOME=/u01/APPLTOP/fusionapps/wlserver_10.3
SOA_DOMAIN_HOME_LOC_LIST=/u01/APPLTOP/instance/domains/admin-apps.oracleoutsourcing.com/CRMDomain,/u01/APPLTOP/instance/domains/admin-apps.oracleoutsourcing.com/HCMDomain,/u01/APPLTOP/instance/doma
ins/admin-apps.oracleoutsourcing.com/CommonDomain,/u01/APPLTOP/instance/domains/admin-apps.oracleoutsourcing.com/FinancialDomain
SETUP_FUSION_SOAINFRA_USER=SETUP_FUSION_SOAINFRA
SETUP_FUSION_SOAINFRA_PASSWD=welcome1
SCM_FUSION_SOAINFRA_USER=SCM_FUSION_SOAINFRA
SCM_FUSION_SOAINFRA_PASSWD=welcome1
PRJ_FUSION_SOAINFRA_USER=PRJ_FUSION_SOAINFRA
PRJ_FUSION_SOAINFRA_PASSWD=welcome1
PRC_FUSION_SOAINFRA_USER=PRC_FUSION_SOAINFRA
PRC_FUSION_SOAINFRA_PASSWD=welcome1
OIC_FUSION_SOAINFRA_USER=OIC_FUSION_SOAINFRA
OIC_FUSION_SOAINFRA_PASSWD=welcome1
HCM_FUSION_SOAINFRA_USER=HCM_FUSION_SOAINFRA
HCM_FUSION_SOAINFRA_PASSWD=welcome1
FIN_FUSION_SOAINFRA_USER=FIN_FUSION_SOAINFRA
FIN_FUSION_SOAINFRA_PASSWD=welcome1
CRM_FUSION_SOAINFRA_USER=CRM_FUSION_SOAINFRA
CRM_FUSION_SOAINFRA_PASSWD=welcome1
#############################################################
#PFCORE
#############################################################
PFCORE_HOST_NAME=%PRIMORDIAL_HOST_NAME%
PFCORE_ORACLE_HOME=/u01/APPLTOP/fusionapps/applications
PFCORE_JDK_LOC=/u01/APPLTOP/fusionapps/jdk6
PFCORE_MIDDLEWARE_HOME=/u01/APPLTOP/fusionapps
PFCORE_WEBLOGIC_HOME=/u01/APPLTOP/fusionapps/wlserver_10.3
PFCORE_PROV_FUSION_FILE=/u01/APPLTOP/instance/fapatch/FUSION_prov.properties
#############################################################
#WEBCENTER
#############################################################
WC_HOST_NAME=%PRIMORDIAL_HOST_NAME%
WC_ORACLE_HOME=/u01/APPLTOP/fusionapps/webcenter
WC_JDK_LOC=/u01/APPLTOP/fusionapps/jdk6
WC_MIDDLEWARE_HOME=/u01/APPLTOP/fusionapps
WC_WEBLOGIC_HOME=/u01/APPLTOP/fusionapps/wlserver_10.3
#############################################################
#WEBTIER-ADMIN
#############################################################
WT_ADMIN_HOST_NAME=%PRIMORDIAL_HOST_NAME%
WT_ADMIN_ORACLE_HOME=/u01/APPLTOP/webtier_mwhome/webtier
WT_ADMIN_ORACLE_COMMON_HOME=/u01/APPLTOP/webtier_mwhome/oracle_common
WT_ADMIN_WEBGATE_HOME=/u01/APPLTOP/webtier_mwhome/webgate
WT_ADMIN_JDK_LOC=/u01/APPLTOP/fusionapps/jdk6
#############################################################
#WEBTIER-APPSOHS
#############################################################
WT_APPSOHS_HOST_NAME=%WT_HOST_NAME%
WT_APPSOHS_ORACLE_HOME=/u01/APPLTOP/webtier_mwhome/webtier
WT_APPSOHS_ORACLE_COMMON_HOME=/u01/APPLTOP/webtier_mwhome/oracle_common
WT_APPSOHS_WEBGATE_HOME=/u01/APPLTOP/webtier_mwhome/webgate
WT_APPSOHS_JDK_LOC=/u01/APPLTOP/webtier_mwhome/webtier/jdk
#############################################################
#WEBLOGIC
#############################################################
WLS_HOST_NAME=%PRIMORDIAL_HOST_NAME%
MIDDLEWARE_HOME=/u01/APPLTOP/fusionapps
WLS_JDK_LOC=/u01/APPLTOP/fusionapps/jdk6
WEBLOGIC_HOME=/u01/APPLTOP/fusionapps/wlserver_10.3
#############################################################
#####DATABASE################################################
#############################################################
DATABASE_HOST_NAME=%DATABASE_HOST_NAME%
DATABASE_ORACLE_HOME_LIST=%DATABASE_ORACLE_HOME%
DATABASE_JDK_LOC=%DATABASE_ORACLE_HOME%/jdk
#############################################################
############IDENTITY AND ACCESS MANAGENEMT###################
#############################################################
#OHS - IDM
#############################################################
OHS_HOST_NAME=%OHS_HOST_NAME%
OHS_ORACLE_HOME=/u01/IDMTOP/products/ohs/ohs
OHS_ORACLE_COMMON_HOME=/u01/IDMTOP/products/ohs/oracle_common
OHS_WEBGATE_HOME=/u01/IDMTOP/products/ohs/webgate
OHS_JDK_LOC=/u01/IDMTOP/products/ohs/ohs/jdk
#############################################################
#OID - IDM
#############################################################
OID_HOST_NAME=%OID_HOST_NAME%
OID_ORACLE_HOME=/u01/IDMTOP/products/dir/oid
OID_ORACLE_COMMON_HOME=/u01/IDMTOP/products/dir/oracle_common
OID_JDK_LOC=/u01/IDMTOP/products/dir/oid/jdk
OID_DB_SID=oiddb
OID_DB_USER=ods
OID_DB_PASSWD=%OID_DB_PASSWD%
OID_TNS_ADMIN=/u01/IDMTOP/config/instances/oid1/config
OID_MIDDLEWARE_HOME=/u01/IDMTOP/products/dir
OID_WEBLOGIC_HOME=/u01/IDMTOP/products/dir/wlserver_10.3
OID_FAADMIN_USER_DN=cn=FAAdmin,cn=Users
OID_FAADMIN_PASSWD=fusionfa1
OID_ORACLE_INSTANCE=/u01/IDMTOP/config/instances/oid1
#############################################################
#OIM - IDM
#############################################################
OIM_HOST_NAME=%OIM_HOST_NAME%
OIM_ORACLE_HOME=/u01/IDMTOP/products/app/iam
OIM_ORACLE_COMMON_HOME=/u01/IDMTOP/products/app/oracle_common
OIM_JDK_LOC=/u01/IDMTOP/products/app/jdk6
OIM_MIDDLEWARE_HOME=/u01/IDMTOP/products/app
OIM_WEBLOGIC_HOME=/u01/IDMTOP/products/app/wlserver_10.3
OIM_DOMAIN_LOC=/u01/IDMTOP/config/domains/IDMDomain
OIM_DOMAIN_NAME=IDMDomain
OIM_SOA_HOME=/u01/IDMTOP/products/app/soa
OIM_OIF_HOME=/u01/IDMTOP/products/app/idm
OIM_WL_ADMIN_USER=weblogic_idm
OIM_WL_ADMIN_PASSWD=Fusionapps1
OIM_WL_ADMIN_URL=t3://%OIM_HOST_NAME%:7001
OIM_SOAINFRA_USER=FA_SOAINFRA
OIM_SOAINFRA_PASSWD=Fusionapps1
###################################
# This following values are for input property file used by the idmtools automated post-patch script.
# All the properties are mandatory.
#
## Provide the ANT_HOME location.
# Ex. ant_home: /u01/oim/modules/org.apache.ant_1.7.1/
oim_ant_home=/u01/oim/modules/org.apache.ant_1.7.1/
## Provide the JAVA_HOME location.
# Ex. java_home:/u01/oim/jrockit_160_24_D1.1.2-4/
oim_java_home=/u01/oim/jrockit_160_24_D1.1.2-4/
## Provide the MW_HOME location.
# Ex. mw_home:/u01/oim/
oim_mw_home=/u01/oim/
## Provide the IDStore Host Name.
# Ex. ldap_host:oidfa.us.oracle.com
oid_ldap_host=oidfa.us.oracle.com
## Provide the IDStore Port.
# Ex. ldap_port:3060
oid_ldap_port=3060
## Provide the IDStore Bind DN. This has to be the administrator user.
# Ex. ldap_binddn:cn=orcladmin
oid_ldap_binddn=cn=orcladmin
## Provide the IDStore Bind DN password.
# Ex. ldap_password:fusionapps1
oid_ldap_password=%oid_ldap_password%
## Provide the IDStore Read-Write User DN value.
# Ex. idstore_rwuser:cn=IDRWUser,cn=Users,dc=us,dc=oracle,dc=com
oid_idstore_rwuser=cn=IDRWUser,cn=Users,dc=us,dc=oracle,dc=com
## Provide the PolicyStore Read-Write User DN value.
# Ex. polstore_rwuser:cn=PolicyRWUser,cn=Users,dc=us,dc=oracle,dc=com
oid_polstore_rwuser=cn=PolicyRWUser,cn=Users,dc=us,dc=oracle,dc=com
## Provide the IDStore SearchBase value.
# Ex. idstore_searchbase:dc=us,dc=oracle,dc=com
oid_idstore_searchbase=dc=us,dc=oracle,dc=com
#########################
#####################################################
#PROPERTIES FOR OIM WLS PROFILE TEMPLATE
#############################################################
#DB configuration variables [Mandatory]
operationsDB.user=FA_OIM
OIM.DBPassword=Fusionapps1
operationsDB.host=adcdaa09-vip.us.oracle.com
operationsDB.serviceName=r5rctoim
operationsDB.port=1521
appserver.type=wls
# If you have multy-tenancy enabled in your environment
mdsDB.user=FA_MDS
mdsDB.password=Fusionapps1
mdsDB.host=adcdaa09-vip.us.oracle.com
mdsDB.port=1521
mdsDB.serviceName=r5rctoim
#oim specific domain level parameters[Mandatory]
oimserver_port=14000
oim_managed_server=wls_oim1
isMTEnabled=false
isFAEnabled=true
update_callbacks=NONE
###################################################################
修改完成后保存文件副本作为备份,将来可能需要小幅调整这个文件以适用于将来的P4FA补丁使用。
2.准备开始运行
解压补丁或称为stage。
1.stage操作就是提取P4FA补丁到从PATCH_DOWNLOAD_DIR到PATCH_WORK_DIR。这两个目录是在faspot.properties文件中指定的。
cd
ant -logfile prepare-patch-stage.log prepare-patch-stage
2.准备本地环境就是生成一些log目录和属性文件等。
Cd
ant -Dlogfile=prepare-local-env prepare-local-env
这里要注意一下,运行目标第一步可能会消耗很多时间和磁盘空间。因为所有存在PATCH_DOWNLOAD_DIR下面的补丁都会被解压转储到到目录PATCH_WORK_DIR下面。比如:在PATCH_DOWNLOAD_DIR补丁占用8.8 GB的磁盘空间,解压到PATCH_WORK_DIR后在磁盘上的大小可能是15 GB或更多。
3.FA运行环境的检查。
CD
ant fmw-prereq-check
如果验证目标存在任何失败,都需要修改属性文件再次验证,直到所有的失败都解决了。
4.AUTHOHS,OIM和OID主机环境的检查
cd
ant idm-prereq-check
ant idm-prereq-check-online
5.正式通过FASPOT打补丁
一旦验证步骤全部通过,就可以执行FASPOT安装补丁了。
cd
ant -Dlogfile=fmw-patch-apply-admin-apps fmw-patch-apply
ant -Dlogfile=fmw-patch-apply-appsohs fmw-patch-apply
ant -Dlogfile=idm-patch-apply-oid idm-patch-apply
ant -Dlogfile=idm-patch-apply-oim idm-patch-apply
ant -Dlogfile=idm-patch-apply-authohs idm-patch-apply
如果各个组件分别位于独立的主机上,那么它们可以同时自动打补丁。
6.通过FASPOT打补丁的后序工作:
ant -Dlogfile=idm-patch-postinstall_oid idm-patch-postinstall
ant -Dlogfile=idm-patch-postinstall_oim idm-patch-postinstall
ant -Dlogfile=idm-patch-postinstall_authohs idm-patch-postinstall
ant -Dlogfile=fmw-patch-postinstall fmw-patch-postinstall
ant -Dlogfile=fmw-patch-postinstall-appsohs fmw-patch-postinstall
后序脚本的执行需要先OIM再FA部分。
所有部分执行完成后,对目录里面的log进行逐一检查,看里面是不是有error 或是failed的信息。
可以命令egrep -I “failed|error” *.log 进行简单排查。
总体过程就是这样,这里再说一下总体的顺序:
1)下载并解压缩P4FA补丁(最好在通过为FA,IDM和OHS)的所有主机访问的共享文件系统
2)提取FASPOT补丁文件
3)配置文件faspot.properties的具体参数(使它在所有主机共享)
4)RDBMS P4FA要手动补丁,包括IDM数据库和FA数据库
5)关闭FA,IDM等所有组件,只启动这两个数据库。
6)验证配件好的属性文件
7)运行IDM和FMW自动补丁脚本
8)启动IDM和FA
9)运行IDM和FMW的后序脚本。
10)做功能测试,验证结果
版权声明:本文为博主原创文章,未经博主允许不得转载。