min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

LinuxのSQL*PlusからWindowsのOracleサーバにアクセスする(Linux版 Instant Client を使う)

Windows2003上にOracleサーバ(10.2.0.4.0)がいる。クライアント機(fedora Linux)から、このサーバにsqlplusでアクセスしたい。

 

今までは、VNCWindowsサーバに入って、そこからsqlplusを起動していた。

f:id:min117:20161015155804p:plain

これだと、VNCの環境のせいか、キーボードが英語版になってしまって使い物にならない(アットマークを入力が Shift+数字の2 とか)。

 

不便なので、Linux上から直接sqlplusを起動したい。最終的にはこうなる。

f:id:min117:20161015160209p:plain

 

 

 

やること

 LinuxSQL*Plusを使えるようにする。ただし、Oracleクライアントのフル機能だと(X Windowが必要だったりで)面倒なのでインストールしない。代わりに、Oracleが提供する Instant Client を使う。

 

手順

OracleのサイトからLinux版の Instant Client をダウンロードする。

② Instant Clientをインストールする。

環境変数を設定する。

SQL*Plus を起動し、WindowsOracleサーバに接続する。

⑤ 次回から手軽に接続できるようにする。

 

まずは OracleのサイトからLinux版の Instant Client をダウンロードする

Instant Client downloads for Linux x86-64

・ダウンロードするにはOracle開発者登録が必要。

・リンク切れの場合は、右上のSearch欄から「Instant Copy」で探せば見つかる。

f:id:min117:20161015161328p:plain

Linuxは64ビットだから、ダウンロードするのはたぶん「x86-64」だろう。違ったら、すぐ下にある「x86」をあとから試せばいいし。

f:id:min117:20161015161817p:plain

 

・バージョンはOracleサーバに合わせたほうがいいかも。今回は10.2.0.4.0を選んだ。

・ダウンロードするファイルは2つ。「Basic」と名の付いたものと、「sqlplus」と付いたもの。

・拡張子が「zip」と「rpm」とあるが、よく分からんので両方落としておく。

f:id:min117:20161015161951p:plain

インストール手順はサイトの下のほうに書いてあった。zipだと手作業でやるところを、rpmは全自動でやってくれるみたい。今回はrpmの手順でインストールする。

f:id:min117:20161015162452p:plain

ダウンロードできた。lsで確認。ファイルは4つあるけど、拡張子rpmの2つだけ使う。

f:id:min117:20161015162938p:plain

 

次に ② Instant Clientをインストールする。念のため sudo -s してスーパーユーザーにしてから作業する。

$ sudo -s

# rpm -ivh oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm

f:id:min117:20161015163233p:plain

# rpm -ivh oracle-instantclient-sqlplus-10.2.0.4-1.x86_64.rpm

f:id:min117:20161015163320p:plain

インストールが完了すると /usr/lib/oracle/Oracleバージョン/client64/lib というフォルダができている。

f:id:min117:20161015163649p:plain

 

続いて 環境変数を設定する。以下3つのコマンドを打てばいいだけ。

1つ目(LD_LIBRARY_PATHの設定)

export LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.4/client64/lib:$LD_LIBRARY_PATH

2つ目(PATHの設定)

export PATH=$PATH:/usr/lib/oracle/10.2.0.4/client64/lib

3つ目(日本語の設定/UTF-8にする)

export NLS_LANG=JAPANESE_JAPAN.UTF8

 

ここまできたら、もうsqlplusが使えるはずなので SQL*Plus を起動し、WindowsOracleサーバに接続する。

# sqlplus scott/tiger@192.168.1.100:1521/MYDB01

192.168.1.100 WindowsOracleサーバ)のアドレス

:1521 Oracleが使うポート(普通は1521のはず)

MYDB01 SID名

 

無事に接続できた。日本語も正常に表示されている。

※ うまくいかないときは、たぶん環境変数の設定(赤文字)手順を飛ばしている。

f:id:min117:20161015164958p:plain

 

最後に、⑤ 次回から手軽に接続できるようにする。毎回環境変数の設定(③)をするのは面倒なので、起動時に読み込まれるファイル(.bashrc)にexport文を記述を追加しておく。

f:id:min117:20161015163828p:plain

ついでに、よく使うコマンドもaliasきっておいた。

参考

インストールとアップグレード

d.hatena.ne.jp

 

LinuxのSQL*Plusでbashのhistory機能を使う(カーソル↑↓で履歴を呼び出す)

ハピタス登録で1,000円分になるURL

その買うを、もっとハッピーに。|ハピタス

 

前記事でLinuxでsqlplusを使えるようにした(Oracle謹製Instant Clientを使用)。

min117.hatenablog.com

しかし、ヒストリ機能がない(Instant Clientだから?)。例えば矢印キー(↑や↓)を押しても、過去の履歴を表示できない。これじゃ実用に耐えない。

 

同じ悩みを解決している記事があった。

d.hatena.ne.jp

 

 

 

手順は以下のとおり。

① readline-devel をインストールする

② rlwrap をインストールする

③ sqlplus でヒストリ機能(履歴機能)を試してみる。

上記記事では②はソースからmakeしてたけど、yumでインストールできた。

 

まずは ① readline-devel をインストールするyumでインストールするだけ。

# sudo yum -y install readline-devel

f:id:min117:20161015213820p:plain

何事もなくインストール完了。

 

次に ② rlwrap をインストールするfedoraではこちらもyumからインストールできた。

# sudo yum -y install rlwrap

f:id:min117:20161015213938p:plain

こちらも無事にインストールできた。

 

いよいよ ③ sqlplus でヒストリ機能(履歴機能)を試してみるsqlplusを起動する前に rlwrap を呼べばいい。

rlwrap sqlplus scott/tiger@192.168.1.100:1521/MYDB01

 

rlwrapで包んでいるので、履歴機能が使えるようになっている。

f:id:min117:20161015214857p:plain

上矢印を押して履歴が出る(赤枠部分)。

Ctrl + r を押して検索文字列(line)を打つと、履歴を見れる(青枠部分)。

 

sqlplus で履歴が使えるとは。便利すぎる。WindowsOracle純正クライアント(sqlplus)より遥かに便利。さすがはLinux