はじめに
Oracle 19cをWindowsにインストールしようとしたところ、インストーラでINS-30014が出てインストールすることが出来ませんでした。
原因は意外にもDocker Desktopがhostsに追加した名前解決エントリで、インストール中だけコメントアウトしたら解決しました。
同じエラーで詰まっている方向けに、再現しやすい状況・直し方・戻し方をまとめます。
この記事でわかること
- INS-30014でOracle 19cのインストールが止まるときの、現実的な回避策
- hosts / Docker Desktopが絡むときに起きがちなこと
- Oracle 19cのインストール後に何を戻すべきか
TL;DR
Docker Desktopがhostsに追加した行を、インストール中だけコメントアウトすると通るケースがあります。
-
hostsをバックアップ - Docker Desktopセクションをコメントアウト
ipconfig /flushdns- Oracleインストーラを再実行
- インストール完了後、必要ならhostsを元に戻す(→ 再度
ipconfig /flushdns)
環境
- OS:Windows 11 Home
- Oracle:19c
- Docker Desktop:導入済み
症状
- Oracle 19cをインストールしようとしたところ、INS-30014が表示され処理が止まる
- 権限不足っぽい説明が出ることがあるが、管理者で起動しても改善しない
なぜこれが起きるのか
まずhostsとは?
Windowsのhostsは、「ホスト名(例:example.com)→ IPアドレス(例:93.184.216.34)」を対応づける、PC内の設定ファイルです。
普段はDNSに問い合わせて名前解決しますが、hostsに同じ名前が書かれている場合は、DNSより先にhostsが参照されるため、そこに書いたIPへ接続されます。
つまりhostsは「この名前は必ずこのIPにする」というローカルの上書きルールとして使えます。
Docker Desktopはなぜhostsを書き換えるの?
Docker Desktop は、コンテナからホストPCへアクセスしやすくするために、次のような特別な名前をhostsに追加することがあります。
host.docker.internalgateway.docker.internalkubernetes.docker.internal
Dockerを使う上では便利ですが、Oracleのインストーラが内部で行うネットワーク/名前解決の事前チェックと相性が悪いことがあり、その結果としてINS-30014が出るケースがあります。
ポイントはここで、Oracle本体が壊れているわけではなく、インストーラの事前チェックで躓いている、というタイプのトラブルです。
実際に入っていたhosts
自分の環境では次のような行が入っていました(IPは環境で変わります)。
# Added by Docker Desktop
192.168.1.x host.docker.internal
192.168.1.x gateway.docker.internal
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section
解決手順(インストール中だけ回避する)
!注意!
hostsの編集には管理者権限が必要です。
会社PCなど管理ポリシーがある環境では、運用ルールに従ってください。
変更前に必ずバックアップを取ってください。
1) hostsをバックアップ
ファイル場所:
C:\Windows\System32\drivers\etc\hosts
このファイルを安全な場所にコピーしてください。
2) Docker Desktopの行をコメントアウト(IPは環境で変わります)
該当行の先頭に#を付けます(インストール中だけ)。
# Added by Docker Desktop
# 192.168.1.x host.docker.internal
# 192.168.1.x gateway.docker.internal
# To allow the same kube context to work on the host and the container:
# 127.0.0.1 kubernetes.docker.internal
# End of section
3) DNSキャッシュをクリア
管理者権限で起動したコマンドプロンプトで、以下のコマンドを実行:
ipconfig /flushdns
4) Oracleインストーラを再実行
この状態でOracle 19cのインストーラをやり直すと、私の環境ではINS-30014 が出ずに先に進めました。
インストール後はどうする?
hostsを元に戻すべき?
- Dockerを普段使うなら、基本的に戻すのがおすすめ(
*.docker.internalの名前解決が必要になることがあるため) - Dockerを使わないなら戻さなくても困らない場合もあります
もし元に戻したら、再度DNSキャッシュのクリアも忘れずに:
ipconfig /flushdns
※Docker Desktopを起動すると、hostsファイルが自動的に書き戻されます。手動で戻さなくても、Docker Desktop起動時に復元される可能性があります。
まとめ
- INS-30014 は「権限不足」っぽく見えることがあるが、実際には名前解決やネットワーク判定が引き金のことがある
- Docker Desktopがhostsに追加する
*.docker.internalがインストーラのチェックと相性が悪い場合がある -
インストール中だけコメントアウト →
ipconfig /flushdns→ 再実行で解決するケースがある - インストール後にDockerを使うならhosts を元に戻すのが無難(戻したら
ipconfig /flushdnsも忘れずに)