この章では、AutoPatchについて説明します。AutoPatchは、システムにパッチを適用するために使用するコマンドライン・ユーティリティです。また、AD Merge Patchについても説明します。AD Merge Patchは、パッチをマージしてパッチ適用時間を短縮するために使用するコマンドライン・ユーティリティです。この章には次の項があります。
Oracle Applicationsのファイル・システムまたはデータベースにパッチを適用するには、AutoPatchを使用します。AutoPatchは、一連のプロンプトを介してシステムに必要な情報を収集します。ユーザーがプロンプトへの入力を完了すると、AutoPatchは、パッチの適用に必要なすべてのタスクを実行します。タスクの例を次に挙げます。
パッチ・メタデータが読み取られ、パッチの依存性と要件が決定されます。
パッチ情報が以前のパッチ・セッションからデータベースにアップロードされます(必要な場合)。
パッチ・ドライバ・ファイルが読み取られて検証され、製品ドライバ・ファイルが読み取られます。
製品ライブラリのオブジェクト・モジュールのバージョン番号と、パッチ・ファイルに対する既存のファイルのバージョン番号が比較されます。
パッチによって変更される既存のファイルすべてがバックアップされます。
ファイルがコピーされます。
ファイルがライブラリにアーカイブされます。
実行可能プログラムが再リンクされます。
フォーム、レポート、メッセージ、グラフィックスおよびJavaアーカイブ(JAR)ファイルが生成されます。
JSPファイルと無効なデータベース・オブジェクトがコンパイルされます。
データベース・オブジェクトが更新されます。
パッチによってテンプレート・ファイルが導入または更新された場合、AutoConfigの実行によって構成ファイルが更新されます。
パッチ情報がデータベースに保存されます。
システム内のファイルまたはデータベース・オブジェクトに関する新しい更新がパッチに含まれていない場合、AutoPatchは実行されません。以前に失敗したAutoPatchセッションが検出された場合は、そのセッションのリカバリが試行されます。
パッチ適用セッションを開始する前に、いくつかの重要なタスクを完了しておく必要があります。
AutoPatchセッションを開始する前に、ワークフロー・ビジネス・イベント・システムを停止して、Oracle Applicationsの機能をユーザーが使用できないように、機能セキュリティを設定する必要があります。この設定によって、パフォーマンスが最適化され、パッチ適用時の停止時間が短縮されます。メンテナンス・モードでは、Oracle Applicationsの通常の実行時操作とメンテナンスのためのシステム・停止時間が明確に区別されます。
メンテナンス・モード(停止時間)中は、ユーザー・ログインが制限されます。ユーザーは、メンテナンス・セッションが進行中であることを示すシステム・停止時間URLにリダイレクトされます。Oracle Applications Manager(OAM)の「Maintenance Mode」ページでは、システム・停止時間のスケジュールを作成し、停止時間のスケジュールをユーザーに通知するアラート・メッセージを送信できます。
メンテナンス・モードを使用可能または使用不可にするには、AD Administrationの「Change Maintenance Mode」メニューを使用します。
注意: メンテナンス・モードが使用不可の場合は、コマンドラインでoptions=hotpatchを使用することで、AutoPatchを実行できます。ただし、「hot patch」を使用すると、パフォーマンスが大幅に低下する原因となります。「hot patch」の詳細は、「AutoPatchオプション」を参照してください。 |
追加情報: 『Oracle Applicationsメンテナンス・ユーティリティ』のメンテナンス・モードの変更に関する項を参照してください。 |
AutoPatchでは、メイン・ログ・ファイル(adpatch.log)に加え、特定の目的で他のログ・ファイルもいくつか作成されます。たとえば、パラレル・ワーカーに関連するすべての処理が記録されるログ・ファイルが作成されます。ログ・ファイルは、UNIXの場合、$APPL_TOP/admin/<SID>/logディレクトリに配置されます。<SID>はORACLE_SIDまたはTWO_TASK変数の値を示します。Windowsの場合は、%APPL_TOP%¥admin ¥<SID>¥logに配置されます。<SID>はORACLE_SIDまたはLOCAL変数の値を示します。AutoPatchセッションが完了したときに、これらのファイルを確認してください。
ログ・ディレクトリには、adpatch.logとadpatch.lgiが格納されます。また、次の表に記載されている1つ以上の追加ファイルが格納されることもあります。AutoPatchで処理が実行されない場合、そのタイプの処理に関連するログ・ファイルは生成されません。
ほとんどのADユーティリティに共通する標準的なプロンプトの他に、AutoPatchでは、パッチの適用処理に固有の情報を指定するプロンプトが表示されます。ユーザーは、実行する各ドライバに関するプロンプトすべてに応答する必要があります。
注意: 同一のOracle Applicationsシステムでは、複数のAutoPatchセッションを同時に実行しないでください。 |
デフォルトでは、AutoPatchのメイン・ログ・ファイル名はadpatch.logです。この名前は、関連するドライバ・ファイルを示すように、拡張子.logを使用して変更することをお薦めします。たとえば、u1234567.drvドライバの場合は、ログ・ファイルをu1234567.logとします。
パッチ・ファイルをUnzipしたディレクトリを指定するためのプロンプトが表示されます。デフォルトは、AutoPatchを起動したディレクトリです。必要に応じて、パッチ・ファイルをUnzipしたディレクトリのフルパス名を指定します。AutoPatchを実行するオペレーティング・システム・ユーザーには、そのディレクトリに対する書込み権限が必要です。
AutoPatchは、パッチ・ドライバ・ファイル名をプロンプトで要求します。デフォルトでは、パッチの整合性(ドライバ・ファイルのコピー処理で参照される各ファイルのバージョンが、パッチ内にあるバージョンと一致しているどうか)はチェックされません。これは、Oracle Applicationsのパッチには正しいファイルが含まれていることがリリース前のテストで確認されているためです。
デフォルトでは、データベース更新コマンドとファイル生成コマンドがパラレルで実行され、ワーカー数を入力するプロンプトが表示されます。タスクが各ワーカーに割り当てられ、そのワーカーがタスクを完了すると、新しいタスクが割り当てられます。
ワーカー数のデフォルト値は、AutoPatchを実行するノードにあるCPUの数の2倍です。CPUの数の2倍から4倍のワーカー数を指定することをお薦めします。
ワーカー数を指定すると、次のようなメッセージが表示され、Oracle Applications製品の更新が開始されます。
Performing version checking for driver files... Copying driver files into installation area... Determining valid on-site files... Screening out files not valid for this installation... Extracting object modules from product libraries... Performing version checking... Determining what executables to link... Determining what Oracle Forms files to generate... Determining what Oracle Reports libraries to generate... Determining what Oracle Reports files to generate...
追加情報: 『Oracle Applicationsメンテナンス・ユーティリティ』のパラレル処理のモニタリングと制御に関する項を参照してください。 |
非対話型のパッチ適用は、一部のプロンプトを回避し、パッチ適用処理を自動化して時間を短縮する方法です。非対話型でパッチを適用するには、特定のコマンドライン・オプションを使用してAutoPatchを対話型で実行し、デフォルト・ファイルを作成します。次に、デフォルト・ファイルの名前と他の関連するコマンドライン・オプションを指定し、非対話型で実行するようにAutoPatchに指示します。AutoPatch処理の完了後、パッチのREADMEファイルにリストされているAutoPatchの後処理ステップを実行します。
AutoPatchでは、様々な種類のメッセージが生成されます。各メッセージは、ログ・ファイルに記録されます。メッセージのリストと説明は、「ログ・ファイル」を参照してください。
情報メッセージは、情報メッセージ・ファイル(adpatch.lgi)に書き込まれます。このログ・ファイルは、AutoPatchのメイン・ログ・ファイルと同じファイル名を使用しますが、拡張子はメイン・ログ・ファイルの.logに対して.lgiという拡張子が使用されます。たとえば、AutoPatchログ・ファイルの名前がu1234567.logの場合、AutoPatch情報ログ・ファイルの名前はu1234567.lgiとなります。
たとえば、AutoPatchにより、情報ログ・ファイル内のファイルが最新であるため更新されなかったファイルに関する情報が書き込まれます。
File will not be copied to destination. Version check: /slot03/appmgr/prodappl/ad/12.0.0/xml/oam/patch/history/SearchFiles.uix version is equal to or lower than /slot03/appmgr/prodcomn/html/oam/patch/history/SearchFiles.uix. File will not be copied to destination. Version check: /slot03/appmgr/prodappl/ad/12.0.0/xml/oam/patch/history/SearchFilesCriteriaAdvanced.uix version is equal to or lower than /slot03/appmgr/prodcomn/html/oam/patch/history/SearchFilesCriteriaAdvanced.uix
AutoPatchでパラレル処理を使用しているときにエラーが発生すると、続行するかどうかを尋ねるプロンプトが表示されます。メイン・ログ・ファイル(adpatch.log)とadworkxxx.logファイルを確認してエラーの原因を判断し、問題を解決してから続行します。adctrlコマンドを使用してAutoPatchを再起動します。
ヒント: adctrlコマンドの使用方法の詳細は、『Oracle Applicationsメンテナンス・ユーティリティ』のパラレル処理のモニタリングと制御に関する項を参照してください。 |
問題を解決できない場合は、次を確認してください。
READMEファイル内のすべてのステップが完了していることを検証します。
適用しているパッチに関する追加情報をOracleMetaLinkでチェックします。
ワーカーのジョブが異常終了したことを示すメッセージが表示された場合、マネージャの実行中であれば、問題を解決してワーカーを再起動できます。異常終了したジョブは、マネージャによって遅延されます(ただちに再割当てされません)。これらのジョブによって、マネージャや他のワーカーが停止することはありません。
追加情報: 『Oracle Applicationsメンテナンス・プロシージャ』のワーカー・プロセスの管理に関する項を参照してください。 |
AutoPatchは、処理の完了時に、次のようなメッセージを表示します。終了メッセージが表示されない場合は、原因を調査してください。
A job timing report has been generated for the current session. You should check the file /slot03/appmgr/prodappl/admin/PROD/out/adt323790.lst for details. Purging timing information for prior sessions. sqlplus -s APPS/***** @/slot03/appmgr/prodappl/ad/12.0.0/sql/adtpurge.sql 10 1000 Done purging timing information for prior sessions. AutoPatch is complete. AutoPatch may have written informational messages to the file /slot03/appmgr/prodappl/admin/PROD/log/adpatch.lgi Errors and warnings are listed in the log file /slot03/appmgr/prodappl/admin/PROD/log/adpatch.log and in other log files in the same directory.
AutoPatchを実行すると、パッチをUnzipしたディレクトリにバックアップ・ディレクトリが作成されます。パッチによって更新される各ファイルの古いバージョンが、バックアップ・ディレクトリにコピーされます。大量のパッチ(Minipack、Family Pack、Maintenance Packなど)を適用する場合は、パッチをUnzipするシステムに十分なディスク領域があることを確認します。ディスク領域が不足していると、パッチ適用処理が失敗する可能性があります。Unzipされたパッチ・ファイルの2倍以上のディスク領域を用意することをお薦めします。
AutoPatchは、次の各ステップを実行して起動します。全ステップの詳細は、「対話型のパッチ適用」を参照してください。
ステップ1: 環境の設定
環境を設定して、システムを定義する構成パラメータを適用する必要があります。このタスクは、多くのADユーティリティで共通です。
ステップ2: パッチのUnzip
パッチ・トップ・ディレクトリがない場合は作成します。パッチ・トップ・ディレクトリにパッチをダウンロードし、Unzipします。
パッチをUnzipしたディレクトリで、README.txtファイルとREADME.htmlファイルを探します。いずれかのREADMEファイルで、パッチに関する情報とadmsi.plスクリプトの実行方法を確認します。
ステップ4: admsi.plスクリプトの実行
admsi.plスクリプトを実行して、パッチ用にカスタマイズされたインストール手順を生成します。カスタマイズされたインストール手順のステップを実行して、パッチ適用処理を完了します。
AutoPatchでは、事前インストールとテストの2種類のモードでパッチを適用できます。それぞれのモードを使用するタイミングは、パッチのREADMEファイルに記載されています。
事前インストール・モードは、アップグレード処理で一般的に使用され、ADユーティリティを更新したり、Family Consolidated Upgrade Patchを適用したり、その他パッチ適用上の問題に対応します。AutoPatchでは、データベース関連を除き、起動時におけるすべてのプロンプトが表示されます。
注意: パッチのREADMEファイルに指示されている場合のみ、AutoPatchを事前インストール・モードで実行してください。 |
AutoPatchを事前インストール・モードで実行するには、AutoPatchのコマンドラインにpreinstall=yを指定します。事前インストール・モードでは、次の処理が実行されます。
バージョン番号の比較
ファイルのコピー
FNDおよびADの実行可能プログラムの再リンク
ファイル・システムへのパッチ情報の保存
注意: 事前インストール・モードではドライバ・ファイルが読み取られないため、そのノード上に存在しない場合も、パッチ内の製品ファイルはすべてAPPL_TOPディレクトリにコピーされます。たとえば、管理サーバーのみを実装するAPPL_TOPにも、Formsファイルがコピーされます。また、パッチ内のファイルがAPPL_TOPおよび別のディレクトリ($OA_HTMLなど)にある場合でも、AutoPatchは、APPL_TOPにのみファイルをコピーします。 |
テスト・モードでは、パッチは適用されません。コピー、再リンク、実行または生成の対象となった各ファイルがリストされ、実際にパッチを適用したときに実行される処理をそのとおりに示します。また、テスト・モードでAutoConfigを実行し、構成ファイルに近い将来加えられる変更内容を判断します。これにより、本番システムに対するパッチの影響を、適用前に確認できます。
AutoPatchをテスト・モードで実行するには、AutoPatchのコマンドラインにapply=noを指定します。これにより、次の動作を除き、パッチ適用と同様に動作します。次の処理が実行されます。
パッチ・ディレクトリからOracle Applicationsファイル・システムへのファイルのコピー
オブジェクト・モジュールの製品ライブラリへのアーカイブ
実行可能プログラムの再リンク
フォーム、レポート、PL/SQLライブラリまたはメニュー・ファイルの生成
SQLコマンドまたはEXECコマンド(データベースを変更するコマンド)の実行
新しい構成ファイルのインスタンス化
パッチ情報ファイルの更新
データベースのパッチ情報とリリース・バージョンの更新
AutoPatchの操作方法は、AutoPatchの起動コマンドに修飾子を追加することで指定できます。修飾子は、引数またはオプションの形式で指定できます。AutoPatchが実行する処理は、この修飾子によって調整されます。
コマンドライン引数およびオプションは「token=value」の形式で、tokenは修飾子の名前です。引数と値は両方とも小文字で入力する必要があります(通常、「token」部分はAutoPatchで自動的に小文字に変換されますが、「value」部分は変換できません)。
次に例を示します。
$ adpatch LOGFILE=TEST.LOG
トークン(「LOGFILE」)は小文字に変換されますが、値(TEST.LOG)はユーティリティによって認識されません。このコマンドの正しい入力方法は、次のとおりです。
$ adpatch logfile=test.log
単一のコマンドラインに1つ以上のtoken=value引数を入力するには、次のAutoPatchコマンドのように、複数の引数を空白スペースで区切ります。
$ adpatch printdebug=y flags=hidepw
1つ以上の値を1つのトークンに含める場合もあります。この場合は、複数の値をカンマで区切ります。次に例を示します。
$ adpatch flags=nohidepw,trace
カンマ区切りのリストには空白スペースを含めないでください。たとえば、次のコマンドは無効です。
$ adpatch flags=nohidepw, trace
AutoPatch固有の次のような引数があり、これらの引数を使用して、AutoPatchの動作を変更および調整できます。
注意: 次の表では、デフォルト値は、ユーザーが値を指定しなかった場合に使用される値です。 |
options=引数を使用して、汎用的なオプションをAutoPatchに渡します。この引数は、カンマ区切りのリスト形式で指定します。1つのオプションまたはカンマで区切られたオプションのリストを入力します。たとえば、options=nocopyportion,nogenerateportionのように指定します。カンマの後ろには、空白を挿入しないでください。
AutoPatchを停止するには、任意のプロンプトで「abort」と入力します。ただし、ワーカーの実行が開始された後、AutoPatchを停止するには、AD Controllerでワーカーを停止するしかありません。
追加情報: ワーカーの停止方法の詳細は、『Oracle Applicationsメンテナンス・ユーティリティ』のユーティリティの終了または停止に関する項を参照してください。 |
パッチを個々に適用する場合、AutoPatchの全タスク(プロンプトへの応答、実行可能プログラムのリンクなど)は、各パッチごとに個別に実行されます。AD Merge Patchは、複数の(互換性のある)パッチを1つのパッチにマージします。これによって、余分なタスクが排除され、パッチ適用時間を短縮できます。
パッチをマージする際に、AD Merge Patchはメタデータに基づいてマージを実行し、ドライバのデータベース部分から重複するドライバ行を削除します。2つ以上のパッチを手動ステップでマージする場合、両方のパッチの手動ステップとREADMEファイルもマージされます。
ソース・ディレクトリとは、マージするパッチを抽出するディレクトリです。宛先ディレクトリとは、マージ・パッチが作成されるディレクトリです。AD Merge Patchは、ソース・ディレクトリ内の各パッチごとにパッチ・ドライバ・ファイルを読み込んでマージし、宛先ディレクトリ内にパッチ・ドライバ・ファイルを作成します。1つのファイルが複数のソース・パッチに存在する場合、宛先ディレクトリにコピーされるのは、改訂が最新のファイルのみです。ソース・ディレクトリと宛先ディレクトリには、相互に下位または上位となるディレクトリを指定できません。
ソース・ディレクトリと宛先ディレクトリを設定する際は、同じ親ディレクトリの下に両方のディレクトリを配置してください。たとえば、親ディレクトリ名が<top>の場合、ソース・ディレクトリと宛先ディレクトリは<top>のサブディレクトリとなるようにします。
ソース・ディレクトリは、マージするすべてのパッチを直下のディレクトリとして保持している必要があります。それよりも下位のディレクトリをパッチ・ディレクトリに指定することはできません。たとえば、4つのパッチをマージするディレクトリ構造は、次のようになります。
パッチZipファイルの名前と場所が記載されているマニフェスト・ファイルを使用するには、-manifestオプションを指定します。AD Merge Patchは、このファイルを参照し、リストされているパッチをUnzipします。次に、Unzipしたファイルをソース・ディレクトリにコピーして、ソース・ディレクトリ内の他のファイルと一緒にマージ・パッチに挿入します。
マニフェスト・ファイルは、パッチZipファイルの場所と名前を記載したテキスト・ファイルです。マニフェスト・ファイルの内容は、次の例に類似しています。
/d01/prodappl/patches/p3903945_12_GENERIC.zip/d01/prodappl/patches/p3892799_12_GENERIC.zip/d01/prodappl/patches/p3874740_12_LINUX.zip
AD Merge Patchは、AD_TOP/binディレクトリにあります。ただし、AD Merge Patchは、ソース・ディレクトリの親ディレクトリ(<top>)から実行します。
ステップ1: 環境の設定
環境を設定して、システムを定義する構成パラメータの位置を示す必要があります。このタスクは、多くのADユーティリティで共通です。
UNIX:
通常、環境ファイルはAPPS<CONTEXT_NAME>.envで、APPL_TOPの下にあります。Bourne、KornまたはBashシェルから、次のように入力します。
$ . APPS<CONTEXT_NAME>.env
Windows:
Windowsエクスプローラ、または「スタート」メニューの「ファイル名を指定して実行」を使用して、%APPL_TOP%¥envshell.cmdを実行します。これにより、「コマンド・プロンプト」ウィンドウが作成され、Oracle Applicationsの必須の環境設定が表示されます。この「コマンド・プロンプト」ウィンドウで、すべての後続のコマンドを実行します。
ステップ2: AD Merge Patchの実行
親ディレクトリ(<top>)から、次のコマンドを使用してAD Merge Patchを実行します。
admrgpch -s <source directory> -d <destination directory> \ -merge_name <name> [-manifest <manifest filename>]
たとえば、ソース・ディレクトリ/d01/patch_merge/sourceに、1234561、1234562、1234563、1234564という4つのパッチがあり、宛先ディレクトリが/d01/patch_merge/destinationであるとします。「merge99」というマージ・パッチを作成するには、次のコマンドを使用します。
UNIX:
$ cd /d01/patch_merge $ admrgpch -s /d01/patch_merge/source -d /d01/patch_merge/destination \ -merge_name merge99
Windows:
C:¥> cd ¥d01¥patch_merge C:¥> admrgpch -s d:¥patch_merge¥source -d d:¥patch_merge¥destination \ -merge_name merge99