oraclesql計劃
① oracle sql執行計劃怎麼看
首先,配置AUTOTRACE工具。
【ORACLE_HOME】代表D:\app\Shadow\proct\12.1.0\dbhome_1路徑(這個是我的,你看一下自己的)。
(1)、cd [ORACLE_HOME]/rdbms/admin ;
(2)、作為SYSTEM登陸SQL*Plus ;
(3)、運行@utlxplan ;
(4)、運行 CREATE PUBLIC SYNONYM PLAN_TABLE FOR PLAN_TABLE ;
(5)、運行GRANT ALL ON PLAN_TABLE TO PUBLIC ;
(如果是oracle 10g以上版本,上述步驟可省略。敏鉛)
下一步是創建豎手並授予PLUSTRACE角色:
(1)、cd [ORACLE_HOME]/sqlplus/admin ;
(2)、作為SYS或SYSDBA登陸SQL*Plus;
(3)、運行@plustrce ;
(4)、運行GRANT PLUSTRACE TO PUBLIC ;
配置完成;
然後重新登陸SQL*Plus;
SQL>set autotrace on ;
SQL> select * from emp ;
後面顯示執行計劃…………………………略余拿嫌。
② Oracle如何查看sql的真實執行計劃
查詢v$sql_plan視沖念圖中的實際執行計劃
1:在窗口執行下面SQL語句
SELECT ENAME, SAL FROM SCOTT.EMP, SCOTT.DEPT
WHERE EMP.DEPTNO =DEPT.DEPTNO
AND DEPT.LOC='CHICAGO';
2:查看執行SQL的SQL_ID
SELECT SQL_ID, SQL_TEXT FROM V$SQLWHERE SQL_TEXT LIKE'%SELECT ENAME, SAL FROM SCOTT.EMP, SCOTT.DEPT%'
3: 查看v$sql_plan視圖
SELECT * FROM v$sql_plan WHERE SQL_ID='7m5qbhn98j1xw'哪彎;
通過v$sql_plan視圖查看實李判悶際執行計劃,其實是不太現實的,因為閱讀困難,可讀性差,尤其是復雜SQL語句。
③ oracle sql執行計劃怎麼分析
在發現一個語句的執行計劃有異常的時候,通常會生成一個sqlrpt看看使用的執行計劃是否正確,如何來判斷執行計劃是否正確,將通過以下幾個步驟來判斷:
1.先查看sql語句的結構,看語句中連接是union,還是等值連接還是左、悄槐右連接,再看連接中的表數量。
2.查看執行計劃中出現異常的部分。
3.查看各表的索引情況及表是否是分區的,在where條件上使用的索引列是否正確,看統計分租友析表中對表的分析結果是否正確
4.分析表的用途,表的數據日增弊運槐長量。
5.分析為什麼會出現異常的執行計劃。
跟蹤執行計劃的方法:
(1) set autotrace on explain 只顯示查詢結果和執行計劃
set autotrace on statistic 只顯示查詢結果統計信息
set autotrace on 顯示前兩者
set autotrace traceonly 不顯示查詢結果,只顯示執行計劃和統計信息
set autotrace off 關閉跟蹤
要使用autotrace,必須在sqlplus裡面使用,且使用的是sys用戶。
(2)可以使用explain plan for select * from c_cons 可以解析執行計劃,然後通過select * from table(dbms_xplain.display(null,null,』outline』,null));來顯示執行計劃。
(3)使用工具Toad for oracle使用sql_id來生成執行計劃
④ oracle怎麼查看sql執行計劃
一般需要藉助第三方工具來查看執行計劃。
工具:PL/SQL
步驟:
1、打開第三方工具PL/SQL,並登錄到指定資料庫。
⑤ oracle中的sql執行計劃怎麼看
1、直接File->New->Explain Plan Window,桐槐鎮在窗口中執行sql可以查看計劃結果。其中,Cost表示cpu的消耗,單位為n%,Cardinality表示執行的行數,等價Rows。
2、先執行 EXPLAIN PLAN FOR select * from tableA where paraA=1,再 select * from table(DBMS_XPLAN.DISPLAY)便可以看到oracle的執行計劃了,看到的結果和1中的一樣,所以使用工具的時候推薦使用1方法。
注意:PL/SQL Dev工具的Command window中不支持set autotrance on的命令。還有使用工具方法查看計劃看到的信息不全,有些時候我們需要sqlplus的支持。
二、通過sqlplus
1.最簡單的辦法
Sql> set autotrace on
Sql> select * from al;
執行完語句後,會顯示explain plan 與 統計信息。
這個語句的優點就是它的缺點,這樣在用該方法查看執行時間較長的sql語句時,需要等待該語句執行成功後,才返回執明清行計劃,使優化的周期大大增長。如果局粗不想執行語句而只是想得到執行計劃可以採用:
Sql> set autotrace traceonly
⑥ Oracle如何查看SQL實際執行計劃
1、 查看最近執行的SQL語句
select/*recentsql*/s.SQL_ID,s.CHILD_NUMBER,s.HASH_VALUE,s.ADDRESS,s.EXECUTIONS,s.SQL_TEXT
fromv$sqls
wheres.PARSING_USER_ID=(
selectu.user_idfromall_usersu
whereu.username='YH_TEST'
)ands.COMMAND_TYPEin(2,3,6,7,189)
anpper(s.SQL_TEXT)notlikeupper('%recentsql%')
select/*+gather_plan_statistics*//*plan_statistics1*/name,salaryfromtestwherename='t1';
2、使用dbms_xplan.display_cursor查看執行計劃,它的用法見筆記 《dbms_xplan.display_cursor的用法》,
注意了:若dbms_xplan.display_cursor要以ALLSTATS LAST格式輸出的話,/*+gather_plan_statistics*/這個提示信息放到查詢語句中是必須的。
⑦ oracle sql執行計劃怎麼看
通過Oracle執行計劃可以看到SQL的執行時間。EXPLAIN PLAN FORSELECT * FROM table;SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);SQL>set timing on --顯示執行時間SQL>set autorace on ?C顯示執行計劃SQL>set autorace on ?C顯示執行計劃SQL>set autotrace traceonly ?C只顯示執行計劃即侍爛不顯示查詢出來的數據設亮拆置完畢後執行敬談棗SQL語句就會顯示執行時間。
⑧ 在Oracle中啟用AutoTrace查看SQL執行計劃
通過以下方法可以把Autotrace的許可權授予Everyone
如果你需要限制Autotrace許可權 可以把對public的授權改為對特定user的授權
D:oracleora >sqlplus/nolog SQL*Plus:Release Proctionon星期二 月 : : Copyright(c) OracleCorporation Allrightsreserved SQL>connectsysassysdba
請輸入口令:
已連接
SQL>[b]@? dbmsadminutlxplan[/b]
表已創建
SQL>createpublicsynonymplan_tableforplan_table;
同義詞已創建
SQL>grantallonplan_tabletopublic;
授權成功
SQL>[b]@?sqlplusadminplustrce[/b] SQL> 余閉SQL>droproleplustrace; droproleplustrace *
ERROR 位於第 行:
ORA : 角色 PLUSTRACE 不存在
SQL>createroleplustrace;
角色已創建
SQL> SQL>grantselectonv_$sesstattoplustrace;
授權成功
SQL>grantselectonv_$statnametoplustrace;
授權成功
SQL>grantselectonv_$sessiontoplustrace;
碼櫻授權成功
SQL>;
授權成功
SQL> SQL>setechooff
DBA用戶首先被授予了plustrace角色 然後我們可以把plustrace授予public
這樣所有用戶都將擁有plustrace角色的許可權
SQL>[b]grantplustracetopublic;[/b]
授權成功
然後我們就可以使用AutoTrace的功能了
SQL>connecteqsp/eqsp
已連接
SQL>setautotraceon SQL>settimingon SQL>
關於Autotrace幾個常用選項的說明:
SET AUTOTRACE OFF 不生成AUTOTRACE 報告 這是預設模式
SET AUTOTRACE ON EXPLAIN AUTOTRACE只顯示優化器執行路徑報告
SET AUTOTRACE ON STATISTICS 只顯示執行統計信息
SET AUTOTRACE ON 包含執行計劃和統計信息
SET AUTOTRACE TRACEONLY 同set autotrace on 但是不顯示查詢輸出
SQL>setautotracetraceonly SQL>selecttable_namefromuser_tables;
已選擇 行
已用時間: : :
ExecutionPlan SELECTSTATEMENTptimizer=CHOOSE 豎模裂 NESTEDLOOPS NESTEDLOOPS(OUTER) NESTEDLOOPS(OUTER) NESTEDLOOPS(OUTER) NESTEDLOOPS(OUTER) NESTEDLOOPS TABLEACCESS(BYINDEXROWID)OF OBJ$ INDEX(RANGESCAN)OF I_OBJ (UNIQUE) TABLEACCESS(CLUSTER)OF TAB$ INDEX(UNIQUESCAN)OF I_OBJ# (NON UNIQUE) TABLEACCESS(BYINDEXROWID)OF OBJ$ INDEX(UNIQUESCAN)OF I_OBJ (UNIQUE) INDEX(UNIQUESCAN)OF I_OBJ (UNIQUE) TABLEACCESS(CLUSTER)OF USER$ INDEX(UNIQUESCAN)OF I_USER# (NON UNIQUE) TABLEACCESS(CLUSTER)OF SEG$ INDEX(UNIQUESCAN)OF I_FILE#_BLOCK# (NON UNIQUE) TABLEACCESS(CLUSTER)OF TS$ INDEX(UNIQUESCAN)OF I_TS# (NON UNIQUE) Statistics recursivecalls dbblockgets consistentgets physicalreads redosize bytessentviaSQL*Nettoclient bytesreceivedviaSQL*Netfromclient SQL*Netroundtripsto/fromclient sorts(memory) sorts(disk) rowsprocessed SQL>
補充一下在 g中的用法
在 g中帶有plan_table這張表 但是將名字改為了plan_table$
只需$ORACLE_HOME/sqlplus/admin/plustrce sql創建plustrace角色
lishixin/Article/program/Oracle/201311/18423
⑨ oracle sql 執行計劃怎麼看
ING COUNT(1) >=2
ORDER BY 2 DESC ;
--根祥手據具體的SQL_ID查看對做搏應的SQL語句
SELECT * FROM V$SQL
WHERE SQL_ID=:SQL_ID;
可以通過下面SQL語句查詢對應SQL的所有執行計劃或部分執行計劃,分析出現多個執純宴祥行計劃的原因
--查詢SQL所有執行計劃
SELECT * FROM TABLE(SYS.DBMS_XPLAN.DISPLAY_