S-JIS[2003-06-18/2009-01-06] 変更履歴

SQL*Plus

linuxやWindows上で動いているOracle9iのSQL*Plusのメモです。


起動


sqlplus[2008-02-20]
//@@



-L
@OK
> sqlplus scotttttt/tiger@ora92
ERROR:
ORA-01017: invalid username/password; logon denied

ユーザー名を入力してください: scott
パスワードを入力してください: tiger
ERROR:
ORA-12154: TNS: サービス名を解決できませんでした。

ユーザー名を入力してください: scott@ora92
パスワードを入力してください: tiger

as sysdba
> sqlplus sys/manager
ERROR:
ORA-28009: connection to sys should be as sysdba or sysoper

ユーザー名を入力してください: sys as sysdba
パスワードを入力してください: manager

connect
ユーザー名を入力してください: scott --foo
SP2-0306: オプションが無効です。
使用方法: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]

sqlplus 〔オプション〕

オプション 説明 備考 更新日
-s サイレントモード プロンプトやログインメッセージを表示しなくなる。 2006-07-08
-L ログインを1回だけ行う。 通常、ログインに失敗すると3回まで再試行するが、このオプションを付けると1回で終了する。 2006-07-08
/nolog DBの起動・終了等を行うときに使う。 Oracle8i以前の sqlmgrl に相当するものらしい  
"sys/manager@SID as sysdba" DB管理者としてログインする。ユーザーの作成等に使う。 sys:DB管理者
manager:パスワード
 
'ユーザー/パスワード' 指定したユーザーでログインする。 ユーザー名にハイフン「-」等が入る場合は、ダブルクォーテーションで囲む。つまり「'"test-1"/password'」といった形になる。  
@ファイル名 ファイル内に書かれたSQL(複数可)を実行する。 例: sqlplus '"test-1"/password' @test.sql  

nolog-
$ sqlplus
ユーザー名を入力して下さい:"test-1"
パスワードを入力して下さい:password

exp / help=y



imp / help=y




exp/impDB[2008-12-17]
DB使

DBDB

$ exp hishidama/hishidama owner=hishidama file=exp.dmp
$ imp hishidummy/hishidummy fromuser=hishidama touser=hishidummy file=exp.dmp

Oracle10g[2008-12-17]
DDLSQL Developerexport使imp
DDL  ignore=y
INSERTduplicate
> imp hishidummy/hishidummy fromuser=hishidama touser=hishidummy file=exp.dmp ignore=y

WindowsSQL*Plus


WindowsSQL*Plus[2005-05-27]
(U)/nolog/as  sysdbasys/password@ora92 as sysdbasqlplus
(H)


ログオン /nolog

WindowsSQL*PlussqlpluswOracle11g[2008-01-13]
sqlplus&便
SQL Developer使[2008-12-17]

SQL


sql*pluslogin.sql[2006-11-21]
SQL

便

sqlplus


SQL*Plushelp

SQL*PlusSQLSHOWDESCSQL*Plus


SQL*PlusSQL-1[2007-12-30]
1

