机制:
安装补丁时,你既可以让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切换文件系统。这样节省文件系统来回切换的过程。
问答:
- What are the phases that make up the Online Patching cycle?
The Online Patching cycle consists of the following phases:- Prepare a virtual copy (patch edition) of the running application (run edition).
- Apply patches to the patch edition of the application.
- Finalize the system in readiness for the cutover phase.
- Cutover to the patch edition and make it the new run edition.
- Cleanup obsolete definitions or data to recover space
- What downtime is required during an Online Patching cycle?
The cutover phase requires a short period of downtime (typically a few minutes) for transition tasks such as a restart of the application tier services
- How does Online Patching work on the application tier?
During Release 12.2 installation, Rapid Install will lay down two copies of the application tier file system. One of the copies will be labeled as therun file system, and the other as thepatch file system.Subsequently, when a patch is applied, adop will:- Synchronize the contents of the run file system to the patch file system. This happens during theprepare phase.(在prepare阶段,同步run file system 到patch file system)
- Perform patching actions on the patch file system. This happens during theapply phase.
- Finally, during the cutover phase, the adop utility restarts the application tier services. The patch file system is then promoted to be the new run file system, and the old run file system becomes the patch file system for the next patching cycle.
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.
- Is it possible to abort an Online Patching session?
Yes. Up to cutover, you can run the abort phase to undo the changes made so far in the patching cycle. It is not possible to back out patches once cutover is complete.
- How does adop work in a multi-node environment?
The adop Online Patching tool uses remote APIs and ssh login to execute patching operations on remote nodes in a multi-node environment. The node that launches adop becomes the ‘master’ node, and the remote nodes are referred to as ‘slaves’.
如果应用层services是down的,那么adop可以照常运行,adop还可以在有需要的时候启动这些应用层的services。
- Will AutoConfig and adadmin maintenance tasks such as adrelink be performed online?
Yes, these maintenance tasks will be performed online. The relevant operations will be targeted to the patch file system, and should be performed during a patching cycle. They will not have any impact on the run file system.