ヘッダーをスキップ
Oracle® OPatchユーザーズ・ガイド
リリース12.1 for Windows and UNIX
E49737-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

2 OPatchを使用したバイナリ・パッチ適用

OPatchは、Oracleのソフトウェアに個別パッチを適用またはロールバックするユーティリティです。パッチを適用する手動プロセスは、バイナリ・パッチ適用と呼ばれます。ビット・パッチ適用の場合は、OPatchユーティリティを使用して次の操作を実行できます。


注意:

パッチを適用する前には、必ず特別な手順について記載された、パッチのREADMEを参照してください。

パッチ操作を実行する前に、ORACLE_HOMEをバックアップすることをお薦めします。ORACLE_HOMEは、任意の方法でバックアップできます。ORACLE_HOMEの圧縮には、zip、cp -r、tarcpioなどの任意の方法を使用できます。


2.1 最新のOPatchユーティリティの取得

ORACLE_HOMEリリースをサポートしているOPatchのバージョンを使用する必要があります。たとえば、12.0.1 Oracleホームにパッチを適用する場合は、OPatchバージョン12.0.1を使用します。Oracleホームがバージョン11.2である場合は、OPatchバージョン11.2を使用します。

My Oracle Supportからダウンロード可能な最近リリースされたOPatch for 12.1リリースを使用することをお薦めします(パッチ6880880)。12.1.0.1.0リリースのARUリンクを選択します。

https://updates.oracle.com/download/6880880.html

最新バージョンのOPatchの参照方法に関するサポート・ドキュメントも参照できます(ドキュメントID 224346.1)。このドキュメントには、MOSからOPatchツールをダウンロードする方法に関するインストラクション・ビデオへのリンクが含まれています。

2.2 OPatchの使用

OPatchコマンドおよび使用可能なオプションを使用する前に、OPatchの前提条件が満たされていることを確認する必要があります。

2.2.1 パッチ適用ワークフロー

OPatchユーティリティを使用してGI/RACホームにパッチを適用する際には、通常次の手順を実行します。

  1. 環境変数ORACLE_HOMEの設定

  2. システムにインストールされている項目の確認

  3. パッチ適用の前提条件が満たされていることの確認

  4. パッチの適用

  5. 適用後のチェックの実行

2.2.1.1 環境変数ORACLE_HOMEの設定

OPatchによりGI/RACホームが存在するかどうかが検証されます。環境変数ORACLE_HOMEが、パッチを適用しようとしている製品のGI/RACホームに設定されている必要があります。環境変数の設定の詳細は、各ベンダーのドキュメントを参照してください。


注意:

Oracle Universal Installerのバイナリおよびインベントリが、パッチを適用するホーム内に存在する必要があります。

使用されるその他の環境変数は次のとおりです。

  • OPATCH_DEBUG - OPatchが実行する必要のあるロギングの量を指定するブール設定。

  • PATH — GI/RACホームのパス情報。


注意:

$ORACLE_HOME/OPatchを$PATHに追加すると、任意のディレクトリからOPatchコマンドを実行する場合に便利です。

2.2.1.2 システムにインストールされている項目の確認

次のステップは、システムにすでにインストールされている項目を確認することです。これには、opatch lsinventoryコマンドをpatchまたはpatch_idのいずれかのオプションで使用します。

例2-1 lsinventoryコマンド

opatch lsinventory

このコマンドの詳細は、lsinventoryを参照してください。

2.2.1.3 パッチ適用の前提条件が満たされていることの確認

現在のシステム構成が適用するパッチに適切なものであることを確認したら、パッチを適用する前にOPatchが実行する操作を表示して、パッチの適用前にすべてのシステム前提条件が満たされているかどうかを確認することをお薦めします。これには、OPatchの-reportオプションを使用して、アクションを実際には実行せずに、OPatchが実行するパッチ適用アクションをすべて出力します。

例2-2 reportオプション

opatch apply -report

-reportオプションの詳細は、「OPatchの構文およびコマンド」を参照してください。

2.2.1.4 パッチの適用

