SQL Developer で、Oracle 12c につなごうとすると、NullPointerException が起こって、接続できない問題。
17.x系のバグっぽい報告もあったり、fixされたとかあったりしたんだけど、まぁ、つながらなかったりするわけですよ。でね、結論から言って、なんてことはない、Oracle Clientのバージョンが 12.1 以上でないとつながらないという、単なるドライバの問題なんですよ。
もうね、その情報ですら、日本語で取得できないわけですよ。いやわかんない。あるのかもしれないけど、見つからなかったわけですよ。
で、解決策としては、ドライバあげればいいんだけど、Oracle Clientは開発環境の問題とかで、バージョン上げたくないんだよーっていうことが、あるわけで、そういう人のための解決方法ね。
Oracle Instant Client使えるなら、アレ使えばいい。いや、しかし、PATHに書いちゃったら、開発環境汚すから、PATHには書かない方法でやる。
Oracle Instant Client は、使い方わかっている前提で、
- Windows の場合の話。他はしらん。まずは、Instant Clientをダウンロードして、適当に解凍する。
- 本当はPATHを通すんだけど、PATHは通さない。
- TNS_NAMESは通してもいい。(通さなくてもいい)
- SQL Developer を起動する
- ツール-プリファレンス-データベース-拡張
- Oracle Clientの使用にチェック
- 参照で、インスタントクライアントにして、インストールしたパスを指定。(TNS_NAMESはこの画面でも指定できる)
- まだ動かない。まだ慌てる時間じゃない。
- ヘルプ-バージョン情報-プロパティで、java.library.pathを探す。
- 値をメモ帳にでもコピる。見たらわかることだけれど、これ、基本的にPATHの環境変数のコピーみたいなもん。
- インスタントクライアントのバスを追加する。いらないものは消していい。
- このPATHをSQL Developerがロードすればいいので、sqldeveloper.confを探せ。(多分、binの中。すげー変なところにある)
- AddVMOptionが並んでるとこの適当なとこに。
- AddVMOption -Djava.library.path=C:\Oracle\~ みたいに、先のパスを書く。
- SQL Developer を再起動して、conn conn connnnnnn!!!1!!
最近はこんなことばっかに引っかかってるきがするなぁ。
気が向いたら、ASP.net Coreでつぶやいていたやつもまとめるかもしれない。