ORACLE執行計劃的檢視
前言
一個系統在剛開始的時候,由於資料庫中資料量不大,開發人員的主要精力都在業務與功能實現上。系統完成部署上線後隨著時間的累積,每個表中的資料都在不斷增長,我們往往會發現系統越來越慢,這可能是程式設計不合理,也可能是程式碼質量不高,也可能是業務流程問題,但是作為DBA或者負責資料庫調優的工程師更應該想想是否是資料庫方面的問題。資料庫問題有很多種,作為開發人員主要關注SQL語句的合理性,至於資料庫的其它問題可以暫時交給DBA去處理。對SQL語句調優,很重要的一點是檢視SQL語句的執行計劃。本文將簡單介紹如何檢視Oracle資料庫中的執行計劃。
執行計劃的清除
Oracle資料庫的執行計劃實際都儲存在plan_table這張表中,也許已經有人做過檢視執行計劃的工作,那麼plan_table中必然存在很多歷史的執行計劃。為了不影響之後的工作,最好能將之前的執行計劃都刪除。
首先,我們先以sysdba賬號通過sqlplus連線Oracle:
[oracle@ab23133 ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.5.0 - Production on Mon May 19 15:56:14 2014
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
然後刪除plan_table這張表:
SQL> drop table plan_table;
Table dropped.
最後退出sqlplus:
SQL> drop table plan_table;
Table dropped.
重新開啟執行計劃
我們再次以sysdba賬號通過sqlplus連線Oracle,開啟執行計劃的步驟如下:
1、重新建立收集執行計劃的表plan_table;
SQL> @?/rdbms/admin/utlxplan.sql;
Table created.
2、建立plan_table這張表的別名,因為同義詞可以節省大量的資料庫空間,不同使用者操作同一張表時不會有多少差別。
SQL> create public synonym plan_table for plan_table;
Synonym created.
3、給我們自己的賬號myaccount授予plan_table表的所有許可權;
SQL> grant all on plan_table to myaccount;
Grant succeeded.
4、建立plustrace角色;
SQL> @?/sqlplus/admin/plustrce.sql
SQL> create role plustrace;
Role created.
5、將給角色新增訪問以下檢視的許可權;
SQL> grant select on v_$sesstat to plustrace;
Grant succeeded.
SQL> grant select on v_$statname to plustrace;
Grant succeeded.
SQL> grant select on v_$mystat to plustrace;
Grant succeeded.
SQL> grant plustrace to dba with admin option;
Grant succeeded.
6、設定不把輸出的結果顯示在螢幕上;
SQL> set echo off
7、將plustrace角色授權給賬號myaccount;
SQL> grant plustrace to myaccount;
Grant succeeded.
8、使用賬號myaccount連線Oracle;
SQL> conn myaccount/myaccount;
Connected.
9、設定只檢視執行計劃的統計資訊;
set autotrace traceonly statistics;
應用舉例
我們以下面的SQL為例,來檢視其執行計劃:
SQL> select * from t_recharge_info where recharge_sid=`14051317413765487300000002`;
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
23 consistent gets
0 physical reads
0 redo size
2093 bytes sent via SQL*Net to client
492 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
從上面的SQL例子,我們看到輸出了這條SQL的執行計劃的統計資訊,要設定檢視執行計劃,可以執行以下命令:
SQL> set autotrace on explain;
總結
從Oracle執行計劃的配置我們瞭解到,只需要跟著這些步驟就可以檢視SQL的執行計劃及統計資訊。這些內容比較簡單,沒有什麼深奧的原理,寫此博文是為了方便記憶,為將來做個備忘。
後記:個人總結整理的《深入理解Spark:核心思想與原始碼分析》一書現在已經正式出版上市,目前京東、噹噹、天貓等網站均有銷售,歡迎感興趣的同學購買。
京東:http://item.jd.com/11846120.html
噹噹:http://product.dangdang.com/23838168.html
相關文章
- Oracle檢視執行計劃的命令Oracle
- Oracle如何檢視真實執行計劃(一)Oracle
- Oracle檢視sql_id 的歷史執行計劃OracleSQL
- 檢視 OceanBase 執行計劃
- 如何檢視SQL的執行計劃SQL
- 執行計劃-2:檢視更多的資訊
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- oracle 固定執行計劃Oracle
- Oracle sql執行計劃OracleSQL
- 檢視SQL執行計劃的幾種常用方法YQSQL
- 【SQL_PLAN】Oracle 透過檢視sql_plan 格式化執行計劃SQLOracle
- Oracle“並行執行”——監控檢視Oracle並行
- 使用set autotrace on 檢視資料庫執行計劃資料庫
- 檢視一個正在執行的sql的執行計劃(explain for connection processlist_id)SQLAI
- Oracle調優之看懂Oracle執行計劃Oracle
- 檢視執行計劃出現ORA-22992錯誤
- 達夢資料庫SQL執行計劃檢視方法資料庫SQL
- [20210114]toad檢視真實執行計劃問題.txt
- Oracle-繫結執行計劃Oracle
- Oracle SQL Profile固定執行計劃的方法OracleSQL
- Oracle 變數窺視引起執行計劃異常故障分析Oracle變數
- 微課sql最佳化(11) 、如何檢視執行計劃SQL
- Oracle執行計劃Explain Plan 如何使用OracleAI
- oracle使用outline固定執行計劃事例Oracle
- [20210205]toad檢視真實執行計劃問題3.txt
- Oracle緊急固定執行計劃之手段Oracle
- 在Oracle中,如何得到真實的執行計劃?Oracle
- 執行計劃-1:獲取執行計劃
- 分析執行計劃優化SQLORACLE的執行計劃(轉)優化SQLOracle
- Oracle 通過註釋改變執行計劃Oracle
- 知識篇 | ORACLE 如何執行計劃繫結Oracle
- Oracle如何手動重新整理執行計劃Oracle
- Oracle資料庫關於SQL的執行計劃(轉)Oracle資料庫SQL
- Oracle 9i變數窺視引起執行計劃異常故障報告Oracle變數
- oracle執行計劃------未走索引,隱式轉換的坑Oracle索引
- .Oracle固定執行計劃之SQL PROFILE概要檔案OracleSQL
- Jtti:linux怎麼檢視oracle資料庫的執行狀態JttiLinuxOracle資料庫
- MySQL執行計劃MySql
- SYBASE執行計劃