sqlplus配置和session中sql追蹤

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 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語句執行統計信息。如下:
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:實際返回記錄的數量。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章