システムにパッチが正常に適用できることを確認したら、OPatchを使用してパッチを適用します。これには、OPatchのapplyコマンドを使用します。

例2-3 applyコマンド

opatch apply /tmp/patch/12345678

このコマンドの詳細は、applyを参照してください。

2.2.1.5 適用後のチェックの実行

システムにパッチを適用したら、すべてのパッチが正常に適用されていることを確認するための最終チェックを実行する必要があります。これには、OPatchのlsinventoryコマンドをpatchまたはpatch_idのいずれかのオプションで使用します。このOPatchコマンドの詳細は、lsinventoryを参照してください。

2.3 パッチ・セット更新(PSU)の適用

前提条件チェックを確認したら、OPatchを使用してパッチを適用します。

OPatchユーティリティは、$Oracle_Home/OPatchディレクトリにあります。このユーティリティは、様々なコマンドおよびオプションを指定して実行できます。OPatchで使用できるコマンド・オプションの完全なリストは、付録A「OPatchの構文およびコマンド」を参照してください。

2.3.1 単一パッチの適用

前述の一般的なパッチ適用ワークフローに従って、単一パッチを適用します。

  1. 最新のOPatchユーティリティの取得

  2. 環境変数ORACLE_HOMEの設定

  3. システムにインストールされている項目の確認

  4. パッチ適用の前提条件が満たされていることの確認

  5. パッチの適用

  6. 適用後のチェックの実行

パッチをダウンロードしたら、次のコマンドを使用して適用できます(ステップ5)。

# opatch apply <patch directory location>/<patch ID>

例:

# opatch apply /tmp/patch/12345678

2.3.2 テキスト・ファイルを使用した複数パッチの適用

適用する必要があるすべてのパッチの場所を含むテキスト・ファイルを作成できます。OPatchを使用してファイルを参照し、パッチを適用します。

  1. パッチの場所に関するテキスト・ファイルを作成します。エントリでは、各行にそれぞれのパッチの場所が含まれている必要があります。

    vi patches.txt
    /tmp/patchlocation1/12345678
    /tmp/patchlocation2/12365478
    /scratch/patchlocation3/32165487
    

    変更を保存します。

  2. OPatchを使用してパッチを適用します。

    # opatch napply - -phBaseFile <location of text file>
    

    例:

    #opatch napply - -phBaseFile /tmp/patches/patches.txt
    

2.4 パッチの競合の検出および解決

OPatchは、パッチを適用する場合に、以前に適用したパッチとの競合を検出およびレポートします。競合がある場合、パッチの適用は失敗します。OPatchの-forceオプションを使用して、このエラーをオーバーライドできます。-forceを指定すると、インストーラは最初に競合パッチをロールバックしてから、目的の個別パッチのインストールに進みます。

不具合の競合が発生し、競合するパッチの削除が必要になる場合があります。このプロセスは、パッチのロールバックと呼ばれます。パッチのインストール時、OPatchは、新規パッチで置換されるすべてのファイルのコピーを保存してから、これらのファイルの新規バージョンをロードし、$ORACLE_HOME/.patch_storageに格納します。これらの保存されたファイルはロールバック・ファイルと呼ばれ、パッチのロールバックを可能にするためのキーとなります。パッチをロールバックする場合、これらのロールバック・ファイルがシステムにリストアされます。パッチのロールバック・プロセスを十分に理解している場合、必要な操作は-forceフラグを使用してデフォルトの動作をオーバーライドすることのみです。パッチをロールバックするには、次のコマンドを実行します。

$ OPatch/opatch rollback -id <Patch_ID>

別々のパッチ内の複数の修正により同じファイルが編集されているが、単一のエンティティとして一度にテストされていない場合、パッチの競合が発生します。OPatchおよびOPatchautoは、これらの状況を識別して競合を回避するために役に立ちます。パッチの競合が発生したが、その競合をドキュメント化されたサポート手順を使用しても解決できない場合、MOSが技術的な支援として信頼できるソースになります。競合の解決には、パッチ適用の問題に対応するためのサービス・リクエストのファイリングおよびマージ・ラベル・リクエスト(MLR)パッチの取得が必要になる場合があります。解決策が見つかったら、OPatchを使用して修正済のパッチを適用します。

