oracle执行plus时跳出,每次启动sqlplus时执行脚本

在看Thomas Kyte大师的《Oracle Database 9i/10g/11g编程艺术》的配置环境一节有一个login.sql脚本

define _editor=vi

set serveroutput on size 1000000

set trimspool on

set long 5000

set linesize 100

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) || '@' || 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

这样sqlplus的提示符就会显示 用户名@tns服务名>,且做了一些环境的初始设置,书上很明显的意思是应当每次执行sqlplus的时候都会执行这个脚本,但我却没想明白是怎么才会去自动执行这个脚本的,所以每次我都还是手动的带全路径去执行这个login.sql脚本。

今天无意在网上看到了相关内容,一下就明白了

sqlplus 每次启动前,会读login.sql(若有的话) ,glogin.sql

login.sql只对某特定用户生效,它的优先级高于glogin.sql,glogin.sql是全局设置。

所以,同一个环境变量,比如linesize ,glogin.sql 和login.sql 都有设置,则login.sql 中的设置起作用。

glogin.sql 的文件位置固定,在$ORACLE_HOME/sqlplus/admin 下面

login.sql的位置不固定,一般将login.sql放在运行sqlplus 的当前目录(用pwd查看当前目录),即:/home/oralce

于是在glogin.sql中加入了那段脚本,直接在命令行用sqlplus连接数据库,果然自动执行了那段代码,然后将glogin.sql还原,又将login.sql拷贝到cmd窗口的当前目录,直接在命令行用sqlplus连接数据库,果然自动执行了login.sql脚本,再回来看Thomas Kyte大师对这个脚本的描述,终于是彻底明白了。

这样每次登录sqlplus后都会进行一些初始设置,从提示符也能很方便的知道当前连接的是哪个用户,而且连接不同的用户登录后这个提示符还能动态的变,而手动执行这个脚本的话没这个效果,应当是每次登录都会重新读取login.sql这个脚本,所以才会刷新提示符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值