【SQL*Plus】起動時にコマンドを自動実行!?glogin.sql、login.sqlを設定しよう

gloin.sql,login.sqlの使い方を紹介する記事のタイトル画像 Oracle Database

SQL*Plusを起動して作業を行う際は、初めにSET~、SELECT~と毎回決まったコマンドを実行する人が多いと思います。
そういった煩わしさを解消できるのがglogin.sqlとlogin.sqlです。
glogin.sqlとlogin.sql はSQL*Plusの環境設定をサポートしてくれます。

公式マニュアル

https://docs.oracle.com/cd/E82638_01/sqpug/configuring-SQL-Plus.html#GUID-410DDF15-7230-4238-B3FF-BA965CE16B2E

glogin.sqlとlogin.sqlについて

glogin.sqlとlogin.sqlはSQL*Plusの起動時に書き込んだコマンドを自動実行してくれます。
以下に glogin.sqlとlogin.sql の特徴をまとめました。

プロファイル
スクリプト
実行タイミング配置場所適用ユーザー
glogin.sql
(サイト・プロファイル)
SQLPLUS、CONNECTコマンドでの正常な接続時
/NOLOGが指定された場合
$ORACLE_HOME/sqlplus/admin/glogin.sql全ユーザー
login.sql
(ユーザー・プロファイル)
glogin.sqlの実行後環境変数ORACLE_PATHユーザー単位

glogin.sqlは $ORACLE_HOME/sqlplus/adminに存在します。
対象ユーザーはSQL*Plusを実行した全OSユーザーとなります。

login.sqlは環境変数ORACLE_PATHに指定したディレクトリ内に作成します。
対象ユーザーは環境変数ORACLE_PATHにlogin.sqlが存在するOSユーザーのみとなります。

実行タイミングとしてはglogin.sqlの後にlogin.sqlが実行されます。
今回はglogin.sqlとlogin.sqlの両方に設定を入れて動作を検証してみましょう。

■実施環境
OS:Oracle Linux 6.5
DB:Oracle Database 12c R1

glogin.sqlの設定

-glogin.sqlファイルを編集し、上書き保存します。

$ vi $ORACLE_HOME/sqlplus/admin/glogin.sql

glogin.sqlに検証として以下を追記します。

set pagesize 0
set linesize 100
select '-------------------------------------------' from dual;
select '-------------------------------------------' from dual;
select '現在、'||TO_CHAR(sysdate,'YYYY/MM/DD(DY) HH24:MI:SS ')||'です。' FROM dual;
select '設定変更作業時は以下を実施すること!!' from dual;
select '・Wチェックの実施(声だし、指差し確認)' from dual;
select '・作業エビデンスの取得' from dual;
select '-------------------------------------------' from dual;
select '-------------------------------------------' from dual;
set pagesize 1000

-SQL*Plusで接続し、login.sqlの内容が反映されているかを確認します。

$ sqlplus system/password@pdb1
SQL> show pagesize
SQL> show linesize

glogin.sqlの動作検証

SQL*Plus接続時にglogin.sqlに記載したSELECT文の実行結果が表示されることとSETコマンドのPAGESIZE、LINESIZEが反映されていることが確認できました。

login.sqlの設定

-login.sqlファイルを作成します。

$ mkdir /home/oracle/sqlplus_config
$ vi /home/oracle/sqlplus_config/login.sql

login.sqlに検証として以下を追記します。

SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER > "
SET LINESIZE 1000

⇒SQLPROMPTはコマンドプロンプトの表示名を変更します。
 デフォルトは「SQL>」ですが上記の設定では「ユーザー名@接続識別子>」
 の形式で表示されます。

-bash_profileに環境変数ORACLE_PATHを設定します。

$ vi ~/.bash_profile

以下を追記する。

export ORACLE_PATH=/home/oracle/sqlplus_config 

⇒login.sqlを格納したディレクトリを指定

上書き保存でlogin.sqlを閉じたら、設定を反映させましょう。

$ source ~/.bash_profile

動作の検証

glogin.sqlとlogin.sqlの設定ができました。
SQL*Plusを起動してみましょう。

glogin.sqlとlogin.sqlの動作検証

環境変数ORACLE_PATHに指定したディレクトリ内のlogin.sqlにはSET LINESIZE、SQLPROMPTを書いていますがしっかりと内容が反映されていますね。
glogin.sqlには「SET LINESIZE 100」と書き込んでいますが「SHOW LINESIZE」の出力結果にはlogin.sqlに書いた「SET LINESIZE 1000」が最終的に設定されていることがわかります。
これは冒頭で説明した通り、glogin.sql⇒login.sqlの順にファイルが読み込まれるためです。

このようにSQL*Plus起動時に実行したいコマンドをglogin.sqlまたはlogin.sqlに書き込んでおけば余計な手間を省くことができます。
作業前に必ず実行するコマンドがある場合は有効活用しましょう。

コメント

タイトルとURLをコピーしました