親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

MacでSQL Developerが重い・起動できなくなる・DBに接続できなくなる場合の対処法

SQL Developerが不安定になる場合

Oracle SQLに接続するためのSQL Developerの動作が不安定の時の対処方についてです。
SQL Developerはクライアントツールとして非常に有用ですよね。
特にMacからOracleに接続できるものは少ないため、Macユーザには重宝されるのではないでしょうか。
そんなSQL Developerですが、接続情報は合っているのにたまに接続しづらくなる・起動しなくなるといったことがよく起きます。
そんな時に私が対応した方法について書き記したいと思います。
※Javaや各種設定が問題ない人の場合についての対処法です。

ヒープ領域(ヒープメモリ)のサイズを調整

この対処法ではSQL Developerのヒープ領域を調整するのですが、まず始めにヒープ領域(ヒープメモリ)について説明します。
ヒープ領域とはメモリ領域の1つで、任意に確保や解放を繰り返すことができるものを言いますが、この値がSQL Developerにも設定されています。
まずはこの値を変更して動作が問題ないか確認してみましょう。
ヒープサイズは-Xmsと-Xmxで指定しますが、それぞれの概要は以下になります。

  • -Xms・・・Javaヒープ領域の初期サイズになります。JavaVMでは起動時に-Xmsで指定された分だけのメモリ領域をヒープ領域として確保します。
  • -Xmx・・・Javaヒープ領域の最大サイズになります。もしアプリケーション起動中に-Xmsで指定したサイズではメモリが足りなくなった場合に-Xmxで指定したサイズまで領域が拡張されることになります。

両者の関係ですが、-Xmsオプションに指定するサイズ <= -Xmxオプションに指定したサイズ

となるように設定しましょう。

では早速SQL Developerのヒープサイズを確認してみましょう。
ファイルの場所は以下にあります。

/Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/ide/bin/ide.conf

※SQLDeveloperをアプリケーション配下に置いている場合の場所になります。

ターミナルから操作しなくても、Finder上で
SQLDeveloperを右クリック→「パッケージの内容を表示」と進み、
Contents → Resources → sqldeveloper → ide → bin → ide.conf
のファイルを開く方法でも大丈夫です。

ヒープサイズの値を見てみると、デフォルトでは以下のようになっています。

# Set the default memory options for the Java VM which apply to both 32 and 64-bit VM's.
# These values can be overridden in the user .conf file, see the comment at the top of this file.
AddVMOption  -Xms128M
AddVMOption  -Xmx800M

※バージョン19では126行目にあります。
初期は128Mで、最大800Mまで使われる設定ですね。

動作が不安定な場合、最大の方(-Xmx)をいじれば安定する場合がありますので、以下のように512Mにしてみてください。

# Set the default memory options for the Java VM which apply to both 32 and 64-bit VM's.
# These values can be overridden in the user .conf file, see the comment at the top of this file.
AddVMOption  -Xms128M
AddVMOption  -Xmx512M

もしSQLDeveloperを起動している場合は一度落としてから再度立ち上げてみましょう。
私の場合はこれで動作が安定したので、同じようにSQLDeveloperが起動しない場合や、なぜか接続が上手くいかない場合は試してみてください。

ちなみに一度-Xmxの方も256Mにして試してみましたが、起動後に動作がカクカクになりました。
拡張できるサイズが小さすぎたからですね。
このあたりは人によって変わってくるため、色々な値を試して適切なサイズを探してみることをおすすめします。