2011/10/20

Oracle11gR2のpatch applyで詰まった件(mstdcが原因だった)

WindowsServer2008R2でOracle11gR2にパッチを当てた際のメモ。

パッチ適用対象:Oracle Database 11g R2 x64

[Path_to_OPatch]/opatch -version
[Path_to_OPatch]/opatch lsinventory -detail
で現在のバージョン状況を確認する。

サービス一覧から、Oracle○○という名称のサービスをすべて停止する。

[Path_to_OPatch]/[PatchID]にパッチの中身を配置する。

set ORACLE_HOME=[Path_to_ORACLE_HOME]
cd [Path_to_OPatch]/[PatchID]
[Path_to_OPatch]/opatch apply
でパッチ適用が始まるかとおもいきや、

Running prerequisite checks...
   Prerequisite check "CheckActiveFilesAndExecutables" failed.
The details are:

   Following files are active :
   C:\app\administrator\product\11.2.0\dbhome_1\bin\oci.dll
UtilSession failed: Prerequisite check "CheckActiveFilesAndExecutables" failed.
OPatch failed with error code = 73

上記のようなエラーが発生。え、サービス全部止めたんですが・・・?

調べてみると、msdtc(Microsoft Distributed Transaction Coordinator service)がoci.dllをつかんでいたらしい。サービス一覧にmsdtcがあったので、それを停止。

これでoci.dllがフリーになり、無事パッチを適用できました。

参考