ユーザーの情シス部門でもOracleから直接データを抽出したい時があります。ですが、SQL Plusのようなコマンドラインツールはスクリプトで自動化する用途以外では使ってられません。
昔は私はSIerでパッケージ開発の業務もしていたので、Oracle Databaseはよく使用していたのですが、当然、SQLを書いたり、データベースを構築した経験もあります(込み入ったパフォーマンスチューニングはしたことがありませんが)。ですので、Oracle Databaseを操作するツールも色々と使用してきました(フリーソフトも有償ツールも)。
この記事では、私が今までSE作業で使用したことのあるツールの使用感、どういう場面で特に役に立つのかなど、解説・紹介していこうかと思います。ここで紹介したツールは、Oracle Databaseではよく使用されているもののはずです。
Oracle謹製ツール
SQL Plus
言わずと知られたコマンドラインツールです。昔からあるツールなので、ご存じでしょう。
マスタや管理用のテーブルなど、対象データが1行程度だったり、動作確認用なら問題ないかもしれません。ですが、そもそもコマンドプロンプトの文字だけの画面でSELECTの結果を表示させても、見れたものではありません。データ抽出を画面を見ながらするのには不向きなツールです。
ただ、バッチ処理の用途では実際よく使います(その用途のためのツールかもしれません)。簡単なスクリプトが書けるので、抽出条件が決まっているデータをCSVに落すとか、更新処理を自動化するとか、そういった自動化ツールとしては今でもよく利用しています 。
あと、Oracle Databaseインストール後の動作確認は使います(別のツールでも可能ですが)。Oracle Databaseの運用管理をしているなら、接続の仕方や自動化バッチの作成方法を覚えておいても損はないと思います。
まとめると、
という状況では便利だと思います。
SQL Developer
SQL Plusよりは使いやすいGUIツールです。
SQL Plusと同様、Oracle Databaseに標準で付属しているツールです(※ただし古いので、新バージョンを別にダウンロードしたほうがよい)。サーバー、クライアント、どちらにも同梱されています。また、Oracle Master Databaseの資格を持っている人なら、試験に出てくるので、ご存じのツールでしょう。Javaで作られていて、JDKが必要ですが、同梱版と同梱していない版があります(ライセンス絡みもあるので、Oracle JDKかOpen JDKかも考慮する必要がありますが)。
機能面では非常に充実している点は、結構良いポイントです。一応は入力支援機能(SELECT句などの入力途中でテーブル名や列名を自動で補完する)はあるし、DBA(データベース管理)の機能もあります(表領域作成や物理ファイル作成も行うことが可能)。ただ、逆に言えば、データベースの根幹に関わる設定ができるということは、使用は慎重にしないとけない、ということでもありますが。SQL Plusもコマンドで表領域の作成をすることは可能ですあがSQL DeveloperだとGUIで可能です。なので、便利なのは便利です。
あと、データをグリッド(Excelのような表形式)形式で出力できます。で、Insert文やUpdate文を書かなくでも、セルを直接編集することでデータの編集ができます(後で書くObject Browserも可能)。わざわざ面倒なSQLを書かなくても画面からデータを修正できるのは、結構便利(ただ、最低限、ロールバックやコミットといった知識は必要だと思います)。また、出力結果をExcel形式で保存もできます。CSVだと1つのデータの中に改行があるとExcelでうまく読み込めないと思いますが、そもそもExcelで出力してやれば解決できるという…。ですので、有償ツールがない状況ではかなり便利。
SQL Developerは便利なのは便利なのですが、ただ、実はこのツールを好んで使用する人はあまり見ない印象です。理由は単純に…インタフェースが慣れないのが1つと、もっさり感があるから、じゃないでしょうか(まぁJavaのアプリは大抵重いのですあ)。外国製と日本製の画面は、インタフェースの作り方に違いがあるように思います。あと、Oracle特有の言葉が分かっていないと使いにくいのかもしれません。
もし、お勧めか…と言われると、有償ツールが使えない状況ではお勧めです。公式ツールだからCLOBなどの形式にも対応しているし(後述するCommon SQL Environmentは対応していない)、機能面に不足はありません。ただし、人によっては使いにくいと感じるようです。あと、重いです。
但し、設定を変えることで、だいぶ使いやすくなります(※追記)。よければ、こちらの記事もどうぞ。
特徴をまとめると、
- 無料
- GUIで使用可能
- DBMSの管理(DBA)機能あり
- インタフェースは少しクセあり
な感じでしょうか。
SQLcl
Oracle SQL Developerのコマンドライン版です。こちらも、無料です。
SQL Plusのコマンドも使用可能で、かつSQL Developerの機能も(全てではないが)利用できるというもの。
個人的に気になるのはJavaScriptでスクリプトが組めるところ。SQL Plusだと貧弱なスクリプトしか組めませんが、こちらは柔軟な活用ができそうです。ただ、スクリプトのサンプル・解説が少なく、こちらのOracle公式のGitHubページか、Oracleの社員であるJeff Smith氏によるブログが参考になりそうです。
Oracle Clientを入れると、SQL Developerと一緒にインストールされるはずです(最新バージョンは公式Webサイトからダウンロード可能)。
Oracle Enterprise Manager
データ抽出に使う…というよりは完全にOracleの管理・監視に用いるものなのですが、一応、SQLを発行して結果を出力する機能もあります。他のツールが一切使えない…という状況で仕方なく使用した経験があります。
実態はWebサーバーなので、http://DBのIPアドレス/em:1158 に接続し、ログインするだけ。
ユーザーの作成やら表領域の操作やらDBAに関する操作がGUIでできます。ただ…非常に動作はもっさりしています。
主にDBMSの管理に使うものですが、実際使われているところも見たことはなし…。
でも存在を知っていれば、いつか役立つかもしれません。
- DBの管理・監視もできる
- データ抽出・操作にはあまり向かない(できるのはできる)
- 重たい(WEBサーバーなのでリソースも食う)
SI Object Browser
株式会社システムインテグレータが販売するツールで、Oracle以外にもSQL Serverなど他のDBMSに対応したものもあります(それぞれ別製品だけど)。
1ライセンスがダウンロード版でも\43,000もするため個人では手が出しにくいですが、でも、今まで使った中ではこれがダントツに使いやすく、ストレスが無いです。
まず動作が軽快。メニューなどインタフェースもすっきりしていて無駄がありません。SQL Developerにも入力支援機能はありますが、Object Browserのほうが表示が軽快でストレスがありません。
あとテーブルにデータをINSERTする際、Excelに予め作っておいたデータをコピペで貼り付ける、という芸当も可能です。
で、これも表領域やら物理ファイルの操作、ユーザー作成などのDBA機能がちゃんとできるので、これ1つで何でもできちゃいます。DBA絡みも非常に使いやすい。
あとストアドの作成・修正もこれで結構簡単にできます。デバッグ実行の機能もあるし。
SQLが書けなくても、このツールがあればかなりの部分をカバーできます。お金があるなら、これを使うべきかも。
- 動作が軽快
- インターフェースが洗練されている
- DBA機能もしっかりしている
- ストアド開発も簡単にできる
- SQLができなくてもOracleの操作が簡単に可能
OSql Edit(オーエスキューエル エディット)
有名なシェアウェアです。1ライセンス、\3,990。
見た目はすっごくシンプルです。一番のメリットは動作がすっごく軽快という所でしょうか。SQL DeveloperやObject Browser同様、入力補完機能もあります。
GUIで何でもできる…というよりは、プログラマーに人気のツールのようで、人によってはObject BrowserよりもOSql Editが好きという人もいます。値段も個人で手が届きそう…なのもあるかも。
- シンプルなインタフェース
- 動作がとても軽快
- プログラマーに人気(っぽい)
Common SQL Environment
フリーウェアです。結構昔からあるツールのようで、使っている人をちらほら見たことがあります。
が…対応OSがWindows XPまでとなっており、開発も2002年を最後にストップしているようです。Oracle 12cに対しても使えるかもしれませんが、開発がストップしているとなると少し心もとないですね。
でもフリーで使えるツールとしては良く出来ているほうだと思います。
- フリーで使える
- 2002年を最後に開発がストップしている
Microsoft Office Access
これも外せないでしょう…。Microsoft Officeの言わずと知られたデータベース。
Oracleに接続させることもできるので、DBを閲覧・操作するツールとしても利用されることがあるみたいです。
ただ…抽出する時はAccess特有の操作法を理解していないといけません。テーブルの項目を紐づける操作など。SQLが書ける人にとっては、わざわざ別の方法を憶えないといけないのでかなり面倒ですが、SQLが書けない人にとってはまぁまだ使いやすい部類のツールなので、よく使われるみたいです。
- SQL操作に慣れた人には逆に面倒
- そうじゃない人にとってはよく使われる
以上です。