DB/Oracle/コマンド/SQL*Plus

目次

Oracle Database を扱う上で欠かせない SQL*Plus の話。


接続する

SYSDBA として接続する。

  • SQL*Plus 起動後に接続する場合
    -- nolog オプションでログインせずに起動する
    sqlplus /nolog
    
    -- OS 認証の場合はユーザ名などは不要、as sysdba で sys として接続できる
    conn / as sysdba 
    
  • SQL*Plus 起動時に接続する場合
    -- OS 認証の場合はユーザ名などは不要、as sysdba で sys として接続できる
    sqlplus / as sysdba
    

ヘルプの閲覧

コマンドの使い方がわからなくなったり、そもそもコマンド何があるんだっけ、な状態に陥ったりしたときに。

-- 特定のコマンドの使い方を調べる
? <command>
help <command>

-- コマンドの一覧を表示する
? index
help index

OS コマンドの実行

SQL*Plus のプロンプトから OS のコマンドを実行する。

-- 凡例
host <command>

-- たとえばカレントディレクトリの確認
host pwd

-- たとえばカレントディレクトリの変更
host cd /home/hoge

外部ファイルの操作

SQL*Plus から外部ファイルを読み込んだり編集したりする。

-- 外部ファイルを実行する
@hoge.sql

-- 外部ファイルを編集する
edit hoge.sql

サーチパスについて

外部ファイルを指定するとき、ファイル名のみ(もしくは相対パス)を記述した場合はデフォルトでは SQL*Plus を起動したディレクトリ(カレントディレクトリ)が呼ばれる。フルパスの場合はそれに従う。

カレントディレクトリは host pwd などして確認可能。変更は同様に host cd /home/hoge など。

Windows 環境でも考え方は同じ。ショートカットに『作業フォルダ』を指定しておくと楽。

バッファの操作

SQL*Plus が内部的に前回実行したコマンドを格納しているバッファに対する操作。

-- バッファの内容を再実行する
/

-- バッファの内容を再入力する
run

-- バッファの内容を編集する
edit

-- バッファの内容を外部ファイルに保存する
save hoge.sql

幅の変更

-- 行全体の幅を指定する
set linesize <byte>

-- 特定の列の幅を指定する
column <column-name> format a<byte>

画面ログの保存

出力をファイルに保存する。入力したコマンドから結果、間違えたときのエラーまで、要するにユーザが画面で見た全てがファイルに吐かれる。改行やらなにやらもそのまま。

-- 保存開始
spool <outputfile.log>

-- 追記で保存開始
spool <outputfile.log> app

-- 保存終了
spool off

PL/SQL からの画面出力の有効化

PL/SQL の dbms_output.put_line を使用したときなどに使われる出力を有効にする。これやらないと PL/SQL から何もできないよ!

-- 有効化
set serveroutput on

-- 無効化
set serveroutput off

Last-modified: 2011-11-07 (月) 12:12:23