当前位置:数据库 > SQLServer >>

sqlplus配置和session中sql追踪

sqlplus配置和session中sql追踪
 
[plain] 
  
sqlplus启动时会查找和加载的两个文件login.sql和glogin.sql。
其中glogin.sql文件默认存放在$ORACLE_HOME/sqlplus/admin目录下,login.sql可以设置在SQLPATH中。
一、login.sql文件
login.sql文件可以存放sqlplus中能使用的任何命令,包括sqlplus命令和sql语句。
sqlplus启动时会首先查找当前目录下的login.sql文件,其次会在SQLPATH目录下查找。
如果找到login.sql文件,则在SQLPLUS显示"SQL>”前执行login.sql里的所有内容。
如果没找到login.sql文件,则停止查找。
所以可将个人喜欢的常用设置放在login.sql文件中,每次sqlplus启动时会自动加载。
设置SQLPATH
在ORACLE用户profile文件中加入SQLPATH环境变量。我的是.bash_profile
如:export SQLPATH=/data/app/sqlpath(此路径是你login.sql所在的目录)
当然也可启动sqlplus后,再执行该文件(使用@命令)。
 
二、glogin.sql
文件glogin.sql是ORACLE为所有的数据库用户建立默认的SQLPLUS设置,默认存放在$ORACLE_HOME/sqlplus/admin目录下。
sqlplus启动时也会在出现"SQL>”之前自动执行该文件的所有内容。所以也可将一些常用设置放在该文件里。
代码为:
[sql] 
define_editor=vi  
----设定默认编辑器  
set timing on  
--显示执行时间  
set serveroutput on size 1000000  
--设定输出显示,且缓冲区设置为1000000   
set trimspool on  
--假脱机输出文本时,会去除文本行两端的空格,且行宽不定.如果为off,则文本行宽度等于linesize   
set long 5000  
--设置LONG和CLOB类型显示的默认字节数  
set linesize 1000  
--设定文本行宽为1000    
set pagesize 9999  
--设定SQLPLUS的页面大小    
set NULL < null >   
--设定NULL值显示为null   
column plan_plus_exp format a80  
--设定autotrace得到的解释计划输出的默认宽度   
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  
--以当前用户名@实例名代替 sql> 显示  
在session中进行sql追踪方法:
set autotrace off;
默认不生成autotrace报告
set autotrace on explain
只显示优化器执行路径
set autotrace on statistics
只显示sql语句的执行统计信息
set autotrace on ;
显示优化器路径和sql语句执行统计信息。如下:
[sql] 
test@ORCL> set autotrace on;  
test@ORCL> select * from t;  
  
        ID NAME  
---------- ----------------------------------  
         1 a  
         2 a  
         3 a  
         4 w  
  
Elapsed: 00:00:00.05  
  
Execution Plan  
----------------------------------------------------------  
Plan hash value: 1601196873  
  
--------------------------------------------------------------------------  
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |  
--------------------------------------------------------------------------  
|   0 | SELECT STATEMENT  |      |     4 |    20 |     3   (0)| 00:00:01 |  
|   1 |  TABLE ACCESS FULL| T    |     4 |    20 |     3   (0)| 00:00:01 |  
--------------------------------------------------------------------------  
  
  
Statistics  
----------------------------------------------------------  
          0  recursive calls  
          0  db block gets  
          7  consistent gets  
          0  physical reads  
          0  redo size  
        672  bytes sent via SQL*Net to client  
        519  bytes received via SQL*Net from client  
          2  SQL*Net roundtrips to/from client  
          0  sorts (memory)  
          0  sorts (disk)  
          4  rows processed  
 0  recursive calls:在执行这个sql语句中oracle内部额外执行的sql语句的个数。
          0  db block gets:从buffer cache中读取的数据块的数量(通过update/delete/select for update读的次数)。
          7  consistent gets:从buffer cache中读取的undo数据块的数量(通过不带for update的select 读的次数)。
          0  physical reads:从硬盘读取的数据块的数量。
          0  redo size:执行sql过程中产生redo的大小。
        672  bytes sent via SQL*Net to client:通过SQL*Net发送给客户端的字节数。
        519  bytes received via SQL*Net from client:通过SQL*Net接受客户端的字节数。
          2  SQL*Net roundtrips to/from client:网络往返次数。(在sql*plus 中可以受arraysize参数影响。)
          0  sorts (memory):内存排序记录的数量。
          0  sorts (disk):磁盘排序记录的数量。
          4  rows processed:实际返回记录的数量。
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,