目录
EBS R12.2 有两套 apps 文件系统,一套为run 环境,常用目录为fs1,一套为patch环境,目录为fs2, 甚至如果你安装了或升级到了R12.2.0 , 那就可以使用这个特性,ADOP在线实施12.2.2,12.2.3或 12.2.4 补丁了。
一、 ADOP时,你可以自己加入参数,也可以与adop工具交互输入信息,无论选择哪种方式,aodp都会做以下的事情:
1. 读取patch metadata来判断patch的依赖关系和补丁前的一些需求(比如前置补丁)
2. 从之前的patch session上传patch信息到数据库(if applicable)
3. 读取和确认补丁driver文件以及读取产品driver文件
4. 对比来自于产品库的object modules和patch文件中已存在的文件版本号
5. 备份所有将要被patch更改的在系统已经存在的文件
6. 拷贝文件
7. 存档libraries中的文件
8. Relink 可执行文件
9. 生成 forms, reports, messages, graphics, 和Java archive (JAR) 文件
10. 编译JSP文件和数据库无效对象
11. 更新数据库物件
12. 运行autoconfig 更新配置文件,如果任何模板文件被引入或被patch更新的话
13. 保存patch信息到数据库
二、注意下面一些重要的事项:
1. adop总是从run版本文件系统上运行。它会自动正确设置它的环境变量,不管它从哪个版本运行。
2. 如果patch没有包含任何对文件系统或数据库的更新,adop会做任何动作。
3. 如果adop探测到之前failed的patching session,它会尝试去恢复这个session 。
4. 在整个正常adop过程中,数据库不需要downtime .
5. Cutover切换阶段需要停服务几分钟。
(1)是切换patch fs 与 runtime fs, 而不是同步,两个file system同步要到下次prepare阶段。
(2) 两个file system是不能同时运行的 ( Cutover先切换db edition然后是app file system)。
6. Cutover Phase包含一下过程 :
- Finalize (cutover也包括了finalize phase, 提前进行finalize可以节省cutover的时间)
- Application Tier Services Switch
- Database Cutover
- File System Cutover
- Retire Old Editions
- Terminate Old Database Sessions
- Application Tier Services Switch
因为数据库表的特殊性(size过大,不像应用code那么小),所以需要在cutover之前进行同步 (同步指的是runtime版本的table中的变化数据通过trigger同步到patch版本的table中,反过来,patch apply带来的变更仅仅在patch版本的table中进行,不会同步实施到runtime版本的table), 不像APP两套file system,patch apply期间应用不同步, 到了Cutover 阶段再进行交换
三、 EBS R12.2环境
1. 环境变量中会有如下几个:
$FILE_EDITION = patch 或者 run $RUN_BASE = /u01/R122_EBS/fs1 $PATCH_BASE = /u01/R122_EBS/fs2 $NE_BASE = /u01/R122_EBS/fs_ne R12.2 的环境文件在 /u01/R122_EBS/EBSapps.env $FILE_EDITION: Current fs edition type sourced values run or patch $RUN_BASE: RUN file system base directory $PATCH_BASE: Patch file system base directory $NE_BASE: non-editioned file systems base directory $APPL_TOP_NE: Application top that stores product files considered data 2、在设置环境变量后,用户登入时会提示是进入run[R]还是patch[P]环境。 File System1 (fs1)– Stores a complete copy of all applications and Middle Tier code File System1 (fs2)– Stores a complete copy of all applications and Middle Tier code fs_ne - File System NON Editioned (FS_NE) – Stores data that is written or read from the file system – Report Outputs – Log Files etc 3、手工切换run及patch文件系统: $ . /u01/R122_EBS/EBSapps.env run - 切换到run edition 文件系统 $ . /u01/R122_EBS/EBSapps.env patch - 切换到patch edition 文件系统
四、 ADOP 参数
$ adop -help 帮助 $ adop -examples 帮助及例子 $ adop input_file= 参数输入文件需要提供绝对路径, 主要参数包括: patches phase patchtop merge defaultsfile abandon restart workers 例子: phase=apply patches=123456 workers=8 autoskip=yes
1、adop正常的Phases(通过adop -help可查看):
adop phase=prepare -> copies the application code(同步fs1及fs2) adop phase=apply -> apply patches to PATCH Environment adop phase=finalize -> makes ready the system for cutover, 提前进行finalize可以节省cutover的时间 adop phase=cutover -> bounce the system and does filesystem switchover. fs2 becomes RUN environment. 用户不可用。 adop phase=cleanup -> remove obsolete objects and data from old editions.
2、特殊的几个phases:
adop phase=abort -> 在cutover阶段之前的任何时间都可以实施abort而终止current patching cycle. 回滚任何已经实施的更改。 adop phase=fs_clone -> synchronize - copy run file system to the patch file system adop phase=actualize_all -> create new copies of all code objects in the patch edition. phase参数 用来告诉adop 它该运行那个阶段,包括:prepare,apply,finalize,cutover,cleanup,actualize_all,fs_clone,abort。 传参数运行的时候,可以用逗号隔开,指定多个阶段,fs_clone和abort这俩阶段不能和其他的阶段一起。比如 'phase=prepare,apply' . merge参数 merge默认是no, 如果设置为yes, 将会合并多个patch,一次性操作(注意逗号两边不能有空格)。 $adop phase=prepare,apply patches=18288881,18886213 merge=yes workers=24 AD Merge Patch 在adop中还是支持的, AD Merge Patch的功能目前已经包含在adop中了。 当运行adop想要merge 补丁,在adop后指定 merge=yes。 merge会删除drv中的一些重复的行,步骤和readme文件也会merge 。
workers参数
默认情况下,adop执行数据库更新及文件生成命令都是使用多个workers并行执行的,默认workers数据是根据硬件配置计算的。这个workers值可以人工指定。tasks被分配给workers, workers运行完tasks后,adop分配新的tasks. 如果指定workers超过了机器能处理的个数,adop将会报错并退出. adop 以一定顺序执行数据库actions, 在driver文件中的数据库部分,他们执行的顺序并不一定按照patch drv文件中列出的顺序执行,它们会最小化依赖关系。
abandon/restart 参数:
abandon 指定是否重启之前运行的adop,如果之前运行的有错误(如果之前的adop有错误,若abandon没有被设置为yes,那上次的错误的参数会被用到本次运行),那就可以用它。取值:yes/no 。restart:也是指定是否重启之前运行的adop,如果之前运行的有错误。restart和abandon的区别是,restart是接着上次失败的地方往下打,abandon是放弃上次的,这次从头开始打。
这两个参数必须同时出现而且必须是一个yes另一个no :
abandon=no restart=yes will retry a patching operation,不放弃,从之前失败的地方开始。
abandon=yes restart=no will not retry a patching operation,放弃,重新开始。
查看一个patch现在是到了什么阶段 ?
adop -status
ADOP执行后的Log放在如下目录:
$NE_BASE/EBSapps/log/adop//__
五、 运行ADOP
1、典型的例子:
# 注意adop需要在解压的目录 12345 同一目录执行,而不需要cd到12345下。和adpatch不同。 $ . /EBSapps.env run $ adop phase=prepare $ adop phase=apply patches=123456 worker=8 $ adop phase=finalize worker=8 $ adop phase=cutover worker=8 $ . /EBSapps.env run $ adop phase=cleanup
2、监控状态:
$ adop -status
$ adop -status -detail 列出最新10个adop session
2、监控状态:
如果在cutover之前碰到错误,可以abort. $ adop phase=prepare $ adop phase=apply patches=123456 worker=8 [Patch application encounters problems and you want to abort] $ adop phase=abort $ adop phase=cleanup cleanup_mode=full $ adop phase=fs_clone
3、 restart ADOP
见前面的 abandon/restart 参数 。
4、监控状态:
在cutover时不希望启动app tier 可加入参数mtrestart=no
$ adop phase=cutover mtrestart=no
With this parameter, cutover will complete without restarting the application tier services. You can perform any additional steps that require the services to be shut down, and then start the application tier services manually using the adstrtal.sh script.
5、多语言patch merge
To apply multiple patches to an NLS installation
This example assumes the system has American English, French, and German installed.
Use adop to start a new patching cycle (adop phase=prepare).
Use AD Merge Patch to merge the US (American English) patches into a single patch.
Use AD Merge Patch to merge the French and German patches into a single NLS patch.
Use adop to apply all drivers of the merged US patch.
Use adop to apply all drivers of the merged NLS patch.
Use adop to complete the patching cycle (finalize, cutover, cleanup phases).
6. Error Messages
如果使用adop并行执行,碰到错误,job fails, 查看主要的 adop log文件及 adworkxxx.log 文件来查看错误源,解决问题后继续。 使用 adctrl 命令 restart .
7. patch测试模式 (apply=no)
这种模式不会apply patch, 它会列出copied, relinked, executed, generated 的文件,在测试模式,也会运行AutoConfig , 来确定即将对于配置文件的更改。
8. adop 的各种选项
比如: adop options=nocopyportion,nogenerateportion (同样逗号两边不能有空格)
options=noactiondetails 不打印actions detail
options=noautoconfig 依次打多个补丁而只想autoconfig一次,使用这个选项。显然adop时的autocfg不需要停应用。
options=nocompiledb 不自动编译数据库无效对象,在所有非merge补丁打完后做一次 (一般建议merge).
options=nocompilejsp 不自动编译JSP.
options=nocopyportion 不执行driver文件中的copy 动作。
options=nodatabaseportion 不执行 database-related driver 部分的动作.
options=forceapply 默认noforceapply, forceapply 重新执行已经执行的patch .
options=nogenerateportion 不执行driver文件的generate actions 。
9. AD Merge Patch (admrgpch) 的各种选项
111,222 是解压的patch文件夹
$ cd /u01/R122_EBS/fs_ne/EBSapps/patch
$ ls
111 222 fnd
$ admrgpch -s /u01/R122_EBS/fs_ne/EBSapps/patch -d /u01/R122_EBS/fs_ne/EBSapps/patch/test
$ cd /u01/R122_EBS/fs_ne/EBSapps/patch/test
$ ls
fnd u_merged.drv
You can then apply this patch:
$ adop phase=apply
文章评论