一般的なパッチ適用シナリオ

パッチを処理する場合、パッチのコンテンツとGI/RACホームの状態に応じて、考えられるシナリオが4つ存在します。

次の表では、これら4つの状況と推奨アクションについて説明します。

GI/RACホームとパッチ・コンテンツ 説明 アクション
GI/RACホーム>パッチ パッチよりもGI/RACホーム内に多数の不具合修正が存在します。パッチを適用する必要はありません。 何もしない
GI/RACホーム<パッチ パッチよりもGI/RACホーム内の不具合修正の方が少数です。パッチを適用する必要があります。 パッチを適用します
GI/RACホーム=パッチ GI/RACホームとパッチの不具合修正が同数です。 何もしない
GI/RACホームとパッチに共通部分あり 特定の状況下では、不具合修正が重なっている場合とは異なり、パッチを適用する決定が困難な場合があります。たとえば、GI/RACホーム内の不具合修正が1、2、3および4であるとします。適用するパッチに含まれている不具合修正は、3、4、5および6です。この場合、不具合修正3および4は、GI/RACホームとパッチの両方に存在します。パッチをインストールすると、不具合修正3および4が失われます。パッチをインストールすると、一部の不具合修正が失われます。 Oracleサポートに連絡するか、またはMOSパッチ計画機能を使用して競合を解決します。

前述したように、すべてのパッチが相互に互換性があるとはかぎりません。これを競合状況といいます。OPatchはこのような状況を検出し、競合が検出された場合にエラーを生成します。次の項では、表に示したパッチおよび競合の状態について詳細に説明します。

2.4.1 パッチの競合

OPatchは、次のパッチの競合状態を検出できます。

2.4.1.1 GI/RACホームにパッチより多数の不具合修正が含まれている

この場合、GI/RACホームには、他の不具合修正に加えてパッチの不具合修正がすでに含まれています。

推奨アクション: 何もしない。

次の使用例を考えてみます。

  • GI/RACホームにインストールされたパッチAは、不具合の1、2および3を修正しました。

  • GI/RACホームにインストールされたパッチBは、不具合の10、11および12を修正しました。

  • これからインストールするパッチDは、不具合の1および2を修正します。

パッチDはパッチAのサブセットです。

skip_subsetオプションの使用

以前にGI/RACホームに適用され、現在適用する他のパッチのサブセットになっているパッチを省略する場合、
napplyskip_subsetオプションを使用できます。たとえば、不具合の1および2を修正するパッチAにnapplyを昨日使用した場合、不具合の1を修正するパッチBと不具合の1、2および3を修正するパッチCに対してskip_subsetオプションを指定してnapply
を今日使用するとします。
この場合、サブセット・パッチAは省略され、パッチCがパッチAのスーパーセットになります。

次の例では、skip_subsetフラグを使用した際に表示されるメッセージ出力を示します。

$ OPatch/opatch napply /<path to patch>/ -id 100,101 -skip_duplicate -skip_subset
Oracle Interim Patch Installer version 11.1.0.9.10
Copyright (c) 2012, Oracle Corporation.  All rights reserved.


Oracle Home       : /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1
Central Inventory : /<path to oraInventory directory>/oraInventory
   from           : /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1//oraInst.loc
OPatch version    : 11.1.0.9.10
OUI version       : 11.1.0.7.0
Log file location : /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1/cfgtoollogs/opatch/opatch2013-05-14_11-31-29AM_1.log

Verifying environment and performing prerequisite checks...

Conflicts/Supersets for each patch are:

Patch : 100

        Bug SubSet of 101
        Subset bugs are:
        111

Patch : 101

        Bug Superset of 100
        Super set bugs are:
        111Skip these patches because they are subset of other patches in the list:   100
Proceed with these patches:   101
Checking skip_duplicate
Checking skip_subset

