SQL*Plus在启动的时候会自动查找运行两个脚本文件:glogin.sql和login.sql
注意:在10g-12.1版本可以在.bash_profile中添加:export SQLPATH=$HOME/scripts,然后在该目录下创建login.sql即可,但是在12.2正式版之后,环境变量SQLPATH改成了ORACLE_PATH,其他不变。需要注意!!!
glogin.sql是sqlplus全局登录的的profile,是ORACLE自带的登录脚本文件,他的路径是固定的,即$ORACLE_HOME/sqlplus/admin。当用户启动sqlplus的时候,会从这个固定的路径加载glogin.sql,不过一般来讲,我们不用关心glogin.sql文件
login.sql是用户登录的profile,sqlplus加载glogin.sql之后会查找并试图加载login.sql,sqlplus先从当前路径查找login.sql文件,如果找到了就加载这个文件并停止继续查找;如果当前路径不存在这个脚本,则继续从环境变量 SQLPATH指定的路径查找,如果找到了login.sql则加载之,之后不再继续查找;如果 SQLPATH中也不存在login.sql,则停止查找
可以根据个人的习惯自定login.sql脚本,并设置 SQLPATH环境变量,就不用每次登录进行手动配置了纵观上文,可以看到glogin.sql和login.sql的关系就和linux系统的/etc/profile和 HOME/.bash_profile文件的关系如出一辙。
仅以贴出我的login.sql作以参考:
-- init session environment
define _editor=/bin/vi
set feedback off
set heading off
set timing off
declare
var_status varchar2(12);
begin
select status into var_status from v$instance;
if var_status is not null then
execute immediate 'alter session set nls_date_format=''yyyy/mm/dd hh24:mi:ss''';
end if;
end;
/
-- init sqlplus environment
set linesize 150
set pagesize 20
set timing on
set feedback on
set serveroutput on
set heading on
set wrap on
set long 1000
-- 显示脚本中命令的执行结果,缺省是on
-- set termout off
-- 去除标准输出每行拖尾的空格,缺省为off
-- set trimout on
-- 去除重定向(spool)输出每行的拖尾空格,缺省为off
-- set trimspool on
set sqlprompt "_USER'@'_CONNECT_IDENTIFIER > "
最终效果: