Oracle SQL Developerから踏み台サーバ経由でRDSに接続する
はじめに
こんにちは、虎塚です。
先日、Eclipse DBViewerプラグインから踏み台サーバ経由でRDSに接続するという記事を書きました。これは、VPC内のRDSが踏み台サーバ経由のアクセスだけを許可している時に、ローカルマシンからRDSの中身を見るための方法でした。
しかし、日常的にEclipseを使っていない人や、そもそもJavaを使っていない人にとっては、Oracleの中身を見るためだけにEclipseを使うのは億劫に感じられるかもしれません。
そこで今回は、Oracle専用のGUIツールOracle SQL Developerを使って、同じような結果を得る手順を紹介します。
前提とする構成
前回の図を再掲します。次のような、よくあるVPC環境を前提とします。
おさらいすると、次の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のダウンロード」手順に進みます。
「この製品の実行は、Javaバージョンが1.7.0_51以上で1.8より前のバージョンでサポートされています」とのことなので、現時点の最新よりもメジャーバージョンが1つ古いJavaが必要です。
正常に起動した時は、次のような画面が表示されます。
問題なく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接続の設定を入力します。
- 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の中身が表示できました。
一度接続したら、次回からはDBのユーザ名とパスワードを入力するだけで、RDSに接続できるようになります。
おわりに
踏み台サーバを経由して、ローカルマシンからRDS Oracleに接続できるようになりました。これでEclipseをインストールしなくてもよいですね。Javaは相変わらず必要ですがドンマイです。
なお、MySQLの場合は、専用のGUIツールMySQL Workbenchで同様のことができます。(追記)手順はこちらを参照ください。MySQL Workbenchから踏み台サーバ経由でRDSに接続する | Developers.IO
それでは、また。