- 2011-02-13 Sun 15:28:15
- ORACLE
検索で飛んできた方はどうぞ。
http://hitai.blog72.fc2.com/blog-entry-85.html
WindowsのDOSプロンプトでSQL*Plusを起動すると、上下の矢印キーでコマンドヒストリが呼び出せますけど、Cygwinのプロンプトではできません。
DB2のCLPも一緒で、矢印キーによるコマンドヒストリは使えません。
こういったコマンドヒストリ機能がないツールでも、ヒストリ機能を無理やり使えるようにしてしまうのがReadLineWrapperと呼ばれるもので、Linuxではrlwrapというパッケージが提供されています。
で、Cygwinでは使えないの?と探してみたらあっさりありました。
こちらからダウンロードできました。
http://ftp.yz.yamagata-u.ac.jp/pub/cygwin/release/rlwrap/
適当にダウンロードしてきたら、展開するとusrというディレクトリが作成される。
tar jxf rlwrap-0.24-1.tar.bz2
└─usr
├─bin
│ rlwrap.exe
│
└─share
├─doc
│ ├─Cygwin
│ │ rlwrap-0.24.README
│ │
│ └─rlwrap-0.24
│ AUTHORS
│ BUGS
│ ChangeLog
│ COPYING
│ INSTALL
│ NEWS
│ README
│ TODO
│
├─man
│ └─man1
│ rlwrap.1.gz
│
└─rlwrap
ftp
testclient
この中のrlwrap.exeを適当にパスが通ったディレクトリに置いて、
rlwrap sqlplus / as sysdba
とすればヒストリ機能が使えるようになる。
ただし、このままだ
SQL> connect / as sysdba
?????????????B
こんな感じで、日本語メッセージが化けてしまう。
解決するには、
.bashrcに以下を追加
export LANG=ja_JP.SJIS
export TZ=JST-9
export JLESSCHARSET=japanese-sjis
alias ls='ls --show-control-chars'
.inputrcに以下を追加
set kanji-code sjis
set convert-meta off
set meta-flag on
set output-meta on
参考:http://seiza.dip.jp/computer/20071028001115338.html
これで解決。日本語も通ります。
rlwrap.exe sqlplus / as sysdba
SQL*Plus: Release 11.1.0.6.0 - Production on 木 2月 10 15:38:05 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
に接続されました。
SQL>
SQL> select * from hr.regions;
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
SQL>
SQL> insert into hr.regions values(11,'新世界');
1行が作成されました。
SQL> select * from hr.regions;
REGION_ID REGION_NAME
---------- -------------------------
11 新世界
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
SQL> rollback;
ロールバックが完了しました。
もちろんDB2のCLPでも日本語が通ります。
./rlwrap.exe db2
(c) Copyright IBM Corporation 1993,2002
DB2 ADCL 9.1.0 コマンド行プロセッサー
コマンド・プロンプトからデータベース・マネージャーのコマンド、および SQL
ステートメントを呼び出せます。 例:
db2 => connect to sample
db2 => bind sample.bnd
一般ヘルプには ? をタイプしてください。
コマンドのヘルプには ? command をタイプしてください。 command
は、データベース・マネージャー・コマンドの主要なキーワードの
いくつかです。 例:
す。
? CATALOG は全 CATALOG コマンドのヘルプです。
db2 対話モードを抜けるには、コマンド・プロンプトで QUIT
とタイプしてください。対話モード以外では、すべてのコマンドに接頭語 'db2'
を付ける必要があります。
現在のコマンド・オプションの設定をリストするには、 LIST COMMAND OPTIONS
とタイプしてください。
詳細は、「オンライン・リファレンス」を参照してください。
db2 =>
あとは、rlwrapの置き場所だけ決めればOKです。
私の場合は、/optの配下に本体を配置し、/usr/binの配下のシンボリックリンクを置いてみました。
ln -s /opt/rlwrap/usr/bin/rlwrap.exe /usr/bin/rlwrap.exe
そして、sql*plusとかclpはaliasをはっておきます。
.bashrc
#rlwrap Settings
alias sqlplus='rlwrap.exe sqlplus'
alias db2='rlwrap.exe db2'
[関連]
http://hitai.blog72.fc2.com/blog-entry-77.html
http://hitai.blog72.fc2.com/blog-entry-76.html
Comments: 0
Trackback+Pingback: 0
- TrackBack URL for this entry
- http://hitai.blog72.fc2.com/tb.php/78-934bebe8
- Listed below are links to weblogs that reference
- Cygwinでrlwrap from ヒビコレショウジン