sqlplus配置和session中sql追踪

来源:互联网 发布:紧急通知最新域名升级 编辑:程序博客网 时间:2024/06/16 16:30
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>”之前自动执行该文件的所有内容。所以也可将一些常用设置放在该文件里。
代码为:
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 gnameset termout offdefine gname=idlecolumn global_name new_value gnameselect 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语句执行统计信息。如下:
test@ORCL> set autotrace on;test@ORCL> select * from t;        ID NAME---------- ----------------------------------         1 a         2 a         3 a         4 wElapsed: 00:00:00.05Execution 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:实际返回记录的数量。
下面是个 

解读sql的执行计划!链接点击打开链接





原创粉丝点击