opatchとは

opatchとは9.2以降のバージョンで提供されているGUIインストーラが含まれないパッチの適用及びロールバック、適用済みパッチ一覧の確認等を行うツールです。


opatchの場所

opatchは10g以降では$ORACLE_HOME/Opatch配下にインストールされていますがパッチによってはより新しいバージョンのopatchが必要な場合があります。 最新版のopatchの入手はサポートサイトから入手することができます(サポート契約が必要)。

opatchによるパッチ適用

パッチ適用の基本的な手順は以下の通りです。なお、パッチによってはその他に必要な作業がある場合がありますので必ずパッチに付属するreadmeを確認して下さい。

1 oracle関連の全プロセスの停止
データベース、リスナー、クラスタウエア等すべてのoracle関連のプロセスを停止します。また、Windows環境の場合はOSがORACLEのファイルをロックする場合があるため作業前にOSを再起動することをお勧めします。
※11g以降、ホットパッチングという機能が追加されておりプロセスの停止が不要なパッチも存在しています

2 環境変数ORACLE_HOMEのセット
パッチを適用したいORACLE_HOMEのパスを環境変数ORACLE_HOMEにセットします。
$ export ORACLE_HOME=/app/oracle/product/10.2.0/db_1
なお、上記はbashを想定してexportを使用していますが、csh等では以下のようにsetenvにより変更します。
$ setenv ORACLE_HOME /app/oracle/product/10.2.0/db_1

3 パッチの解凍ディレクトリをカレントディレクトリにする
パッチはzip形式ファイルで提供されており解凍するとパッチ番号のディレクトリが作成されます。パッチ適用時はそのパッチ番号のディレクトリ直下で実行します。
$ cd /var/tmp/nnnnnnnn

4 パッチの適用
applyコマンド、またはnapplyコマンドで適用を行います。どちらで適用するかはパッチのreadmeに記載があります。
$ opatch apply
なお、「2」と「3」の作業は以下のようにオプション指定すれば不要です。
$ opatch apply -oh <ORACLE_HOME> -ph <パッチの解凍ディレクトリ>

opatchによるパッチのロールバック

上記1~3までの作業を実施した上でrollbackオプションを指定によってパッチをロールバックすることができます。
$ opatch rollback -id <パッチ番号>

補足

・インベントリの指定
パッチ適用時にはインベントリと呼ばれるインストール情報のメタデータからバージョン等が適合しているかチェックが行われます。 オプション指定なしの場合Windows環境以外はデフォルトのインベントリパスの設定ファイル(oraInst.loc)を参照するため参照インベントリを変更したい場合はデフォルトのoraInst.locを書き換えるか、 -invPtrLocオプションにより別のoraInst.locファイルを指定します。
opatch lsinventory -invPtrLoc $ORACLE_BASE/oraInventory/oraInst.loc
・RAC環境でのパッチ適用
上記手順でパッチ適用した場合全ノードへパッチ適用されます。ローリングアップグレード等でローカルノードのみパッチを適用する場合は-localオプションを指定します。
opatch apply -local

マニュアル

Oracle Universal InstallerおよびOpatchユーザーズ・ガイド10gリリース2(10.2) for Microsoft Windows and UNIX Systems
★ORACLE案件承ります