SQL;sqlterminatorSQL[2008-01-14]
.blockterminator
Ctrl+C Ctrl+C
コマンド 説明 備考 更新日
SQL文 SQLを実行する。 最後尾に「;(セミコロン)」が必要。
コピー&ペーストで貼り付けられる量に制限があるので、大量のSQLを実行したい場合は「SQL*Plus」ではなく「SQL*Plus Worksheet」を使うとよい。
2006-11-21
EXIT戻り値 sqlplusを終了する。 「exit 戻り値」…戻り値を返す。
「exit 戻り値 COMMIT」…コミットして終了する。
「exit 戻り値 ROLLBACK」…ロールバックして終了する。
2006-07-08
DESCRIBE テーブル名 DESC テーブルの情報を表示する。 テーブル一覧が見たければ、「select table_name from user_tables;  
@ファイル名 ファイル内のSQL(複数可)を実行する。
ファイル名の指定
別サーバーにあるファイルを実行しているとき、ローカルからファイルを探す。  
@@ファイル名 別サーバーにあるファイルを実行しているとき、そこと同じ場所からファイルを探す。 2006-07-08
START ファイル名   2006-11-22
SPOOL ファイル名 SPO このコマンドの実行後、sqlplusの実行結果がファイルに保存される。 CSV出力に利用できる。
spool off」で、保存をやめる。
2004-10-02
CLEAR オプション CL クリアする。 例えば「CLEAR SCREEN」「CL SCR」で画面を消去する。 2007-12-30
ユーザー関連
CONNECT CONN 接続先を変更する。(現在の接続を切ってから新しい接続を行う) conn user/password」「conn as sysdba
conn /@SID as sysdba
2005-05-27
DISCONNECT DISC 接続を終了(切断)する。   2007-12-30
SHOW USER SHO 現在ログオン中のユーザーの情報を表示する。 似たものに「select user from dual;
他に「select * from user_users;」「select * from all_users;
 
PASSWORDユーザー名 PASSW パスワードを(対話式で)変更する。 ユーザー名を指定しない場合、現在ログオンしているユーザー。
他のユーザーのパスワードを変えるにはsysdbaでないとダメ。
SQLなら「alter user ユーザー名 identified by "新パスワード";
2007-12-30
バッファ編集
GET ファイル名   ファイルの内容をバッファにコピーする。  
SAVE ファイル名 SAV バッファの内容をファイルに保存する。  
数字 指定された数字(行番号)の行を、バッファのカレント行とする。  
数字 文字列 指定された数字(1以上)の行を、文字列に置き換える。  
0 文字列 バッファの一番先頭の行の前に文字列を挿入する。 2008-04-26
APPEND 文字列 A バッファのカレント行に文字列を追加する。  
CHANGE// C バッファのカレント行内で文字列の置換を行う。  
DEL   バッファのカレント行を削除する。  
INPUT I バッファのカレント行の次行に新しい行を追加する。  
LIST L バッファの内容を表示する。  
LIST 行番号行番号
DEL 行番号行番号
L
 
