SQL*Plus の基礎

SQL*Plus は Oracle の標準 CLI です。この章では対話操作だけでなく、運用で必要な「管理者接続」「SQLファイル実行」「失敗時停止」まで扱います。

SQL*Plus とは

sqlplus は Oracle Database に接続して SQL / PL/SQL を実行するクライアントです。接続確認、メンテナンス、バッチ処理まで幅広く使います。

通常接続

sqlplus app_user/AppPass#2026@localhost:1521/apppdb

-- 接続後の確認
SHOW USER;
SELECT sys_context('USERENV', 'CON_NAME') AS con_name FROM dual;

ローカル管理者接続

Oracle サーバーローカルでシステム管理者として入るときは OS 認証を使う方法が一般的です。

-- OSDBA グループユーザーで実行
sqlplus / as sysdba

-- CDB / PDB の確認
SHOW CON_NAME;
SHOW PDBS;

必要に応じて CDB ルートと PDB を切り替えます。

ALTER SESSION SET CONTAINER = CDB$ROOT;
ALTER SESSION SET CONTAINER = apppdb;

よく使うコマンド

SHOW USER
SHOW CON_NAME
SHOW PDBS
DESC employees
SET LINESIZE 200
SET PAGESIZE 100
SPOOL ./logs/query.log
SPOOL OFF
EXIT

SQLファイル実行

デプロイや定期メンテは SQL をファイル化して実行します。

sqlplus app_user/AppPass#2026@localhost:1521/apppdb @./migrations/V001_create_tables.sql

引数付きで渡す場合の例です。

sqlplus app_user/AppPass#2026@localhost:1521/apppdb @./scripts/calc_report.sql 2026-02-15

バッチ実行の定石

運用スクリプトは、エラー時に必ず終了する設定を先頭に入れます。

-- deploy.sql
WHENEVER SQLERROR EXIT SQL.SQLCODE
WHENEVER OSERROR EXIT 9
SET ECHO ON
SET FEEDBACK ON
SET TERMOUT ON

@./ddl/01_create_tables.sql
@./ddl/02_create_indexes.sql

EXIT SUCCESS

実行例:

sqlplus -s app_user/AppPass#2026@localhost:1521/apppdb @./deploy/deploy.sql \
  > ./logs/deploy_2026-02-15.log 2>&1

引数・変数の受け渡し

&1, &2 で位置引数を受け取れます。

-- calc_report.sql
DEFINE target_date = '&1'

SELECT *
FROM sales
WHERE sales_date = TO_DATE('&target_date', 'YYYY-MM-DD');

再入力を避けたい場合は DEFINEACCEPT を使い分けます。

よくある失敗

運用用 SQL は「接続先確認」「失敗時停止」「ログ出力」をテンプレート化してから使うのが安全です。