Oracle Databaseのアウトオブプレース・アップグレードとインプレース・アップグレード

趣旨

Oracle Databaseのアップグレードをする方法として、アウトオブプレース・アップグレードとインプレース・アップグレードがあります。
Oracle Database 11g Release 2 (11.2.0.2) の公開に伴って、*1 アウトオブプレース・アップグレードとインプレース・アップグレードの違いがわかりにくくなっていると感じていました。
過去のリリースの慣例に捉われずにアップグレード・ガイドなどに書かれている内容を理解しようとすれば、それほどわかりにくくはないと思います。しかしアップグレード・ガイドとは異なる さまざまな説明を見ると、わかりにくさが増すような気がしています。それはその文に過去のリリースに慣れた方向けの説明などが加わり、異なることが同じことのように書かれていることが要因な気がしました。
では そのようなわかりにくい状態から どのようにしてまず概要を自分が理解したかを整理しなおして説明に用いた文章です。

アウトオブプレース・アップグレードとインプレース・アップグレードの違い

アウトオブプレース・アップグレード
英文表記: Out-of-Place Upgrade
( 日本語の技術資料では Out-of-Place アップグレードとも書かれる )

アップグレード対象製品のインストールされた Oracleホームの場所とは別の場所へ新たな Oracleホームを設け、その新たな Oracleホームへ新たにデプロイする形でインストールするアップグレード

インプレース・アップグレード
英文表記: In-place Upgrade
( 日本語の技術資料では In-Place アップグレードとも書かれる )

アップグレード対象製品のインストールされた Oracleホームの場所を一ヶ所にしたままデプロイする形でインストールするアップグレード

一ヶ所にしたままデプロイすることで入れ替えるニュアンスがリリース11.2より前と以降では異なる

  • リリース11.2の前までは、アップグレードする前に存在する古いリリースの既存の Oracleホームのディレクトリには特に手を加えず、OUIで既存の Oracleホームのディレクトリを指定して、同じ場所へ新しい製品を上書きでデプロイする形でインストールする。
  • リリース11.2以降は、アップグレードする前に存在する古いリリースの既存の Oracleホームのディレクトリを別の場所へ移動し、新しく同じ名前のディレクトリを作って、その作ったディレクトリへ新しい製品を新規にデプロイする形でインストールする。特定のディレクトリに保存された設定などは、このインストール前に移動した別の場所にあるディレクトリからコピーする。

インストール対象別のアウトオブプレース・アップグレードとインプレース・アップグレードの選択可否

インストール対象 アウトオブプレース・
アップグレード
インプレース・
アップグレード
補足
Database Client どちらが推奨ということはない
Database 可および推奨 アウトオブプレース・アップグレードを推奨。
特にスタンドアローン・サーバーへのインストールであったとしても、
Grid Infrastructureがインストールされている環境では Oracleホーム毎に
アップグレード・オプションを変えてしまうよりはアウトオブプレース・
アップグレード一択へ統一するほうが考慮事項の削減や人的ミスのリスクが
少ないと考えられる。
Grid Infrastructure 可および必須 不可 インプレース・アップグレードは不可のため、スタンドアローン・サーバー
へのインストールであったとしても、アウトオブプレース・アップグレード
を選択することが必須。

補足

リリース11.1まではパッチセットのインストールおよびインストール後に行うことは「パッチ・リリース・アップ」と言いました。Oracle® Databaseアップグレード・ガイド 11g リリース2(11.2) では「パッチ・セット・アップグレード」と書かれています。
たとえばリリース11.2.0.1 からリリース11.2.0.2へアップグレードするときにアウトオブプレース・アップグレードすることは「アウトオブプレース・パッチ・セット・アップグレード」、インプレース・アップグレードすることは「インプレース・パッチ・セット・アップグレード」という表現がされることもあります。*2

謝辞

この記事をここに書くきっかけとなった「自分はこうして理解した」を まとめられた あなたが知らないかもしれないOracleパッチの数々 - Keep It Simple, Stupid への敬意を表します。

*1:Oracle Database 11g Release 2 (11.2)のベースリリース11.2.0.1 が出荷された時から、つまりリリース11.2のできたときから各種ドキュメントには明記されていました。リリース11.2.0.2公開後に追記されたのではありません。

*2:パッチセットのパッケージングが変わっているため あまり使われることはないと思います。