sql正在運行的包
㈠ java常用包有幾個
java中常用的包有五個
java.lang.*
提供利用 Java 編程語言進行程序設計的基礎類。最重要的類是 Object(它是類層次結構的根)和 Class(它的實例表示正在運行的應用程序中的類)。
java.util.*
包含集合框架、遺留的 collection 類、事件模型、日期和時間設施、國際化和各種實用工具類(字元串標記生成器、隨機數生成器和位數組、日期Date類、堆棧Stack類、向量Vector類等)。集合類、時間處理模式、日期時間工具等各類常用工具包
java.io.*
Java的核心庫java.io提供了全面的IO介面。包括:文件讀寫、標准設備輸出等。Java中IO是以流為基礎進行輸入輸出的,所有數據被串列化寫入輸出流,或者從輸入流讀入。
java.net.*
並非所有系統都支持 IPv6 協議,而當 Java 網路連接堆棧嘗試檢測它並在可用時透明地使用它時,還可以利用系統屬性禁用它。在 IPv6 不可用或被顯式禁用的情況下,Inet6Address 對大多數網路連接操作都不再是有效參數。雖然可以保證在查找主機名時 java.net.InetAddress.getByName 之類的方法不返回 Inet6Address,但仍然可能通過傳遞字面值來創建此類對象。在此情況下,大多數方法在使用 Inet6Address 調用時都將拋出異常。
java.sql.*
提供使用 JavaTM 編程語言訪問並處理存儲在數據源(通常是一個關系資料庫)中的數據的 API。此 API 包括一個框架,憑藉此框架可以動態地安裝不同驅動程序來訪問不同數據源。
㈡ 獲取SQL執行計劃的常見幾種方法
1. 預估執行計劃 - Explain Plan
Explain plan以SQL語句作為輸入,得到這條SQL語句的執行計劃,並將執行計劃輸出存儲到計劃表中。
首先,在你要執行的SQL語句前加explain plan for,此時將生成的執行計劃存儲到計劃表中,語句如下:
explain plan for SQL語句
然後,在計劃表中查詢剛剛生成的執行計劃,語句如下:
select * from table(dbms_xplan.display);
注意:Explain plan只生成執行計劃,並不會真正執行SQL語句,因此產生的執行計劃有可能不準,因為:
1)當前的環境可能和執行計劃生成時的環境不同;
2)不會考慮綁定變數的數據類型;
3)不進行變數窺視。
2. 查詢內存中緩存的執行計劃 (dbms_xplan.display_cursor)
如果你想獲取正在執行的或剛執行結束的SQL語句真實的執行計劃(即獲取library cache中的執行計劃),可以到動態性能視圖里查詢。方法如下:
1)獲取SQL語句的游標
游標分為父游標和子游標,父游標由sql_id(或聯合address和hash_value)欄位表示,子游標由child_number欄位表示。
如果SQL語句正在運行,可以從v$session中獲得它的游標信息,如:
select status, sql_id, sql_child_number from v$session where status='ACTIVE' and ....
如果知道SQL語句包含某些關鍵字,可以從v$sql視圖中獲得它的游標信息,如:
select sql_id, child_number, sql_text from v$sql where sql_text like '%關鍵字%『
2)獲取庫緩存中的執行計劃
為了獲取緩存庫中的執行計劃,可以直接查詢動態性能視圖v$sql_plan和v$sql_plan_statistics_all等,但更方便的方法是以sql_id和子游標為參數,執行如下語句:
select * from table(dbms_xplan.display_cursor('sql_id',child_number));
3)獲取前一次的執行計劃:
set serveroutput off
select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));
3. 查詢歷史執行計劃(dbms_xplan.display_awr)
AWR會定時把動態性能視圖中的執行計劃保存到dba_hist_sql_plan視圖中,如果你想要查看歷史執行計劃,可以採用如下方法查詢:
select * from table(dbms_xplan.display_awr('sql_id');
4. 在用sqlplus做SQL開發是(Autotrace)
set autotrace是sqlplus工具的一個功能,只能在通過sqlplus連接的session中使用,它非常適合在開發時測試SQL語句的性能,有以下幾種參數可供選擇:
SET AUTOTRACE OFF ---------------- 不顯示執行計劃和統計信息,這是預設模式
SET AUTOTRACE ON EXPLAIN ------ 只顯示優化器執行計劃
SET AUTOTRACE ON STATISTICS -- 只顯示統計信息
SET AUTOTRACE ON ----------------- 執行計劃和統計信息同時顯示
SET AUTOTRACE TRACEONLY ------ 不真正執行,只顯示預期的執行計劃,同explain plan
5. 生成Trace文件查詢詳細的執行計劃 (SQL_Trace, 10046)
SQL_TRACE作為初始化參數可以在實例級別啟用,也可以只在會話級別啟用,在實例級別啟用SQL_TRACE會導致所有進程的活動被跟蹤,包括後台進程及所有用戶進程,這通常會導致比較嚴重的性能問題,所以在一般情況下,我們使用sql_trace跟蹤當前進程,方法如下:
SQL>alter session set sql_trace=true;
...被跟蹤的SQL語句...
SQL>alter session set sql_trace=false;
如果要跟蹤其它進程,可以通過Oracle提供的系統包DBMS_SYSTEM. SET_SQL_TRACE_IN_SESSION來實現,例如:
SQL> exec dbms_system.set_sql_trace_in_session(sid,serial#,true) --開始跟蹤
SQL> exec dbms_system.set_sql_trace_in_session(sid,serial#,false) --結束跟蹤
生成trace文件後,再用tkprof 工具將sql trace 生成的跟蹤文件轉換成易讀的格式,語法如下:
tkprof inputfile outputfile
10046事件是SQL_TRACE的一個升級版,它也是追蹤會話,生成Trace文件,只是它裡面的內容更詳細,