Oracle/SQL*Plus

Last-modified: 2008-10-29 (水) 23:23:40

SQL*Plusの環境設定

SHOWコマンド: SQL*Plusの環境を確認する

  • SQL> SHOW LINES[IZE] ・・・表示ページの横幅
  • SQL> SHOW PAGES[IZE] ・・・表示ページ行数
  • SQL> SHOW NUMW[IDTH] ・・・NUMBER型列の表示桁数
  • SQL> SHOW FEED[BACK] ・・・実行後のメッセージの表示/非表示
  • SQL> SHOW SERVEROUT[PUT] ・・・サーバー出力の表示

実行結果

SQL> SHOW FEED
6行以上に対するFEEDBACKがONです。

この場合、SELECT文の結果が6行以上のn行であれば、「n行が選択されました。」のメッセージが表示されます。
結果が6行未満の場合、何も表示されません。

COL[UMN]コマンド: 各列ごとに、表示幅を変更する。

  • SQL> COL カラム1 FORMAT A8 ・・・列のデータが文字列の場合は、「A」の後ろに表示する桁数を記述する。このカラムの横幅は、文字が8個入ります。
  • SQL> COL カラム2 FORMAT 9999 ・・・列のデータが数値の場合は、「9」を表示する桁数だけ記述する。このカラムの横幅は、数値が4個入ります。

AUTOTRACE: 実行計画および実行時に必要としたシステムリソースなどを確認できる

  • SQL> SET AUTOTRACE ON: 実行結果、実行計画、統計情報を表示。
  • SQL> SET AUTOTRACE TRACEONLY: 実行計画、統計情報を表示。実行結果は表示しない。

※EXPLAIN PLAN の場合は、SQLを実際に実行しない。そのためSQLの統計情報は取得できない。

SPOOL: 出力結果をファイルに出力する。

  • SQL> SPOOL ファイル名
  • SQL> SQL実行
    SPOOLでは、たとえば検索なら、検索結果をSQL*PLUSに表示してからファイルに書き込む。つまり、大量にヒットする検索の場合は、非常に時間がかかるため、やり方を検討する必要がある。

AUTOTRACEの使い方

1. SYSユーザーでログイン
$ sqlplus /nolog
SQL> connect /as sysdba
接続されました

2. plustrce.sqlを実行し、PLUSTRACEロールを生成する
SQL> @?/plsql/admin/plustrce.sql
(以下に出力例を記述します)
SQL> drop role plustrace;
行1でエラーが発生しました:
ORA-01919: ロール'PLUSTRACE'は存在しません
SQL> create role plustrace;
ロールが作成されました
SQL> grant select on v_$sesstat to plustrace;
権限付与が成功しました
SQL> grant select on v_$statname to plustrace;
権限付与が成功しました
SQL> grant select on v_$mystat to plustrace;
権限付与が成功しました
SQL> grant select on dba to plustrace;
権限付与が成功しました

3. AUTOTRACE機能を使うユーザーにPLUSTRACEロールを付与する。
SQL> grant plustrace to ユーザー名
権限付与が成功しました

4. 実行計画の情報を格納するためのPLAN_TABLE表を作成する。
SQL> @?/rdbms/admin/utlxplan.sql
表が作成されました