全面了解SQL*PLUS工具的一点补充
1、 大家都知道在WINDOWS 下,进入SQL*PLUS 有两种方法:
第一种是直接双击带十字架的SQL PLUS图标;
第二种是从命令窗口进入,输入SQLPLUS命令。
但其实调用的是两个不同的应用程序(其实也就是SQL * PLUS 的两个不同版本)。
第一种方法运行的是 sqlplusw.exe 程序(注意当是其它工具带的SQL*PLUS工具时名字可能会有所区别,如:PLUS80W.EXE),而第二种方法运行的是 sqlplus.exe 程序。
但两个应用程序在WINDOWS 下所在的路径是相同的。例如我电脑上的这两个程序所在的路径都是:E:\oracle\product\10.2.0\db_1\BIN。
2、 大家都知道SQL*PLUS在启动时会自动运行两个脚本:glogin.sql 、login.sql。
但glogin.sql是默认会创建的,也就是说原本就有的,只要没有人为删除的话,就能找到这样一个文件。
WINDOWS下,glogin.sql默认所在路径如:E:\oracle\product\10.2.0\db_1\sqlplus\admin
而login.sql文件是要人工手动去创建的。如果没有创建自然SQL*PLUS也自动加载不到这样一个文件。
3、 大家都知道SQL*PLUS在启动时先运行glogin.sql文件,再运行login.sql文件。
但要运行login.sql文件,肯定是先要找到该文件,而SQL*PLUS查找该文件的顺序是:先在当前路径下查找,如找到就运行,运行后终止查找。如没找到再查找有没有SQLPATH环境变量,如有就在该环境变量所对应的路径下查找,如找到就运行,运行后终止查找。如没找到同样终止查找,不再去别的地方查找。如没有SQLPATH环境变量同样终止查找,不再去别的地方查找。而查找glogin.sql只在默认路径下找查,所以一般不移动glogin.sql文件所在的路径。
4、 解释下“当前路径”:
“当前路径”并不指sqlplusw.exe 或 sqlplus.exe 应用程序所在的路径;不同情况(方法)“当前路径”有不同的意义。具体如下:
如果是采用双击带十字架的SQL PLUS图标的方法,进入SQL*PLUS的话,那么当前路径即对应应用程序所在路径。可以通过右击带十字架的图标,然后点击属性查看该路径。
如果是采用在命令窗口输入SQLPLUS命令的方法,进入SQL*PLUS的话,那么当前路径即输入SQLPLUS命令时所在的当前路径。比如:当输入SQLPLUS命令时的提示符为:“C:Documents and Settings\username>”,那么当前路径指的就是“C:Documents and Settings\username”;当输入SQLPLUS命令时的提示符为:“D:\>”,那么当前路径指的就是“D:\”;
5、 建议采用环境变量SQLPATH的方式指定login.sql所在的路径。当设定好SQLPATH环境变量后,一定要退出命令窗口后(注意是命令窗口,而不是命令窗口下的SQL*PLUS),再进入命令窗口,再调用SQL*PLUS才会生效。 而如果直接把login.sql文件放在当前目录下,则只需要退出命令窗口下的SQL*PLUS后,然后再次调用进入SQL*PLUS即可生效,也就是说不用连命令窗口也退出再进。当采用SQLPATH环境变量的方式指定login.sql所在的路径的方法时,应确保与环境变量SQLPATH所指的路径不相同的当前路径下不再有login.sql。否则运行的是当前路径下的login.sql文件,而不是环境变量SQLPATH所指的路径下的login.sql文件。
6、 测试以上结论可能还会用到的知识点:
在WINDOWS命令窗口下,切换路径,举例说明:
1、“C:Documents and Settings\username”切换到C盘,命令:cd c:\
2、“C:Documents and Settings\username”切换到D盘,命令:d:
3、“C:\”切换到D盘,命令:d:
附:Thomas Kyte 常用的login.sql文件内容:
文件内容:
set termout off
define _editor=vi
set serveroutput on size 1000000 format wrapped
column object_name format a30
column segment_name format a30
column file_name format a40
column name format a30
column file_name format a30
column what format a30 word_wrapped
column plan_plus_exp format a100
set trimspool on
set long 5000
set linesize 131
set pagesize 9999
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
语句功能解析:
1、set termout off :
禁止所运行的脚本中所产生的输出输出到界面上。
2、define _editor=vi :
将编辑工具(即在SQLPLUS中输入ED命令时弹出的编辑器)设置为VI编辑器。一般在LINUX或UNIX下才这样设置。在WINDOW下默认编辑工具为记事本。
3、set serveroutput on size 1000000 format wrapped:
使界面上能显示出DBMS_OUTPUT.PUT_LINE包所输出的内容,且设置为最大显示范围,且输出内容的回绕方式为按字符(另一种方式为按单词word_wrapped)。
4、column object_name format a30
column segment_name format a30
column file_name format a40
column name format a30
column file_name format a30
column what format a30 word_wrapped
column plan_plus_exp format a100
以上为定义列的类型与宽度,并指定列的回绕方式(按字符还是按单词)
5、set trimspool on
去掉利用SPOOL命令导出的文档中各行数据后面的空格。因默认情况下利用SPOOL命令导出的文档中各行数据后面会填冲很多空格,从而使得各行长度相等。
6、set long 5000
设置LONG 、CLOB类型的列在SQLPLUS中能够显示的长度。
默认情况下是只能显示出80个字符。但这个通常太短,所以往往需要人工设置大点。可以通过下面的查询语句进行测试:
select view_name,text from dba_views where view_name = 'USER_TABLES';
7、 set linesize 131
设置行的显示宽度(按字符计算),默认80字符,最大999个字符
超过所设置的宽度时,折行显示。
8、 set pagesize 9999
设置每页显示的行数。注意:标题与横线各占一行。
9、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>'
1>、以上一组代码的功能是将提示符修改为:用户名+@+全局数据库名。
2>、define gname=idle 定义一个替代变量gname,并赋初始值为idle。
使用define命令定义的变量在下次引用时,SQLPLUS不会提示输入。
(使用def 命令可以查看SQLPLUS环境下所有通过DEFINE 所定义的变量)
3>、column global_name new_value gname:将列名与变量名绑定在一起,此后查询该列时,会将该列的值存入被绑定的变量中.
4>、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 );
查询全局数据库名,并构造出:用户名+@+全局数据库名 格式的结果。
5>、set sqlprompt '&gname>' :
设置提示符。可以分别运行语句:set sqlprompt test ;与 set sqlprompt test> ;
看下效果。
10、set termout on :
允许所运行的脚本中所产生的输出输出到界面上。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10595277/viewspace-673698/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10595277/viewspace-673698/