OPatch found that the following patches are not required.
They are either subset of the patches in Oracle Home (or) subset of the patches in the given list 
(or) duplicate : 
   100
OPatch continues with these patches:   101  

Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.
Provide your email address to be informed of security issues, install and
initiate Oracle Configuration Manager. Easier for you if you use your My
Oracle Support Email address/User Name.
Visit http://www.oracle.com/support/policies.html for details.
Email address/User Name: 

You have not provided an email address for notification of security issues.
Do you wish to remain uninformed of security issues ([Y]es, [N]o) [N]:  Y

Backing up files...
Applying interim patch '101' to OH '/<path to OH directory>/oraclehome/11.1.0.6/dbhome_1'

Patching component oracle.rdbms.rsf, 11.1.0.7.0...

Verifying the update...
Patches 101 successfully applied.
OPatch Session completed with warnings.
Log file location: /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1/cfgtoollogs/opatch/opatch2013-05-14_11-31-29AM_1.log

OPatch completed with warnings.

表2-1は、applyコマンドおよびnapplyコマンドの予期される動作を示しています。

表2-1 予期される競合の動作

コマンド GI/RACホーム>パッチ GI/RACホーム<パッチ GI/RACホーム=パッチ GI/RACホームとパッチに共通部分あり

apply

OPatchは、自動ロールバックの次にapplyを実行します。

マージ・リクエストの後、OPatchは、自動ロールバックの次にapplyを実行します。

OPatchは、自動ロールバックの次にreapplyを実行します。

OPatchは競合をレポートします。マージ・リクエストの後、OPatchは、自動ロールバックの次にapplyを実行します。

napply

OPatchは、自動ロールバックの次にapplyを実行します。

OPatchはサブセットをレポートし、サブセットのパッチを省略します。その他のパッチを引き続き適用します。

OPatchは、自動ロールバックの次にreapplyを実行します。

OPatchは競合をレポートし、不具合の競合のパッチを適用せずに再実行するように求めます。

-forceオプションを使用し、競合パッチを自動ロールバックして、新しいパッチを適用するようにOPatchに指示することができます。


napplyの場合は複数のパッチが適用されているため、パッチとGI/RACホームの競合の場合と同様に、パッチがお互いに競合することがあります(OH>パッチ、OH<パッチ、OH=パッチおよびOHとパッチに共通部分あり)。パッチ間の競合が発生した場合は、同じ推奨アクションを適用する必要があります。

次の例では、<patch_location>ディレクトリの下にあるすべてのパッチを適用します。OPatchは、重複するパッチおよびサブセット・パッチ(<patch_location>の下にあるパッチで、GI/RACホームにインストールされているパッチのサブセット)を省略します。

例2-4

opatch napply <patch_location> -skip_subset -skip_duplicate

次の例では、<patch_location>ディレクトリの下にあるパッチ1、2および3を適用します。OPatchは、重複するパッチおよびサブセット・パッチ(<patch_location>の下にあるパッチで、GI/RACホームにインストールされているパッチのサブセット)を省略します。

例2-5

opatch napply <patch_location> -id 1,2,3 -skip_subset -skip_duplicate

2.4.1.2 パッチにGI/RACホームより多数の不具合修正が含まれている

パッチに、すでにGI/RACホームで修正されている不具合修正および追加の不具合修正が含まれている場合、このパッチはすでにGI/RACホームに適用されているパッチのスーパーセットであるとみなされます。パッチがスーパーセットの状態であることが検出された場合、エラーの状態であるとは判断されません。すべてのサブセット・パッチがシステムから削除され、新しいパッチが適用されます。

推奨アクション: パッチを適用します。

次の使用例を考えてみます。

  • GI/RACホームにインストールされたパッチAは、不具合の1、2および3を修正しました。

  • GI/RACホームにインストールされたパッチBは、不具合の10、11および12を修正しました。

  • これからインストールするパッチCは、不具合の1、2、3および4を修正します。

パッチCは、パッチAのスーパーセットとみなされます。

