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:實際返回記錄的數量。