热衷技术,热爱交流
分类: Oracle
2013-08-28 23:49:26
sqlplus 启动时候,先执行$ORACLE_NAME/sqlplus/admin/glogin.sql文件,然后执行SQLPATH环境变量指向的目录中的login.sql文件。如果SQLPATH环境变量不存在,则加载当前路径下的login.sql。有必要自定义SQLPATH环境变量,编辑login.sql文件,让sqlplus显示的更实用,美观。我的login.sql文件内容如下:
-- 使用vi编辑缓冲区sql语句
define _editor=vi
--不显示反馈结果(例如"1 row selected")
set feedback off
--设置不显示标题
set heading off
--设置不显示耗时
set timing off
--设置脚本输出的内容不显示
set termout off
---设置提示符
define gname="_USER"
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
set serveroutput on size 1000000
set heading on
set wrap on
--下面脚本获取实例状态
declare
var_status varchar2(12);
begin
select status into var_status from v$instance;
if var_status is not null then
dbms_output.put_line(var_status);
execute immediate 'alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"';
end if;
end;
/
set feedback on
--设置long或者clob列时候显示的字节数,如果太小,输出会被截断
set long 300000
--假脱机输出时去除文本两端多余的空格,否则宽度等于linesize
set trimspool on
--设置显示的文本行宽为300字符
set linesize 300
--设置autotrace后explain plan output输出的默认宽度
col plan_plus_exp format a120
--设置来回数据显示量,这个值会影响autotrace时一致性读等数据
--set arraysize 5000
--页和页之间不设任何间隔
set newpage none
--edit file路劲
set editfile "/u01/edit.sql"
--设置列之间的间隔符
set colsep |
--设置输入50行后打印一次列名
set pagesize 50
--根据实际情况,预设一些列的宽度
COL OWNER FOR a10
col name for a30
col osuser for a10
col machine for a10
col SQL_TEXT for a50
--set autotrace on
col username for a15
col tablespace_name for a20
col segment_name for a25
col PROFILE for a15
col PROPERTY_VALUE for a30
col PROPERTY_NAME for A40
col DESCRIPTION for a40
----for v$sysaux_occupants;
col schema_Name for a20
col occupant_desc for a60
col OCCUPANT_NAME for a30
col MOVE_PROCEDURE for a40
col service_name for a20
col osuser for a20
col process for a10
-----for TA-------------
COL START_TIME for a40