OPatchAutoは、バイナリ・パッチ適用と構成パッチ適用のための、Oracleの戦略的なツールです。サポートされている環境(Fusion MiddlwareおよびGrid Infrastructure)に対して、OPatchAutoは包括的なパッチ適用のために、すべてのノードで必要なすべてのステップを実行します。OPatchAutoは1回の呼出しで全部のシステムにパッチを適用できるため、次のような負担が軽減されます。
ホスト間を移動したり、コマンドを実行するための物理的作業
システム内のノード間で一連のコマンドを記憶するための知的作業
製品のパッチ適用ドキュメント(Database、Fusion Middleware、Enterprise Manager Cloud Control)では、OPatchAutoを使用して特定の製品にパッチを適用する方法について説明しています。このドキュメントはOPatchAutoのより深い概念と参考資料を製品に依存しない方法で提供することにより、これらのガイドを補強します。
パッチを適用するには、編成された一連の手順が必要です。OPatchAutoの名前が示すように、カスタマはこれらの手順を理解する必要はありません。単にパッチを適用するだけです。
ただし、次の条件を満たす場合は、カスタマが確認するために次の基本的なオーケストレーションの概念が必要です。
パッチの適用操作に失敗し、トラブルシューティングする必要があります。
ユーザーの本番システムのダウンタイム期間を活用するために、独自のコマンドをパッチ適用シーケンスにインターリーブすることの利点を確認します。この場合は、フェーズを理解している必要があります。
OPatchAutoコマンドを実行するためのデフォルトのシェルとして、bash
シェルを使用することをお薦めします。
GI/RACのインストールにはSSHユーザー等価が必要です。SSHユーザー等価の作成手順は、『Grid Infrastructureインストレーション・ガイド』に記載されています。OPatchAutoを使用するには、SSHユーザー等価も必須です。
ホーム所有者ごとに、個別にSSHユーザー等価を作成する必要があります。
パッチ適用をリクエストする前に、各ノードのすべてのホームでOPatchが最新バージョンである必要があります。これは単一ノードと複数ノードの両方のパッチ適用に必要です。
パッチ適用操作に概念的に関連のある手順は、フェーズと呼びます。すべてのフェーズを実行することで、ターゲットに対するパッチ適用操作が完了します。フェーズのスキップは、パッチが適切に適用されていないことを意味します。たとえば、Oracleホームへのビットの適用フェーズ/サブフェーズは、OPatchAutoではoffline:binary-patchingと呼びます。
opatchauto apply
の呼び出しのたびに、新しいセッションが生成されます。これは、すべてのフェーズを1回実行する(デフォルト)か、サブフェーズのみを実行する(拡張)かに関係なく作成されます。
コマンドへのフェーズの入力は、オプションであり拡張機能です。ただし、フェーズ間でのコマンドのインターリーブが必要な場合は、すべてのフェーズが実行されるようにOPatchAutoを複数回起動して特定のフェーズを正しい順序で指定する必要があります。フェーズは、サブフェーズで構成されます。ユーザーは、サブフェーズの粒度でツールを起動することもできます。–helpオプションにより、使用可能なフェーズとサブフェーズがリストされます。
フェーズはべき等であり、繰り返して実行できます。ただし、正しい呼び出しの順序に従っていない場合にツールによって通知されることはありません。(ER 21553825を参照してください。)
フェーズの概要は次のとおりです。それらは、(c)構成変更操作の(a)ブックキーピング、(b)ライフサイクル操作として指定できます。
初期化: 修正パッチの適用に必要とされる内部状態の初期化のためのブックキーピング操作。
停止: パッチの適用を可能にするためにランタイム・エンティティを停止するライフサイクル操作。
オフライン: システムの停止によってパッチ・コンテンツを適用する構成変更操作。たとえば、ビットの適用はここで発生します。そのため、このフェーズでopatchパッチがホームのOUIインベントリに記録されます。
起動: 停止したエンティティを稼働状態に戻すライフサイクル操作。
オンライン: システムが稼働状態になっていることが必要なパッチ・コンテンツを適用する構成変更操作。こうした構成変更にシステム・インベントリが含まれる場合、それらの変更もこの時点でシステムのインベントリに記録されます。
ファイナライズ: パッチ操作が完了したことを記録するブックキーピング操作。
製品のドキュメントでは、「準備」および「バイナリ/製品」というバリエーションを含むサブフェーズが記載されていることがあります。準備とは、「材料が整っていて構成変更を行っていない」ことを意味します。バイナリ操作ではOracleホームのみを変更します。製品の操作によって、構成されたシステム(ドメイン構成やデータベース・ディクショナリなど)が変更されます。
パッチの具体的なコンテンツは、Oracleホームと構成に行われた変更の具体的な内容を厳密に決定しますたとえば、ほとんどのFusion Middlewareのパッチには、オフライン・コンテンツの変更のみが含まれます。ただし、当然のことながら構成の変更が含まれることもあります。
一般に、セッションは暗黙的なパラメータであり、内部的に最後のセッションに設定されます。これは、セッションIDとして表現されてログに表示されますが、ユーザーが指定する必要はありません。ロールバック・パラメータを指定するための便利な方法として、セッションIDを指定できます。この場合、OPatchAutoはロールバックするパッチについて、そのセッションを照会するようになります。
パッチ計画では、特定の製品インスタンスのトポロジとは無関係にバッチをデプロイするために実行する一連の手順を記述します。パッチ計画は、Oracleのライフサイクル管理の専門家によって開発されたライフサイクル・プログラムであり、パッチが適用される特定の製品に専用のものです。
これらはオプションの拡張入力です。ただし、OPatchAutoはその実行をガイドするパッチ計画を内部的に選択します。たとえば、OPatchAuto applyとOPatchAuto rollbackは内部で自動的に各種のパッチ計画を暗黙的に選択しています。
ゼロ・ダウンタイム・パッチ適用など、より複雑なライフサイクル操作を実行する場合は、ユーザーがOPatchAutoにパッチ計画を入力します。こうしたライフサイクル操作に関する製品ドキュメントには、有効なパッチ計画の名前がリストされています。
OPatchAutoを使用すると、最低限の操作で一般的なGrid Infrastructure (GI)およびRACホーム・ディレクトリに自動的にパッチを適用できます。
OPatchAutoは、パッチ適用前チェックの大部分(「OPatchの使用」を参照)とパッチ適用後の検証を実行します。OPatchAutoの特長は、エンドツーエンドの構成パッチ適用を実行できることです。構成パッチ適用とは、構成に基づいてGIホームまたはRACホームにパッチを適用するプロセスです。構成情報をパッチ適用プロセスに組み込むことにより、OPatchAutoは手順のほとんどを自動化し、パッチ適用タスクの単純化を可能にします。
OPatchAutoは、GI/RAC構成およびその情報を使用して、サイト構成に固有のパッチ適用手順を自動的に生成します。次に、OPatchAutoはOPatchを使用してこれらの手順を実装し、パッチを実際に適用します。
Oracle Database 12cから、パッチは、パッチ自動化をサポートするためにシステム・パッチ形式に変換されました。
システム・パッチとは
システム・パッチには複数のサブパッチが含まれ、それらの場所はパッチの最上位レベル・ディレクトリ内のbundle.xmlというファイルによって決定されます。サブパッチは、データベース・ホーム編成に対応するシステムの別のサブシステム用です。
標準的なシステム・パッチの形式は次のように編成されています。
<System patch location - directory> |_____ Readme.txt (or) Readme.html bundle.xml automation |_____ apply_automation.xml |_____ rollback_automation.xml Sub-patch1 |_____ etc/config/inventory.xml |_____ etc/config/actions.xml |_____ files/Subpatch1 'payload' Sub-patch2 |_____ etc/config/inventory.xml |_____ etc/config/actions.xml |_____ files/Subpatch1 'payload'
注意:
Databaseリリース12c以前では、OPatchAutoはリリース済個別パッチではサポートされていません。これらの古いリリースについては、OPatchを使用してパッチのREADME手順に従う必要があります。
OPatchAutoおよびシステム・パッチは、Oracle Database 12c以上によってのみサポートされます。
その他のサポート対象パッチ・タイプ/構成
1つ以上の個別パッチ
1つの複合パッチ
1つのシステム・パッチ/バンドル・パッチ
1つのシステム・パッチ/バンドル・パッチと1つ以上の個別パッチ
複合パッチが含まれている1つのシステム・パッチ/バンドル・パッチ
複合パッチが含まれている1つのシステム・パッチ/バンドル・パッチと1つ以上の個別パッチ
1つのシステム・パッチ/バンドル・パッチと1以上の個別パッチおよび1つの複合パッチ
OPatchAutoは、次の一般構成に適用できます。
GIホーム共有
GIホーム非共有
RACホーム共有
RACホーム非共有
SIHAおよびSIDB
シャードおよびOGG
共有ホームと非共有ホームの構成上の相違点は、OPatchAutoを使用するパッチ適用モードを決定する際に効果を発揮します。「パッチ適用モード」を参照してください。
OPatchAutoは、GIまたはRACホームにパッチを適用する際に、ローリングおよび非ローリングの2つのモードをサポートしています。パッチ適用セッションを(最初のノードで)開始する際には、このノードでスタックを起動して稼働させる必要があります。これは、ローリングおよび非ローリングの両方のパッチ適用モードの場合に該当します。
ローリング・モード(デフォルトのモード): ローリング・モードでパッチ適用を実行する際には、特定のノードのORACLE_HOMEプロセスが停止され、パッチが適用されてから、そのノードが再度元の状態に戻されます。このプロセスは、すべてのノードにパッチが適用されるまで、GIまたはRAC環境の各ノードに対して繰り返し実行されます。これは、停止時間が発生しないため、Oracle RAC設定に個別パッチを適用する最も効率的なモードです。すべてのパッチがローリング・モードで適用できるわけではありません。この方法でパッチを適用できるかどうかは、通常はパッチ・メタデータに指定されます。パッチのREADMEでも、パッチをローリング・モードで適用できるかどうかが指定されます。opatchauto
コマンドが実行されるノード(GIホーム)はLOCALノードであるとみなされ、他のノードはすべてREMOTEノードであるとみなされます。
ローリング・モード・セッションを開始する際には、1つ以上のリモート・ノードを起動して実行中にする必要があります。
デフォルトでは、OPatchAutoはローリング・モードでパッチを適用します。
非ローリング・モード: 12cより前では、非ローリング・アップグレードがすべてのノードでOracleプロセスを停止するものとして定義されていました。12c以降の非ローリング・パッチ適用では、GIスタックをローカル・ノードで起動させる必要があります。最初と最後のノードでパッチを適用する操作では特別な手順を実行する必要があるため、操作を個別に処理する必要がありますが、他のノードと同時に行う必要はありません。非ローリング・パッチ適用は、次の3つのフェーズから構成されています。
12c以降の非ローリング・パッチ適用は、次の3つのフェーズから構成されています。
ノード1へのパッチ適用
ノード2からn-1へのパッチ適用
ノードnへのパッチ適用
非ローリング・モード・セッションを開始する際には、リモート・ノードを起動して実行中にはできません。すべてのノードのサービス(最初のノードを除く)を停止する必要があります。
次の図に示すように、指定したn個のノードに対して、1つ目のノードにパッチを適用して非ローリング・パッチ適用セッションを開始し、ノード2からn-1までに同時にパッチを適用して、最後にノードnにパッチを適用してパッチ適用セッションを終了します。
OPatchAutoを非ローリング・モードで実行するには、-nonrolling
オプションを明示的に指定する必要があります。
パッチ適用モードにおける競合
前述のとおり、デフォルトではOPatchAutoはローリング・モードでパッチを適用します。パッチがローリング・モードで適用されているが、パッチ・コンテンツがロール可能でない場合(コンテンツがローリング・モードでの適用をサポートしていない場合)、OPatchAutoがrootcrs.pl -prepatch
の実行を試みた際にエラーが発生します。
OPatchAutoは、次のプラットフォームをサポートしています。
Oracle Solaris on x86-64 (64ビット)
Linux x86-64
Oracle Solaris on SPARC (64ビット)
POWER Systems (64ビット)上のIBM AIX
HP-UX Itanium
Linux (32ビット)
OPatchAutoは、共有および非共有のOracleホームをサポートします。Oracle Databaseの混在バージョンを管理するクラスタ構成のパッチ適用をサポートしていますが、入力パッチの内容と一致するバージョンのデータベースのみにパッチを適用します。
注意:
Microsoft Windowsはサポートされません。