Oracle SQL Developerから踏み台サーバ経由でRDSに接続する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、虎塚です。

先日、Eclipse DBViewerプラグインから踏み台サーバ経由でRDSに接続するという記事を書きました。これは、VPC内のRDSが踏み台サーバ経由のアクセスだけを許可している時に、ローカルマシンからRDSの中身を見るための方法でした。

しかし、日常的にEclipseを使っていない人や、そもそもJavaを使っていない人にとっては、Oracleの中身を見るためだけにEclipseを使うのは億劫に感じられるかもしれません。

そこで今回は、Oracle専用のGUIツールOracle SQL Developerを使って、同じような結果を得る手順を紹介します。

前提とする構成

前回の図を再掲します。次のような、よくあるVPC環境を前提とします。

踏み台サーバを経由したRDS接続

おさらいすると、次の2点が前提条件のポイントです。

  • VPC内に踏み台EC2サーバとRDSがある
  • RDSのセキュリティグループでは、VPC内からのアクセスだけを許可している

この状況で、開発者がローカルマシンからRDSの中身を見たいというケースを考えます。

前回の記事では、ポートフォワーディングとEclipseのDBViewerプラグインの紹介が目的だったため、接続先の一例としてOracleを取り上げました。今回は、Oracle DBへの接続自体をメインとして扱います。

解決策の概要

Oracle SQL Developerの標準機能であるSSHトンネリングの機能を使って、RDSに接続します。Oracle SQL Developer自体とJavaをインストールします。

  • Mac OS X 10.9.5 (13F34)
  • Oracle SQL Developer 4.0.3.16 (ビルドMAIN-16.84)
  • Java 1.7.0_67
    • 2014年10月17日現在のバージョンはJava 8での動作をサポートされていません

手順

1. Oracle SQL Developerのインストール

まず、次のページから、Oracle SQL Developerの最新版をダウンロードします。

次に、ダウンロードしたzipを展開します。

$ mv ~/Downloads/sqldeveloper-4.0.3.16.84-macosx.app.zip /local/sqldeveloper/
$ unzip sqldeveloper-4.0.3.16.84-macosx.app.zip

最後に、展開されたSQLDeveloper.appを、Applicationsディレクトリの下に移動します。

SQLDeveloperのアイコンをダブルクリックして、起動します。開けない場合は、controlキーを押しながらクリックして、コンテキストメニューから[開く]を選択します。

クリック後、次のような画面が表示された場合は、「2. JDKのダウンロード」手順に進みます。

Oracle SQL Developerの起動時エラー画面

「この製品の実行は、Javaバージョンが1.7.0_51以上で1.8より前のバージョンでサポートされています」とのことなので、現時点の最新よりもメジャーバージョンが1つ古いJavaが必要です。

正常に起動した時は、次のような画面が表示されます。

Oracle SQL Developer起動画面

問題なくOracle SQL Developerを起動できた場合は、「3. 接続の設定」手順に進みます。

2. JDKのダウンロード

Java 1.7系の最新版をインストールします。

まず、次のページで「Java SE 7」のリンクをクリックし、「Java SE Development Kit 7u67」をダウンロードして、ローカルのマシンにインストールします。

ダウンロードしたファイルをダブルクリックすると、パッケージが表示されます。アイコンをダブルクリックすると、インストールできます。

次に、インストールしたJavaの場所を確認します。次のコマンドで、インストールされているJavaを確認できます。

$ /usr/libexec/java_home -V
 Matching Java Virtual Machines (2):
 1.8.0_11, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
  1.7.0_67, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home

最後に、Oracle SQL Developerの設定ファイルを編集します。上で調べた1.7.0_67のパスを記述して、保存します。

$ vi ~/.sqldeveloper/4.0.0/product.conf

変更前の行

# SetJavaHome /path/jdk

変更後の行

SetJavaHome /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home

完了後、もう一度Oracle SQL Developerの起動を試みます。

3. 接続の設定

まず、Oracle SQL Developerの[接続]ビューで、プラスのアイコンをクリックして、ドロップダウンリストから[接続の作成]を選択します。「データベース接続の作成/選択」画面が開きます。

接続の作成

次に、接続情報を入力します。

接続情報の入力

  • 接続名は、任意の文字でOKです(ここでは「over_ssh_test」)
  • ユーザ名とパスワードは、RDSのユーザ名とパスワードです
  • ホスト名は、RDSのエンドポイントです
    • RDSのManagement Consoleから確認できます
  • ポートは、Oracleのデフォルトのポート番号です
  • SIDはDBの名前です

それから、[Adanced]ボタンをクリックします。「Advanced Properties」画面が開きます。

ここで踏み台サーバへのSSH接続の設定を入力します。

SSH接続の設定

  • Hostは、踏み台サーバのElastic IP(もしくはPublic IP)です
  • Portは、SSHのデフォルトのポート番号です
  • Usernameは、SSH接続時のユーザ名です(今回の踏み台サーバはAmazon Linuxなので「ec2-user」)
  • [Use Key File]にチェックを入れて、ローカルのキーファイルを選択します

[OK]ボタンをクリックして画面を閉じます。

最後に、[テスト]ボタンをクリックして、接続確認をします。「ステータス」の右に「成功」と表示されればOKです。[保存]ボタンをクリックします。

テストの際、次のようなエラーが表示されることがあります。

ステータス: 失敗 -テストが失敗しました: Listener refused the connection with the following error:

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

この場合、SIDの入力を間違えている可能性があるので、確認してください。

以上で設定は完了です。

[接続]ビューに、いま作成した接続名が表示されているので、ダブルクリックすると接続できます。RDSの中身が表示できました。

RDSへの接続

一度接続したら、次回からはDBのユーザ名とパスワードを入力するだけで、RDSに接続できるようになります。

RDSへのログインダイアログ

おわりに

踏み台サーバを経由して、ローカルマシンからRDS Oracleに接続できるようになりました。これでEclipseをインストールしなくてもよいですね。Javaは相変わらず必要ですがドンマイです。

なお、MySQLの場合は、専用のGUIツールMySQL Workbenchで同様のことができます。(追記)手順はこちらを参照ください。MySQL Workbenchから踏み台サーバ経由でRDSに接続する | Developers.IO

それでは、また。