天天看点

SQL*Plus环境变量设置浅析

    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登录数据库如下所示:

[oracle@gsp 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,以避免折叠显示

.....

注意下面的明显变化(红色部分)

sql*plus: release 10.2.0.4.0 - production on fri aug 2 14:33:44 2013

apps>

如果你想显示sql*plus登录的username、instance、datetie,那么你可以修改login.sql文件。

set sqlprompt "_user@ _connect_identifier >"

此时登录sql*plus如下所示:

sql*plus: release 10.2.0.4.0 - production on fri aug 2 14:41:07 2013

sys@ apps >

当然你在其它目录(非当前目录)登录sql*plus,则不会有上面红色的环境设置。此时如果你需要在任何目录登录sql*plus都能应用该设置,则需设置sqlpath环境变量。

[oracle@gsp ~]$ 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  

select

lower(user) || '@' ||

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