Windows Oracle Database にパッチを適用してみた

まずは情報収集

Windows版のOracleの場合、DBバンドルパッチという形で提供されているようなので、それを当てることにする。
その前に、MOS(My Oracle Support)で、パッチ検索しておく。
推奨は2件。

パッチ19852357 ORACLE JAVAVM COMPONENT 12.1.0.1.1 DATABASE PSU - GENERIC JDBC PATCH (OCT2014)
パッチ20160748 WINDOWS DB BUNDLE PATCH 12.1.0.1.16

READMEを読むと、OPatchを新しくしとけってあるので、p6880880もダウンロードしておくこと。

パッチ適用準備

ダウンロードしておいたパッチのzipを解凍。
OPathのほうは、ORACLE_HOMEの下に既にOPatchが存在するので、OPatch_oldか何かにリネームしてp6880880のほうをコピペする。
それ以外のほうは、ORACLE_HOMEの下にpatchディレクトリを作って、その中にフォルダ毎放り込んでおく。
patchディレクトリの下に、19852357ディレクトリや20160748ディレクトリを置くことになる。

パッチ適用

ここから先はコマンドプロンプトで実行する。まずは、パスを通すのと、ディレクトリ移動。

set ORACLE_HOME=C:\app\oracle12c\product\12.1.0\dbhome_1
set PATH=%ORACLE_HOME%\OPatch;%ORACLE_HOME%\perl\bin;%PATH%
cd %ORACLE_HOME%\patch\20160748

20160748のREADMEによれば、サービス停止しておけとあるのでサービス停止。

net stop OracleServiceORCL
net stop OracleOraDB12Home1TNSListener
net stop OracleVssWriterORCL
net stop OracleOraDB12Home1MTSRecoveryService

パッチ状態の確認(事前)。

opatch lspatches
opatch lsinventory

パッチ適用。

opatch apply

20160748のREADMEによれば(後略

net start OracleServiceORCL
net start OracleOraDB12Home1TNSListener
net start OracleVssWriterORCL
net start OracleOraDB12Home1MTSRecoveryService

sqlplus /nolog
conn / as sysdba
startup                      ←上のサービス開始で始まっているんだけど、README通りだとこれ。
quit

パッチ適用されているかどうかの確認。

opatch lspatches
opatch lsinventory

20160748のREADMEによれば、これが必要。19852357ではこんなの書いていないので、READMEで各パッチ毎に指示があるはず。

datapatch -verbose

19852357のほうもREADME読みながらやってみた。こっちは基本上と同じ流れで、opatch applyのみで、datapatchはなし。
これでおしまい。振り返ってみると意外に簡単でした。