机制:
安装补丁时,你既可以让adop提示信息指导你安装,也可以直接输入需要的信息而不需要adop提示。
——读取patch元数据,获取补丁的dependencies和requirements。
——如果这个补丁可以安装,从之前的补丁session里上传补丁信息到数据库。
——读取并验证补丁drivers文件,读取产品drivers文件
——从产品库和已经存在的文件的版本信息中,和这个补丁,对比对象模式的版本号。
——备份所有将要被此补丁改变的文件。
——拷贝文件。(详细信息见下文)
——归档libraties里的文件。
——Relinksexecutables
——生成forms,reports,messages,graphics,和所有java archive(jar)文件。
——编译jsp文件和数据库无效对象。
——更新数据库对象
——如果有任何的template文件被该补丁引进或者更新,运行autoconfig根性配置文件。
——保存补丁信息到数据库
注意以下几点:
adop永远是从 run edition file system中运行,他自动设置自己正确的环境。
如果补丁没有包含新的更新文件和数据库对象,adop不做任何动作
如果adop检测到一个之前的失败的补丁session,他会去尝试恢复那个session。
我们接续说说上文标红的拷贝文件的详细过程:
1、首先从ebs已安装的产品的 C library中抽取对应的文件。
2、把抽取出的文件对象模块和补丁目录里的相应的文件做比较,当然,除了C library文件还有forms,reports,sql脚本文件。
3、在补丁目录下备份ebs产品里需要替换的文件,举个例子:1234567是补丁目录;VIS是applications system名字;/u01/test/apps/fs1/EBSapps/appl/是APPL_TOP;GL是要打补丁的产品。那么,这个备份会从:
GL/子目录/要替换的文件 to 1234567/backup/VIS/vs022/gl/patch/115/要替换的文件
<PROD>_TOP/<subdir(s)>/<old_file_name>
to
<patch_dir>/backup/<system_name>/<appl_top_name>/<prod>/<subdir(s)>/<old_file_name>
4、用补丁目录里的新文件,替换产品目录下的旧文件。
5、在C library里装载新的对象模块。
6、relink这个产品到操作系统,oracle server,还有其他oracle 产品库。
7、如果需要,修改java class文件,生成JAR文件。
8、复制指定的HTML和media文件到指定产品目录
9、如果JSP文件被包含在patch文件里,编译过时的JSP文件。
:数据库部分:
1、获得apps schema下的当前所有无效对象的列表。
2、Determines whether the action was performed in a previous patch
3、Runs SQL scripts and EXEC commands, which change Oracle E-Business Suitedatabase objects. By default, adop runs scripts and commands in parallel.
4、 Compiles invalid objects in the database.
5、Assembles a list of current invalid objects in the APPS schema.
Generate Portion of a Unified Driver
Apply the generate portion of a unified driver on all APPL_TOP directories containing
one or more files being generated by the patch. When the generate portion of a driver
runs, adop performs these actions:
• Generates Oracle Forms PL/SQL library files
• Generates Oracle Forms menu files
• Generates Oracle Forms executable files
• Generates Oracle Reports PL/SQL library files
• Generates Oracle Reports files
• Generates message files
• Generates Oracle Workflow resource files
adop的参数:
有必须的,也有可选的,有一些参数能覆盖别的参数,有一些有更高的优先级,所有的参数的格式都是:name=values。
phase——用来告诉adop他该运行那个阶段,包括:prepare,apply,cutover,cleanup,finalize,actualize_all,fs_clone,abort。传参数运行的时候,可以用逗号隔开,指定多个阶段,fs_clone和abort这俩阶段不能和其他的阶段一起。(abort表示退出之前失败的session,这样之前session的参数就没有了,可以进行新的cycle了,我用了一次:adop phase=abort)
cleanup_mode:清除进程的控制,有full和quick两个参数值,full是最大清理,包括删除被覆盖的对象,没有用到的列;quick是最小化的清理,占用的时间少,默认值。
finalize_mode:用来指定finalize或者cutover阶段应当被设置成full还是quick。full的时候收集统计信息,以帮助提高性能,如果设置成这个finalize过程至少的用一个小时,quick模式不生成统计信息,默认值。
patches:指定adop要应用的补丁,有两种方式:一种是只有一串数字的那种目录;还有一种是有冒号加驱动的,一般是:HRMS Legislative(立法的)data patch、online help 补丁、语言补丁。。。如中文补丁包:patches=10124646_ZHS:u10124646.drv
workers:指定并行workers的数量。
patchtop:默认位置:/u01/test/apps/fs_ne/EBSapps/patch不过你也可以自己指定。
abandon:指定是否重启之前运行的adop,如果之前运行的有错误(因为如果之前的adop有错误,abandon如果没有被设置为yes,那上次的错误的参数会被用到本次运行),那就可以用它。取值:yes/no 。
restart:也是指定是否重启之前运行的adop,如果之前运行的有错误。restart和abandon的区别是,restart是接着上次失败的地方往下打,abandon是放弃上次的,这次从头开始打。
这两个参数必须同时出现而且必须是一个yes另一个no(mtP85):
abandon=no restart=yes will retry a patching operation
abandon=yes restart=no will not retry a patching operation
action:用来指定是否运行数据库cations,取值:db/nodb 。 action=nodb用来关闭数据库的actions,如果在多节点环境中,adop已经更新了数据库,但是你仍然更新文件系统到别的节点,这就非常有用了。
在多节点环境下,如果设置了allnodes=yes,那action=db也要设置。
autoskip:用来在非交互模式的补丁下,控制是否提示用户关于跳过的actions,默认值是yes 。。。。一个脚本叫:ADZDPATCHSTAT.sql在finalize阶段,给出补丁的状态信息:SUCCESS,SKIPPED and SUCCESS, SKIPPED, FAILED四种。
Examples:
phase=prepare,apply,finalize,cutover,cleanup
patches=123456
workers=4
相关日志位置:
其他一些日志如记录并行workers所有动作的worker log也放在s_ne_base下面:/u01/test/apps/fs_ne/EBSapps/log/adop
ad log 文件:
adrelink.log ——used for Relinking
adlibin.log —— used for Moving C object files into the C library of a product
adliboutlog —— used for Moving C object files out of the C library of a product
adworkxxx.log —— used for Database operations run in parallel
<language>_<filename>_ldt.log ——used for loader files
举例:
一般adop完成一个补丁需要如下阶段:prepare、apply、finalize、cutover、cleanup
比如你当前运行在fs1上,打一个补丁15955263:
adop phase=prepare 准备阶段
adop phase=apply patches=15955263workers=6 ——补丁会打到fs2上
adop phase=finalize,cutover,cleanup workers=6
这时经过cutover过程后,应用会切换到fs2上。
到下次再进行打补丁的时候,运行prepare过程会把当前fs2文件系统(因为在之前patch15955263你打在了fs2上)同步给fs1(这个时候fs1系统上就有patch 15955263了)。
然后你可以继续apply下一个补丁。有时候为了方便,我们可以一次apply好多个补丁,然后再cutover切换文件系统。这样节省文件系统来回切换的过程。
问答:
Note that a third file system, the non-editioned file system (fs_ne), is created to store files containing data that is needed across all file systems,such as log files.