ITPub博客

首页 > Linux操作系统 > Linux操作系统 > how to remove "Elapsed" in sqlplus

how to remove "Elapsed" in sqlplus

原创 Linux操作系统 作者:zhanglei_itput 时间:2009-08-03 12:54:12 0 删除 编辑


vi $ORACLE_HOME/sqlplus/admin/glogin.sql to remove "Elapsed"


    最近在写shell脚本的时候,发现了一个问题,之前没有注意过的问题,而这个问题又是恰恰导致我们带库不正常的原因。
   
    1. 重现Elapsed: 00:00:00.05标识
       SQL> conn ecc_view/ecc@devdb
       Connected.
       SQL> set heading off
       SQL> set feedback off
       SQL> select table_name from user_tables;
       
       ECC_VIEW1
       TEST
       SM_OPER_LOG_BAK
       SM_OPER_LOG
       TABLE1
       T
       T3
       Elapsed: 00:00:00.19
      
       每次执行完sql语句的时候,最后一行总是带有一个Elapsed: 00:00:00.19时间统计信息,这个字段会影响我后续的shell脚本的执行。
       比如说spool一个parfile,我只能在cat 出一个去掉Elapsed的脚本出来
       e.g. cat /u01/oracle/parfile1.sql |grep -v Elapsed > /u01/oracle/parfile2.sql

    2. 去掉sql语句执行后的时间统计信息
       vi $ORACLE_HOME/sqlplus/admin/glogin.sql
       [oracle@rac1 admin]$ more glogin.sql
       --
       -- Copyright (c) 1988, 2004, Oracle Corporation.  All Rights Reserved.
       --
       -- NAME
       --   glogin.sql
       --
       -- DESCRIPTION
       --   SQL*Plus global login "site profile" file
       --
       --   Add any SQL*Plus commands here that are to be executed when a
       --   user starts SQL*Plus, or uses the SQL*Plus CONNECT command
       --
       -- USAGE
       --   This script. is automatically run        
       -- Used by Trusted Oracle
       COLUMN ROWLABEL FORMAT A15
       
       -- Used for the SHOW ERRORS command
       COLUMN LINE/COL FORMAT A8
       COLUMN ERROR    FORMAT A65  WORD_WRAPPED
       
       -- Used for the SHOW SGA command
       COLUMN name_col_plus_show_sga FORMAT a24
       COLUMN units_col_plus_show_sga FORMAT a15
       -- Defaults for SHOW PARAMETERS
       COLUMN name_col_plus_show_param FORMAT a36 HEADING NAME
       COLUMN value_col_plus_show_param FORMAT a30 HEADING VALUE
       
       -- Defaults for SHOW RECYCLEBIN
       COLUMN origname_plus_show_recyc   FORMAT a16 HEADING 'ORIGINAL NAME'
       COLUMN objectname_plus_show_recyc FORMAT a30 HEADING 'RECYCLEBIN NAME'
       COLUMN objtype_plus_show_recyc    FORMAT a12 HEADING 'OBJECT TYPE'
       COLUMN droptime_plus_show_recyc   FORMAT a19 HEADING 'DROP TIME'
       
       -- Defaults for SET AUTOTRACE EXPLAIN report
       -- These column definitions are only used when SQL*Plus
       -- is connected to Oracle 9.2 or earlier.
       COLUMN id_plus_exp FORMAT 990 HEADING i
       COLUMN parent_id_plus_exp FORMAT 990 HEADING p
       COLUMN plan_plus_exp FORMAT a60
       COLUMN object_node_plus_exp FORMAT a8
       COLUMN other_tag_plus_exp FORMAT a29
       COLUMN other_plus_exp FORMAT a44
       
       -- Default for XQUERY
       COLUMN result_plus_xquery HEADING 'Result Sequence'
       
       -- User Vi
       define_editor=vi
       --set timing on
       set timing off

       set serveroutput on size 100000
       set linesize 120
       set pagesize 999
       set trimspool on
       set long 5000
       set termout on
       [oracle@rac1 admin]$
      
      
    3. 再次执行select语句
       [oracle@rac1 ~]$ sqlplus /nolog
       SQL*Plus: Release 10.2.0.4.0 - Production on Mon Aug 3 12:42:46 2009
       Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
       SQL> conn
ecc_view/ecc@devdb
       Connected.
       SQL> set heading off
       SQL> set feedback off
       SQL> select table_name from user_tables;
       
       ECC_VIEW1
       TEST
       SM_OPER_LOG_BAK
       SM_OPER_LOG
       TABLE1
       T
       T3

       说明:vi $ORACLE_HOME/sqlplus/admin/glogin.sql以后,注释set timing on ,执行时间提示符 Elapsed: 00:00:00.19就没有了。
      
        相关命令解析如下:      
        --定义缓冲编辑器为vi
        define_editor=vi
        --使DBMS_OUTPUT有效,并设置成最大buffer,并防止"吃掉"最前面的空格
        set serveroutput on size 1000000 format wrapped
        --设置一行可以容纳的字符数
        set linesize 256
        --设置一页有多少行数
        set pagesize 50
        --设置来回数据显示量,这个值会影响autotrace时一致性读等数据
        set arraysize 5000
        --页和页之间不设任何间隔
        set newpage none
        --LONG或CLOB显示的长度
        set long 5000
        --将SPOOL输出中每行后面多余的空格去掉
        set trimspool on
        --设置查询耗时
        set timing on
        --autotrace后explain plan output的格式
        col plan_plus_exp format a120
        --在屏幕上暂不显示输出的内容,为下面的设置sql做准备
        set termout off
        e.g. 7 rows selected.
        --设置时间格式
        alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
        --获得用户名和global_name
        col login_info_temp new_value login_info
        select user||'@'||global_name login_info_temp from global_name;
        --设置sql提示为"user@global_name"
        set sqlprompt '&login_info SQL> '
        --在屏幕上显示输出的内容
        set termout on

 

参考文献: http://denniswwh.itpub.net/post/15174/487338

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9252210/viewspace-611123/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-02-10

  • 博文量
    400
  • 访问量
    1224651