指定された行に対して処理を行う。
行番号をスペース区切りで2つ指定すると、開始行〜終了行として扱われる。
行番号に「*」を指定すると、カレント行が対象となる。
行番号に「last」を指定すると、最終行が対象となる。
2008-04-26
RUN R バッファの内容を表示後、再実行する。  
/ バッファの内容を表示せず)再実行する。  
SQL*Plusの設定 (→環境変数セッションパラメータ
HELP コマンド ? sqlplusのコマンドのヘルプを表示する(DBに接続していないと表示されない)。
コマンドの先頭が一致するもの全てが表示される。
例:「help set」…SETコマンドの説明が表示される。
例:「? s」…Sから始まる全コマンドの説明が表示される。
help index」…SQL*Plusのコマンド一覧が表示される。
help topic」…helpで表示できる内容一覧が表示される。
バージョンの不一致に注意
2007-12-30
SHOW システム変数 SHO sqlplusのシステム変数の値を表示する。 show all」で、全てのシステム変数の値を表示する。
→OTNのSHOW
2009-01-06
SET システム変数 値 sqlplusのシステム変数の値を変更する。   2004-10-02
STORE SET ファイル名 〔REP〕 全てのシステム変数をファイルに出力する。 sqlplusの実行ファイルと同じ場所に出力される。このファイルはsetを使っており、SQLファイルとして実行できる。 2006-11-22
COLUMN COL 項目(データ列)の書式を設定・表示する。   2008-02-15
WHENEVER定義 エラー発生時の動作の定義する。
何も定義を書かないと、現在の定義を表示する。
wheneverOSERROR | SQLERROR} {EXIT系 | CONTINUE系;
EXIT系…EXIT戻り値〕 〔COMMIT | ROLLBACK
CONTINUE系…CONTINUECOMMIT | ROLLBACK | NONE
2006-07-08
TIMING オプション TIMI 累計の経過時間を1/100秒単位で表示させる。
「start ラベル」で、時間計測を開始。
「show」で、その時点の経過時間を表示。
「stop」で終了(最終的な経過時間を表示)。

これとは別に、TIMINGというシステム変数もある。これをONにしておくと、SQLを実行する度に実行に要した時間が表示される。

SQL> timing start aaa
SQL> 何らかのSQL群を実行
SQL> timing show
aaaのタイミング。
経過: 00:00:10.09
SQL> timing stop
aaaのタイミング。
経過: 00:00:12.07
SQL> timi stop
SP2-0325: stopに対するタイミング要素はありません。
SQL> set timing on
SQL> 何らかのSQLを実行
経過: 00:00:00.01
2006-06-03
DEFINE 変数〔= DEF 置換変数の表示・設定を行う。 引数を何も指定しないと、全変数を表示する。
使用例
2006-07-08
UNDEFINE 変数 UNDEF 置換変数を削除する。   2007-12-30
ACCEPT 変数 ACC 置換変数をユーザー入力で設定する。 使用例 2008-04-26
VARIABLE変数〕〕 VAR バインド変数を定義・表示する。   2007-12-30
PRINT変数…〕   バインド変数の値を表示する。   2007-12-30
EXECUTE EXEC PL/SQLを実行する。 BEGINCALLはsqlplusのコマンドではなくSQLの文なのでsqlplusのバッファに入る。
EXECはsqlplusのコマンドなのでバッファに入らない。
2007-12-30
DBMS操作
STARTUP DBを起動する。 startup mount」…マウントだけ実行? 2005-05-27
SHUTDOWN DBを停止する。 shutdown」「shutdown normal」…全てのセッションが終わるまで待つ
shutdown immediate」…トランザクションをロールバックする
2008-08-23
その他
PROMPT メッセージ PRO メッセージを表示する。 DOSUNIXのechoコマンドに相当。 2008-04-26
HOST コマンド ローカルの(SQL*Plusを実行している)OS(DOSUNIX)のコマンドを実行する。 Windows版SQL*Plusの場合、別途コマンドプロンプトが開いて実行され、終わると閉じてしまう(ので結果が確認できない)。
そのため、複数区切り&を使ってpauseコマンドを付加してやると良い。
ただし「&」はデフォルトで置換変数なので、置換変数をオフにしたり別の記号に変えたりエスケープ文字を使ったりする必要がある。
SQL> host cd & pause
2008-04-26

help


SQL*PlusDB[2008-02-05]
SQL*Plus使

Oracle9iSQL*PlusOracle10ghelp  show
where option represents one of the following terms or clauses:
    system_variable
    ALL
    BTI[TLE]
    ERR[ORS] [{FUNCTION | PROCEDURE | PACKAGE | PACKAGE BODY | TRIGGER
       | VIEW | TYPE | TYPE BODY | DIMENSION | JAVA CLASS} [schema.]name]
    LNO
    PARAMETERS [parameter_name]
    PNO
    RECYC[LEBIN] [original_name]
    REL[EASE]
    REPF[OOTER]
    REPH[EADER]
    SGA
    SPOO[L]
    SQLCODE
    TT[ITLE]
    USER

RECYCLEBINOracle10gSQL*Plus使
Oracle9iSQL*Plus使

conn / as sysdba


SIDORACLE_SID[2005-05-27]

DBORACLE_SID
SQL> conn /@orcl10g as sysdba
Connected.

使
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> conn /@orcl10g as sysdba
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

@ ?


@@@startSQL[2008-02-06]
?
sqlplusORACLE_HOME
SQL> @ ?/test.sql
SP2-0310: ファイル"C:\oracle\ora92/test.sql"をオープンできません


suffix"sql"
SQL> @ test
SP2-0310: ファイル"test.sql"をオープンできません。
SQL> @ ?
SP2-0310: ファイル"C:\oracle\ora92.sql"をオープンできません。


@
SQL> @ @
SP2-0310: ファイル"ora92.sql"をオープンできません。


sql*plus使
環境変数 説明 関連 更新日
ORACLE_HOME   Oracleがインストールされている場所を指す。   2005-05-27
ORACLE_SID (例)orcl10g デフォルトのSIDを指定する。   2005-05-27
NLS_LANG Japanese_Japan.JA16EUC クライアント側に表示する文字コードの設定。
DBに入っている文字コードに関わらず、この設定で表示される。
  2004-05-28
Japanese_Japan.JA16SJIS
NLS_DATE_FORMAT yyyy/mm/dd DATE型の表示形式を設定する。 SP 2006-11-21
NLS_TIMESTAMP_FORMAT yyyy/mm/dd hh24:mi:ss.ff3 TIMESTAMP型の表示形式を設定する。 SP 2006-11-21

セッションパラメータ

セッション毎に設定を行う。[2006-11-21]

セッションパラメータ 説明 関連 更新日
NLS_DATE_FORMAT yyyy/mm/dd DATE型の表示形式を設定する。 環境変数 2006-11-21
NLS_TIMESTAMP_FORMAT yyyy/mm/dd hh24:mi:ss.ff3 TIMESTAMP型の表示形式を設定する。 環境変数 2006-11-21

alter session使commit
SQL> alter session set NLS_DATE_FORMAT='yyyy/mm/dd';

セッションが変更されました。

SQL> select sysdate from dual;

SYSDATE
----------
2006/11/21

NLS_SESSION_PARAMETERSv$nls_parameters使[/2006-12-26]
SQL> select * from NLS_SESSION_PARAMETERS
   2 where parameter='NLS_DATE_FORMAT';

PARAMETER
------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
NLS_DATE_FORMAT
yyyy/mm/dd


showset [2004-10-02]
show all
help set
システム変数 説明 更新日
SHOWMODE SHOW OFF、ON setによって値を変更した場合に、新旧の値を表示するかどうか。 2008-02-20
HEADSEP HEADS 文字 select結果の見出し(項目名)を表示する際の、各項目の区切り文字。  
UNDERLINE UND 文字、OFF select結果の見出しに下線を引くための文字。  
COLSEP   文字 select結果の値を表示する際の、各項目の区切り文字。  
HEADING HEA OFF、ON select結果の見出し(項目名)を表示するかどうかを制御。  
FEEDBACK FEED 数値、OFF select結果の「〜行が選択されました。」を、何行以上の結果があると表示するかを制御。  
LINESIZE LINE 数値 1行に表示される文字数。  
PAGESIZE PAGES 数値 ページの行数。0にすると、見出し等も出なくなる。  
PAUSE PAU OFF、ON、
文字列
ONにすると、ページ毎にEnterキーを押さないと SQLの実行結果が表示されなくなる。(1ページはPAGESで指定した行数) 2008-02-20
NULL   文字列 selectした結果の値がnullの時に表示する文字列。  
NUMFORMAT NUMF 数値書式 select結果の数値を表示する際の書式。 2008-02-15
ECHO   OFF、ON ファイル(スプール)出力において、実行したSQL文も出力するかどうかを制御。(onのとき、出力する) 2006-11-22
TRIMSPOOL TRIMS ON、OFF ファイル(スプール)出力において、各行の端のスペースを出すかどうかを制御。 (onのとき、スペースを出力しない)  
TERMOUT TERM OFF、ON コマンドファイルから実行したコマンドの実行結果を表示(端末出力)するかどうかを制御。(onのとき、出力する)  
USER   参照のみ 現在ログイン中のユーザー名を表示。 2005-05-15
ERRORS ERR 参照のみ FUNCTIONPROCEDUREユーザー定義型を定義した際のエラー内容を表示。 2005-05-15
SQLCODE   参照のみ 直前に実行したSQLの結果(戻り値)を表示。 2008-02-05
RECYCLEBIN RECYC 参照のみ (Oracle10gで導入された)リサイクルビンに入っているオブジェクトを表示。
(sqlplus自身のバージョンがOracle10gでないと使えない)
2005-06-26
PARAMETERS PARAMETER 参照のみ DBMSのパラメーターを表示する。
sysdbaのユーザーでのみ使用可能。
2009-01-06
TIME TI OFF、ON ONにすると、プロンプトの「SQL>」の左側に現在時刻を表示する。 2007-10-30
TIMING TIMI ON、OFF ONにすると、SQL実行の終了時に経過時間を1/100秒単位で表示する。
これとは別に、timingというコマンドもある。
2006-06-03
DEFINE DEF 文字、ON、OFF 置換変数で使う文字。OFFだと置換変数を使用できなくなる。ONだとデフォルトの「&」になる。 2006-07-08
VERIFY VER ON、OFF 置換変数を使った場合に、新旧の値を表示するかどうか。 2008-02-20
CONCAT CON 文字、OFF、ON 置換変数結合に使用する文字。デフォルトは「.(ピリオド)」。 2008-04-26
ESCAPE ESC 文字、OFF、ON 識別子や文字列のエスケープに使用する文字。→使用例
例えば置換変数で使う文字をエスケープして、置換変数の文字そのものを出せるようになる。
2007-06-26
RELEASE REL 参照のみ 接続先DBのバージョンを表示。 2008-02-05
SQLPROMPT SQLP 文字列 SQL*Plusのプロンプト。デフォルトは「SQL>」 2008-01-14
SQLNUMBER SQLN ON、OFF 複数行にまたがってSQL文を書く場合のプロンプトに行番号を出すかどうか。
OFFにすると出なくなるが、非常に分かりにくくなる(苦笑)
2008-01-14
SQLCONTINUE SQLCO 文字列 行の末尾に「-(ハイフン)」を付けて行を継続した際に表示されるプロンプト。デフォルトは「> 」 2008-01-14
SQLTERMINATOR SQLT 文字 SQL文の末尾を示す文字。デフォルトは「;(セミコロン)」。 2008-01-14
BLOCKTERMINATOR BLO 文字 SQLを実行せずにバッファへ格納することを示す文字。デフォルトは「.(ピリオド)」。 2008-01-14
SUFFIX SUF 文字列 スクリプトファイルのデフォルトの拡張子。 2008-02-06
SERVEROUTPUT SERVEROUT OFF、ON dbms_outputを使用したメッセージ出力の表示有無を制御。→使用例 2007-06-26
AUTOTRACE AUTOT OFF、ON、
TRACEONLY
ON EXP」にすると、SQLの実行結果を表示した後に実行計画を表示する。
TRACE EXP」にすると(実行結果を表示せずに)実行計画だけ表示する。
2007-12-30

置換変数


SQL*PlusSQL[2006-07-08]
&&DEFINE
使[2007-06-26]
SQL> select '&var&hoge' from dual;
varに値を入力してください: aa
hogeに値を入力してください: bb
旧 1: select '&var&hoge' from dual
新 1: select 'aabb' from dual

'AAB
----
aabb
 
SQL> select &col from emp;
colに値を入力してください: empno
旧 1: select &col from emp
新 1: select empno from emp

EMPNO
----------
7369
〜

PL/SQL使

&1[2008-04-26]
&&2使
SQL> select &&col from emp;


SQL*Plus
&&11

test.sql
spool &1
select '引数2&2' as 引数2 from dual;
exit
>sqlplus -s hishidama @test.sql zzz.txt arg2
旧 1: select '引数2&2' as 引数2 from dual
新 1: select '引数2arg2' as 引数2 from dual

引数2
-----------
引数2arg2

spoolzzz.txt

&3使&


define使
SQL> define
DEFINE _CONNECT_IDENTIFIER = "ora92" (CHAR)   …暗黙に色々定義されているらしい
DEFINE _SQLPLUS_RELEASE = "902000100" (CHAR)
DEFINE _EDITOR = "Notepad" (CHAR)
DEFINE _O_VERSION = "Oracle9i Release 9.2.0.1.0 - Production …バージョンっぽいのもある。v$versionと関係あるのかな?
JServer Release 9.2.0.1.0 - Production" (CHAR)
DEFINE _O_RELEASE = "902000100" (CHAR)
DEFINE 1 = "zzz.txt" (CHAR)     …起動時の引数もある
DEFINE 2 = "arg2" (CHAR)

define 使使
SQL> select '&var' from dual;
varに値を入力してください: zzz …最初は定義されていないので、値の入力が要求される
旧 1: select '&var' from dual
新 1: select 'zzz' from dual

'ZZ
---
zzz

SQL> def var=abc   …値を定義する
SQL> def var   …定義した値の確認
DEFINE VAR = "abc" (CHAR)

SQL> r
1* select '&var' from dual
旧 1: select '&var' from dual …値の入力が要求されずに置換が実行される
新 1: select 'abc' from dual

'AB
---
abc

使[2008-04-26]
CONCAT
SQL> select &var.no from emp;
varに値を入力してください: dept
旧   1: select &var.no from emp
新   1: select deptno from emp

    DEPTNO
----------
        20
〜


verifyoff[2008-02-20]
SQL> set ver off
SQL> select '&var' from dual;
varに値を入力してください: zzz

'ZZ
---
zzz


accept使[2008-04-26]
SQL> accept var
zzz

acceptdefine
オプション 概要
NUMBER
CHAR
DATE
NUM

 
変数の属性
FORMAT 書式 FOR 書式
DEFAULT 規定値 DEF 入力が省略された場合(Enterのみ押した場合)の値
PROMPT プロンプト
NOPROMPT

NOPR
ユーザーへの入力を促すメッセージの指定
HIDE   ユーザーの入力した文字が「*」で表示される。
つまりパスワードを入力するような感じになる。
SQL> acc var num prompt 数値を入れてください:
数値を入れてください:zzz
SP2-0425: "zzz"は有効な数値ではありません。
数値を入れてください:123


undefine使[2007-12-30]
SQL> undef var


SQL*PlusSQL*PlusPL/SQL[2007-12-30]
SQL*PlusPL/SQL使PL/SQLSQL*Plus

PL/SQLDBSQL*Plus
使PL/SQLSQL*Plus

variable使
executeSELECT INTOcallinto使[/2008-02-06]
print使
SQL> variable v1 char(6)
SQL> execute :v1 := 'ABC' || 'DEF'

PL/SQLプロシージャが正常に完了しました。

SQL> print :v1

V1
--------------------------------
ABCDEF
SQL> var v2 number
SQL> exec select max(empno) into :v2 from emp

PL/SQLプロシージャが正常に完了しました。

SQL> print v2

        V2
----------
      7934
SQL> var v3 char(6)
SQL> call test_f('ABC') into :v3;

コールが完了しました。

SQL> print v3

V3
--------------------------------
ABCABC
文法 説明 備考
var バインド変数名 型 バインド変数を定義する。型を変更した再定義も可能。 初期値はNULL。
var バインド変数名 バインド変数の定義を表示する。  
var 全バインド変数の定義を表示する。  
print バインド変数名 〔バインド変数名…〕 バインド変数の値を表示する。 値がNULLの場合、「set null」で定義した文字列が表示される。
print 全バインド変数の値を表示する。  

参考: SHIFT the OracleVARIABLE

バインド変数の使用例


SQL Developerへ行く / Oracle目次へ戻る / 新機能へ戻る / 技術メモへ戻る
メールの送信先:ひしだま