-no_bug_supersetフラグの使用

現在のパッチで修正する不具合が、GI/RACホーム・ディレクトリにインストールされているパッチで修正済の不具合のスーパーセットであるか同一の場合にOPatchをエラーにするには、-no_bug_supersetフラグを使用します。

$ OPatch/opatch apply -no_bug_superset <Path_To_Patch>

次の例の出力は、-no_bug_supersetフラグを使用したときに表示されるメッセージを示しています。

$ OPatch/opatch apply -no_bug_superset /<path_to_patch>/patch101_CP1/
Oracle Interim Patch Installer version 11.1.0.9.10
Copyright (c) 2012, Oracle Corporation.  All rights reserved.

Oracle Home       : /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1
Central Inventory : /<path to oraInventory directory>/oraInventory
   from           : /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1//oraInst.loc
OPatch version    : 11.1.0.9.10
OUI version       : 11.1.0.7.0
Log file location : /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1/cfgtoollogs/opatch/opatch2013-05-14_11-34-19AM_1.log

Applying interim patch '101' to OH '/<path to OH directory>/oraclehome/11.1.0.6/dbhome_1'
Verifying environment and performing prerequisite checks...
Interim patch 101 is a superset of the patch(es) [  100 ] in the Oracle Home
OPatch system modification phase did not start: Interim patch 101 is a superset of the patch(es) [  100 ] in OH /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1
Log file location: /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1/cfgtoollogs/opatch/opatch2013-05-14_11-34-19AM_1.log

OPatch stopped on request.

2.4.1.3 GI/RACホームとパッチに含まれている不具合修正が同数である

この場合、パッチは、別のパッチで修正されたものと同じセットの不具合を修正します。たとえば、不具合の1、2および3を修正するパッチAを適用した後、さらに不具合の1、2および3を修正するパッチBを適用する場合、パッチBはパッチAの重複になります。パッチは常にそれ自体の重複になります。

skip_duplicateオプションの使用

このオプションを指定する場合、OPatchは適用するパッチのリストから重複パッチを排除します。たとえば、前述のパッチAに対してnapplyを昨日使用し、パッチAおよび他のパッチに-skip_duplicateオプションを指定したnapplyを今日使用すると、重複パッチAが省略されます。

2.4.1.4 パッチにGI/RACホームにすでに存在する不具合修正のサブセットが含まれている

この場合、パッチの競合状態は、現在のパッチで修正される一連の不具合が、以前にインストールしたパッチの1つ以上ですでに修正されている不具合の一部と共通している場合に発生します。

推奨アクション: Oracleサポートに連絡します。MLRパッチが必要になる場合があります。

次に、パッチ適用時にこのパッチの競合状態が発生する例を示します。この例では、opatch applyがエラー・コード56で失敗しています。

$ OPatch/opatch apply /<path to patch directory>/patch100_CP0/
Oracle Interim Patch Installer version 11.1.0.9.10
Copyright (c) 2012, Oracle Corporation.  All rights reserved.

Oracle Home       : /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1
Central Inventory : /<path to oraInventory>/oraInventory
   from           : /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1//oraInst.loc
OPatch version    : 11.1.0.9.10
OUI version       : 11.1.0.7.0
Log file location : /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1/cfgtoollogs/opatch/100_May_14_2013_12_18_10/apply2013-05-14_12-18-09PM_1.log

Applying interim patch '100' to OH '/<path to OH directory>/oraclehome/11.1.0.6/dbhome_1'
Verifying environment and performing prerequisite checks...
Interim patch 100 is a subset of the patch(es) [  101 ] in OH /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1.
All the fixes of this patch 100 is already present in the Oracle Home. No need to apply this patch.
Log file location: /<path to OH directory>/oraclehome/11.1.0.6/dbhome_1/cfgtoollogs/opatch/100_May_14_2013_12_18_10/apply2013-05-14_12-18-09PM_1.log

Recommended actions: The fixes by this patch are currently in the Oracle Home. There is no need to apply this patch.

OPatch failed with error code 56