A Oracle SQL*Plus - user000422/0 GitHub Wiki

基本

■実行可能なコマンド SQL、SQL*Plusコマンド、PL/SQL

起動と接続

ローカル接続 ※環境変数ORACLE_SIDにインスタンスSIDの設定が必須

REM ユーザ名とパスワードを指定
sqlplus sampleuser/samplepass

REM ユーザ名とパスワードと接続識別子(tnsnames.oraのネットサービス名を接続識別子として記述)
sqlplus sample/1234@orcl

REM 簡易接続ネーミング(設定ファイルの準備が不要)
REM ユーザー名/パスワード@サーバ名:1521/サービス名
sqlplus sampleuser/[email protected]:1521/orcl.world

REM SYSユーザで接続
REM オプション「as sysdba」が必須
REM ユーザ名とパスワード
sqlplus sys/1234 as sysdba

REM OS認証で接続(ユーザ名とパスワード省略)
sqlplus / as sysdba
rem 起動コマンド(DB接続せずに起動)
sqlplus /nolog

rem DB接続(管理者権限 : OS認証)
connect / as sysdba

rem DB接続(管理者権限 : パスワード認証)
connect ユーザー名/パスワード as sysdba

rem DB接続(サービス指定)
connect ユーザー名/パスワード@ネットサービス名

SQL*Plusコマンド

セミコロンで終了する必要はない

-- SET SQL*Plusシステム変数を設定
-- SET PAGESIZE 1ページの行数 ※初期値 14
SET PAGESIZE 100

-- SET LINESIZE 1行に表示する文字(バイト数) ※初期値 80 ※spool出力にも影響
SET LINESIZE 1000

-- SELECT結果などのヘッダ表示(カラム名など) ※初期値 ON
SET HEADING OFF

-- nullデータを別の文字に置換して表示
-- デフォルトだと空で表示されNULLと分かりづらいため
SET NULL NULL -- NULLの場合「NULL」と表示する

-- LONG 結果の出力バイト数を設定(trigger_bodyなど長いSQLは初期値だと少ししか表示されないためLONGで対応)
SET LONG 10000
-- COLUMN 列の表示形式を設定、確認
COLUMN name format a12 -- name列の表示設定(例:半角12)

-- SHOW PARAMETERS 初期化パラメータの設定値を確認
SHOW PARAMETERS

-- テーブルの列定義を確認(列名、NULL許可の可否、データ型)
DESCRIBE sample_table

-- PROMPT メッセージ出力
PROMPT Hello

-- SPOOL ログ出力
-- パスとファイル名
SPOOL /tmp/result.txt
SELECT * FROM sample;
SPOOL OFF

SPOOL C:\log.txt APPEND -- 上書きせず追記
-- STARTUP インスタンスの起動 ※SYSDBA権限が必須
STARTUP         -- STARTUP OPEN状態まで
STARTUP NOMOUNT -- STARTUP NOMOUNT状態まで

-- SHUTDOWN インスタンスを停止
-- ※ログインしているユーザが存在するとSHUTDOWNが行われない
SHUTDOWN
SHUTDOWN IMMEDIATE -- IMMEDIATE(実行中のトランザクションをロールバック)
SHUTDOWN ABORT     -- ABORT 強制停止

その他

環境変数 … SQLPLUS起動に使われる変数 ※シェルスクリプト側で記述

export ORACLE_SID=xxx #接続識別子 DB名 ※必須
export ORACLE_BASE=xxx #Oracleパス パスを使い回すための補助用
export ORACLE_HOME=xxx #Oracleインストールディレクトリ ※必須
export PATH=${ORACLE_HOME}/bin:${PATH} #Oracleインストールディレクトリのbin
export NLS_LANG=Japanese_Japan.AL32UTF8 #クライアント表示用文字コード ※LANGと一致させないと文字化けを起こす

OracleDB 表領域作成

--前提sqlplusログイン
CREATE TABLESPACE SAMPLESPACE
DATAFILE 'C:/path/sample.dbf' --パス
SIZE 100M --サイズ
AUTOEXTEND ON --自動拡張 ON OFF
NEXT 1024k MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
ONLINE --表領域を使用可にする 否OFFLINE

COMMIT

スクリプトファイル

SQL*Plus(バッチモード) … バッチファイル(拡張子 : sql)で操作

rem コマンドプロンプトからファイル名を指定してバッチを実行
@c:\sample_file.sql

rem SQL*Plus起動とバッチ実行
rem ファイルがカレントディレクトリの場合はパスは必要ない(あってもよい)
sqlplus sampleuser/samplepassword@orcl @c:\sample_file.sql

rem 引数を指定して実行
@c:\sample_file.sql 100