9. SQL*Plusを使いやすくする〜プロンプトを豊かに(3)
• プロンプトに表示される日付について
• _DATE事前定義変数の日付書式はNLS_DATE_FORMAT環境変数
で指定した値が使用されます。
• その値はSQL*Plusセッションで実行するコマンドにも影響を及ぼ
すため、プロンプトの為だけに設定する場合は注意が必要です。
• 時刻を表示するためにSETシステム変数TIMEを使うのも手です。
9
07-SEP-14 SCOTT@orcl> set time on
!
13:55:00 07-SEP-14 SCOTT@orcl>
10. SQL*Plusを使いやすくする〜プロンプトを豊かに(4)
• 事前定義変数以外の情報(接続先のノード名やサービス名など)を表
示したい場合は、任意のSQLで取得して設定します。
接続先の権限によっては参照できない場合もあるので、あまり凝った
ものは止めた方が無難です。
!
!
!
• 明文化されていませんがSQLPROMPT変数に設定できる文字数は50
文字のようなので、あまり欲張らない方が良いみたいです。
SQL> SET SQLPROMPT
"12345678901234567890123456789012345678901234567890>"
string beginning ""123456789..." is too long. maximum
size is 50 characters.
10
SQL> COLUMN h NEW_VALUE v1
SQL> COLUMN s NEW_VALUE v2
SQL> SELECT ... AS h FROM V$INSTANCE;
SQL> SELECT ... AS s FROM V$SESSION;
SQL> SET SQLPROMPT "&v1&v2 _USER _PRIVILEGE'>' "
[node1]orcl/srv1 SYS AS SYSDBA>
12. SQL*Plusを使いやすくする〜SQLバッファの操作(2)
• SQLバッファを表示、再実行するコマンド
12
コマンド略称用途
list l または ; SQLバッファの全ての行を表示
list n l n または n 行nを表示
list * l * カレント行を表示
list n * l n * 行nからカレント行まで表示
list LAST l l 最終行を表示
list m n l m n 行m~行nまで表示
list * n l * n カレント行から行nまで表示
run r または /
SQLコマンドの再実行
/はSQLバッファを表示せずに実行
13. SQL*Plusを使いやすくする〜SQLバッファの操作(3)
• SQLバッファを編集するコマンド
13
コマンド略称用途
append text a text カレント行の末尾にテキストを追加
change/old/new c/old/new カレント行のoldをnewに変更
change/text c/text textをカレント行から削除
input i 一つ以上の行を追加
input text i text textを追加
del または del * (なし) カレント行を削除
del n * (なし) 行nからカレント行まで削除
del LAST (なし) カレント行から行nまで削除
del m n (なし) 行m~行nまで削除
del * n (なし) カレント行から行nまで削除
del n (なし) 行nを削除
clear buffer cl buff 全ての行を消去
18. シェルの機能を使いこなす〜カーソル移動(2)〜
• 文字を検索してカーソルを移動することも出来ます。
(viのコマンドモードにおけるF、fと同じ)
18
キー動作
C-]
入力文字が次に現れる場所にカーソルを移動(viのF)
(character-search)
M-]
入力文字が前に現れる場所にカーソルを移動(viのf)
(character-search-backword)
M-] n C-] /
!
!
!
$ cd $ORACLE_HOME/network/admin
!
M-] c C-] n
w
M-] t C-] o
19. シェルの機能を使いこなす〜テキストの削除(1)〜
19
キー動作
C-d カーソル位置の文字を削除(delete-char)
C-h
DEL カーソル位置の左の文字を削除(Rubout)
M-
カーソル前後の空白とタブを全て削除
(delete-horizontal-space)
$ sqlplus scottt/tiger
$ sqlplus scott/tiger
!
$ sqlplus scottt/tiger
$ sqlplus scott/tiger
!
$ sqlplus / as sysdba
$ sqlplus /as sysdba
t
/ C-d
t
C-h
t
a M-
25. シェルの機能を使いこなす〜コマンドラインの編集〜
• ヒストリからのコマンドラインの再実行や文字列の置換で事足りない
場合、fcコマンドでコマンドラインをエディタで編集できます。
• FCEDIT環境変数またはEDITOR環境変数に指定されているエディタ、
指定がなければviが起動します。
• エディタでの編集終了後、コマンドラインとして直ぐに実行されます
ので複数行に渡って編集している場合は注意が必要です。
(少し使いづらい)
25
キー動作
fc 最後のコマンドラインを編集
fc -l コマンドラインをヒストリ番号とともに一覧表示
fc first last
コマンドラインのヒストリ番号firstからlastまでの
コマンドラインを編集
fc word wordが含まれる最後のコマンドラインを編集
35. SQL*Plusを使いやすくする〜rlwrapによる強化(3)
• 使い方
rlwrapに続いて任意コマンドを指定します。
よく使うコマンドの場合はエイリアスに指定しておくと便利です。
bashの説明で紹介したカーソルの移動、テキストの削除、コマンド
の繰り返し、コマンドヒストリの参照などが使えるようになります。
35
$ rlwrap sqlplus
$ alias sqlplus=‘rlwrap sqlplus’
!
$ rlwrap sqlplus scott/tiger
…
SQL> SELECT * FROM TABS WHERE TABLENAME LIKE ...;
!
ERROR at line 1:
ORA-00904: "TABLENAME": invalid identifier
!
SQL> SELECT * FROM TABS WHERE TABLENAME LIKE ...;
!
SQL> SELECT * FROM TABS WHERE TABLENAME LIKE ...;
!
SQL> SELECT * FROM TABS WHERE TABLE_NAME LIKE ...;
C-p
M-] N
N
N
_
36. SQL*Plusを使いやすくする〜rlwrapによる強化(4)
• rlwrapは行編集やヒストリ置換以外にも便利な機能があります。
• プロンプトに色を付ける。
接続先や実行するコマンドで区別するなどの使い分けができます。
ANSIエスケープシーケンスも使えます。
36
$ rlwrap -pRed sqlplus scott/tiger@honban_db
SQL> show user
!
$ rlwrap -pMagenta rman target /
RMAN> list backup;
!
$ rlwrap -p‘4;36’ asmcmd -p
ASMCMD [+] > ls
!
$ rlwrap -p‘0;31;43’ adrci
adrci> show problem