标签归档:Tool

Oracle SQL*Plus Variable Setting

在Oracle数据库的日常管理维护中,对于DBA而言,无论是通过CRT/Putty等远程连接工具还是直接登录服务器方式,对数据库所做的很多操作都是在SQL*Plus下进行的,因此设置SQL*Plus的运行环境有助于美化输出结果,提高SQL代码的编写效率!

要设置SQL*Plus的运行环境,我们可以在当前session中执行某一条或几条命令,但是如果每次都需要在当前session中执行这些命令去设置SQL*Plus运行环境则无疑很繁琐,因此可以把最常用SQL*Plus环境设置写在$ORACLE_HOME/sqlplus/admin/glogin.sql文件中,这样每次使用SQL*Plus对数据库进行操就可以避免重复输入设置SQL*Plus运行环境的命令。

关于SQL*Plus环境的基本设置命令如下:

$ cat $ORACLE_HOME/sqlplus/admin/glogin.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 

简要解释:
define _editor=vi:设置SQL*Plus使用的默认编辑器;
set serveroutput on size unlimited:默认打开DBMS_OUTPUT同时将默认缓冲区大小设置尽可能大;
set trimspool on:假脱机输出文本时,会除去文本行两端的空格而且行宽不定;
set long 5000:设置选择LONG和CLOB列时显示的默认字节数;
set linesize 100:设置SQL*Plus显示的文本行宽度;
set pagesize 9999:控制SQL*Plus多少行记录时打印一次标题;
column plan_plus_exp format a80:设置AUTOTRACE得到的解释计划输出(explain plan output)的默认宽度;

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

以上这部分用于设置SQL*Plus提示符,显示效果如下:

sys@10G> 

从上提示符则很清晰知道以哪个用户登录哪个数据库!

PS: This article summarized in 《Oracle Database 9i/10g/11g编程艺术-深入数据库体系结构(第2版)》