2016年6月1日水曜日

Oracle Oracleクライアントのアンインストール

Oracleクライアントのアンインストール方法です。

複数VersionのOracleクライアントをインストールしている開発用PC(Windows8)で、
Oracleクライアントをアンインストールして、再度Oracleクライアントをインストールしたところ
.Netで作成したWindowsフォームアプリで32bitでコンパイルしたものが動作しなくなってしまいました。
同じく.Netで作成した別のWindowsフォームアプリで64bitでコンパイルしたものは動作しました。

使用しているOracle.DataAccess.dllが参照できなくなってしまったようです。

ODP.NETのdll(OracleDataAccess.dll)は、
GACにインストールされている「発行者ポリシー」の仕様により、
アプリケーション開発者が意図しないバージョンのODP.NETが、アプリケーションの実行時に使用されてしまうという問題があります。
詳しくはコチラ「熱燗ロックのブログ ODP.NETのバージョン問題

Oracleクライアントのアンインストールで、GACに登録されているOracleの発行者ポリーシーが削除されなかった為に
32ビット用のODP.NETを使用したときに、削除されなかった発行者ポリシーが、アンインストールされたODP.NETを使用するようにリダイレクトさせているようです。

そこで複数バージョンのOracleクライアントをインストールした際のアンインストール手順をメモっておきます。

アンインストール手順


Oracleクライントのアンインストール


「すべてのプログラム」 ⇒ 「Oracle - 各オラクルクライアントのバージョン」 ⇒ 「Oracle Installation Produucts」 より
「Universion Installer」を起動します。
開いたダイアログの「製品のアンインストール」ボタンをクリック

削除する製品をチェックして「削除」ボタンをクリック

すると「deinstall.bat」を実行しろと警告メッセージが表示されます。
指示されたバッチファイルを実行します。
(…各Oracleクライアントのdeinstall.batを実行すれば、ここまでの手順は不要だと思います。

バッチを実行すると、結構長い間「Checking for reuiured …略…」と表示されたままですが、しばらくするとアンインストールが始まります。


バッチがおわったら、残った残骸を削除していきます。

ファイルの削除


  • C:\Program Files\Oracle
  • C:\Program Files (x86)\Oracle
  • 各オラクルクライアントをインストールしたフォルダ
  • (インストールフォルダがわからない場合は、後述のレジストリエディタ「HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE」で確認できます。)

スタートメニュー


「すべてのプログラム」でスタートメニューを起動し「Oracle - 各オラクルクライアントのバージョン」を削除

環境変数


「コントロールパネル」 ⇒ 「システム」⇒ 「システムの詳細設定」で「システムのプロパティ画面」を起動し、
「環境変数」ボタンをクリックし、「Path」からOracleを含む変数を削除します。

レジストリ


※削除する前にバックアップを取ってくださいね。
削除するキーは
Oracle10gの情報ですがOracle Database インストレーション・ガイド Oracle Databaseソフトウェアの削除の中ほどに 「Microsoftレジストリ エディタからのOracleキーの削除」に記載されているものを削除しました。

「ファイル名を指定して実行」より「regedit」と入力し「レジストリエディタ」を起動します。
■HKEY_CLASSES_ROOT
Ora、Oracle、OrclまたはEnumOraで始まるキーを削除。
以下のものがあります。
  • EnumOraHomes
  • OracleConfig
  • OracleDatabase
  • OracleHome
  • OracleInProcServer
  • OracleProcess
  • ORADC
  • ORAMMCCFG10
  • ORAMMCPMON10
  • OraOLEDB
  • OraPerfMon
  • ORCLMMC
  • ORCLSSO

■HKEY_CURRENT_USER
ORACLEキーを削除。

■HKEY_CURRENT_USER\Software
Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programsの下にあるOracle-HOME_NAMEエントリなど、すべてのOracleキーを削除。

■HKEY_LOCAL_MACHINE\SOFTWARE
ORACLE Groupキーを削除。
※ここに記載されている内容ががOracle Universal Installerの場所です。

■HKEY_LOCAL_MACHINE\SOFTWARE\ODBC
ODBCの下にあるサブキーをすべて展開して、Microsoft ODBC for Oracleキーを除くOracle関連のODBCドライバ・キーをすべて削除。

■HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
この下のOracleまたはOraWebで始まるすべてのキーを削除。

■HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application
この下のOracleで始まるすべてのキーを削除。

GACの削除


C:\Windows\Microsoft.NET\assembl\GAC_32
C:\Windows\Microsoft.NET\assembl\GAC_64
C:\Windows\Microsoft.NET\assembl\GAC_MSIL
C:\Windows\assembly
上記のフォルダからOracleとつくファイルを削除していきます。
以下のようなものがあります。
  • Oracle.DatatAccess
  • Oracle.DataAccess.resources
  • Oracle.Web
  • Oracle.Web.resources
  • Policy.XXXXX.Oracle.DataAccess
  • Policy.XXXXX.Oracle.Web
上記のファイルは削除しようとすると「アクセス権限がありません。」となります。
VisualStudio付属ツールのコマンドプロンプトを使用して削除します。(GACからアセンブリを登録解除する)

VisualStudio2013の場合
「スタートプログラム」 ⇒ 「Microsoft Visual Studio 2013」⇒ 「Visual Studio ツール」をクリックし「開発者コマンド プロンプト for VS2013」を右クリック「管理者として実行」

VisualStudio2010の場合
「スタートプログラム」 ⇒ 「Microsoft Visual Studio 2010」⇒ 「Visual Studio ツール」⇒「Visual Studio コマンド プロンプト (2010)」を右クリックし「管理者として実行」


GACからアセンブリを登録解除するコマンドを入力します。
gacutil /u "削除するアセンブリ名,Version=X.XXX.X.X, Culture=XXXXX, PublicKeyToken=XXXXXXXXXXX"
アセンブリの情報はファイルエクスプローラより削除したいアセンブリを右クリックし「プロパティ」で確認できます。

たとえばOracle.DataAccessを削除する場合
gacutil /u "Oracle.DataAccess,Version=2.121.1.0, Culture=Neutral, PublicKeyToken=89b483f429c47342"

以上で削除は終了です。

忘れずにPCを再起動します。

Oracleクライアントを再インストールして、.Netで作成したWindowsフォームアプリ(32bit、64bit)ともに正常に動作しました。

0 件のコメント: