有一次看书,发现书上作者的sqlplus登录窗口竟然能显示当前实例名和当前用户名,赶脚很是舒服,那么这是怎么设置的呢?以下是我转的,但是忘了在哪转的了,作者原谅。
-----------------------------------------
set termout off
define loginname=idle
column global_name new_value loginname
select USER||'@'||substr(global_name,1,decode(dot,0,length(global_name),dot-1))
--这里用||把USER和global_name进行连接输出了,其中decode的意思是当dot是0的时候,输出global_name的长度,当它是其他值的时候,输出dot-1,因为这个是.前面的字母的位置,这个函数外面被substr所包围,他的意思是提取出第一个字母到.前面字母的这一段字母。
global_name
from (select global_name, instr(global_name,'.') dot from global_name);
--这段提取出global_name和global_name中.的位置
set sqlprompt '&loginname>'
set termout on
-------------------------------------------------------------------------
于是我把整理好,添加到下面的文件中,在11g中这个文件是不存在的,直接编辑就可以了。
vi $ORACLE_HOME/sqlplus/bin/login.sql
添加如下内容
set termout off
define loginname=idle
column global_name new_value loginname
select 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 '&loginname> '
set termout on
define_editor=vi
set linesize 200
set pagesize 100
set time on
set timing on
在环境变量中添加下面这条
echo "export SQLPATH=\$ORACLE_HOME/sqlplus/bin/" >> ~/.bash_profile
然后使用命令登录就能看见效果了
$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Thu Jun 19 11:46:23 2014
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
11:46:23 SYS@NIDMSDB>select sysdate from dual;
SYSDATE
------------
19-JUN-14
Elapsed: 00:00:00.01