1. 程式人生 > >SQL*Plus環境變量設置淺析

SQL*Plus環境變量設置淺析

文件 mon -1 ace rust 查找 數據庫 develop seq

SQL*Plus的使用環境是可以通過login.sql 或 glogin.sql腳本來設置的,可能很多初學者或不習慣使用SQL*Plus的老鳥都不知道。因為在如今UI工具(Toad、PL/SQL Developer..)大行其道的年代,SQL*Plus這種命令工具漸漸被冷落了,可能只是偶爾被用用,不過這並不妨礙它被很多DBA或SQL*Plus愛好者廣泛使用。

其中glogin.sql文件是全局設置文件,位於$ORACLE_HOME/sqlplus/admin下,而login.sql文件屬於個性化設置文件,則可以位於任何位置。既可以通過SQLPATH環境變量設置或不設置。

SQL*Plus啟動的時候首先會先運行glogin.sql腳本,然後查找當前目錄下是否存在login.sql文件,如果找到則運行該腳本,如果當前目錄不存在login.sql.則查找是否設置了SQLPATH環境變量,找到了就會去執行該環境變量路徑下的login.sql腳本,否則則會停止繼續查找。

我們首先來看看glogin.sql文件的廬山正面目吧!其實都是一些格式化列標題和列數據的現實格式的設置,

--
-- Copyright (c) 1988, 2004, Oracle Corporation. All Rights Reserved.
--
-- NAME
-- glogin.sql
--
-- DESCRIPTION
-- SQL*Plus global login "site profile" file
--
-- Add any SQL*Plus commands here that are to be executed when a
-- user starts SQL*Plus, or uses the SQL*Plus CONNECT command
--
-- USAGE
-- This script is automatically run
--

-- Used by Trusted Oracle
COLUMN ROWLABEL FORMAT A15

-- Used for the SHOW ERRORS command
COLUMN LINE/COL FORMAT A8
COLUMN ERROR FORMAT A65 WORD_WRAPPED

-- Used for the SHOW SGA command
COLUMN name_col_plus_show_sga FORMAT a24
COLUMN units_col_plus_show_sga FORMAT a15
-- Defaults for SHOW PARAMETERS
COLUMN name_col_plus_show_param FORMAT a36 HEADING NAME
COLUMN value_col_plus_show_param FORMAT a30 HEADING VALUE

-- Defaults for SHOW RECYCLEBIN
COLUMN origname_plus_show_recyc FORMAT a16 HEADING ‘ORIGINAL NAME‘
COLUMN objectname_plus_show_recyc FORMAT a30 HEADING ‘RECYCLEBIN NAME‘
COLUMN objtype_plus_show_recyc FORMAT a12 HEADING ‘OBJECT TYPE‘
COLUMN droptime_plus_show_recyc FORMAT a19 HEADING ‘DROP TIME‘

-- Defaults for SET AUTOTRACE EXPLAIN report
-- These column definitions are only used when SQL*Plus
-- is connected to Oracle 9.2 or earlier.
COLUMN id_plus_exp FORMAT 990 HEADING i
COLUMN parent_id_plus_exp FORMAT 990 HEADING p
COLUMN plan_plus_exp FORMAT a60
COLUMN object_node_plus_exp FORMAT a8
COLUMN other_tag_plus_exp FORMAT a29
COLUMN other_plus_exp FORMAT a44

-- Default for XQUERY
COLUMN result_plus_xquery HEADING ‘Result Sequence‘

如果你想定制一些通用的環境變量設置,那麽就可以在glogin.sql裏面設置,需要註意的是它的影響是全局的。如果你想定制個性化的環境變量,最好使用login.sql來設置。

如果沒有loging.sql,通常我們用SQL*Plus登錄數據庫如下所示:

[[email protected] monitoring]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Aug 2 14:26:36 2013

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

Connected to:
Oracle Database 10g Release 10.2.0.4.0 - Production

SQL>

在當前目錄新建一個loging.sql文件,設置了一些變量:

set sqlprompt "_connect_identifier> "
set pagesize 500
set linesize 138
set serveroutput on

_connect_identifier: 登錄的實例
pagesize: 設置每頁打印的行數,該值包括NEWPAGE 設置的空行數
linesize: 設置每行打印字符數,默認每行打印80個字符。可以設置LINESIZE,以避免折疊顯示
.....

註意下面的明顯變化(紅色部分)
[[email protected] monitoring]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Aug 2 14:33:44 2013

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

Connected to:
Oracle Database 10g Release 10.2.0.4.0 - Production

apps>

如果你想顯示SQL*Plus登錄的username、instance、datetie,那麽你可以修改login.sql文件。
set sqlprompt "_USER@ _CONNECT_IDENTIFIER >"
set pagesize 500
set linesize 138
set serveroutput on

此時登錄SQL*Plus如下所示:
[[email protected] monitoring]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Aug 2 14:41:07 2013

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

Connected to:
Oracle Database 10g Release 10.2.0.4.0 - Production

SYS@ apps >

當然你在其它目錄(非當前目錄)登錄SQL*Plus,則不會有上面紅色的環境設置。此時如果你需要在任何目錄登錄SQL*Plus都能應用該設置,則需設置SQLPATH環境變量。
[[email protected] ~]$ vi ~/.bash_profile
export SQLPATH=/home/oracle/monitoring/db_com_sql:$ORACLE_HOME/sqlplus/admin

下面是一個比較通用的login.sql腳本:

define_editor=vi
set serveroutput on size 100000
set trimspool on
set long 5000
set linesize 120
set pagesize 9999
column plan_plus_exp format a80
column global_name new_value gname
set termout off
define gname=idle
column global_name new_value gname
select lower(user) || [email protected] || substr(global_name,1,decode(dot,0,length(global_name),dot-1)) global_name from (select global_name,instr(global_name,‘.‘) dot from global_name);
set sqlprompt ‘&gname> ‘
set termout on

參考資料:

http://blog.csdn.net/tianlesoftware/article/details/6412769
http://blog.sina.com.cn/s/blog_4fb09d6201008bve.html

SQL*Plus環境變量設置淺析