[20170615]使用dbms_sqldiag.dump_trace
[20170615]執行dbms_sqldiag.dump_trace看執行計劃.txt
--//上午在想檢視10053執行計劃時使用包時出現如下提示:
SCOTT@book> @ &r/ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SCOTT@book> select count(*) from t1 where skew = 73;
COUNT(*)
----------
73
SCOTT@book> @ &r/dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID 41bbtn98pwgyq, child number 0
-------------------------------------
select count(*) from t1 where skew = 73
Plan hash value: 2432955788
----------------------------------------------------------------------------
| Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time |
----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 1 (100)| |
| 1 | SORT AGGREGATE | | 1 | 3 | | |
|* 2 | INDEX RANGE SCAN| T1_I1 | 86 | 258 | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / T1@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("SKEW"=73)
--//使用包dbms_sqldiag.dump_trace最大的好處是無需硬分析,而使用10053要進行硬分析才能獲得執行計劃.
SCOTT@book> @ &r/10053x 41bbtn98pwgyq 0
BEGIN dbms_sqldiag.dump_trace(p_sql_id=>'41bbtn98pwgyq',p_child_number=>0,p_component=>'Compiler',p_file_id=>'41bbtn98pwgyq'); END;
*
ERROR at line 1:
ORA-44003: invalid SQL name
ORA-06512: at "SYS.DBMS_ASSERT", line 206
ORA-06512: at "SYS.DBMS_SQLDIAG", line 1185
ORA-06512: at line 1
--//報錯.
SYS@book> grant execute on dbms_sqldiag to scott;
Grant succeeded.
--//以sys使用者授權後再次執行問題依舊.
SYS@book> revoke execute on dbms_sqldiag from scott;
Revoke succeeded.
--//google,百度發現別人都可以,而且我以前的測試也沒有遇到問題.最終我發現只要p_file_id引數第1個字母不是數字就ok了,例如:
SCOTT@book> exec dbms_sqldiag.dump_trace(p_sql_id=>'41bbtn98pwgyq',p_child_number=>0,p_component=>'Compiler',p_file_id=>'a1bbtn98pwgyq');
PL/SQL procedure successfully completed.
SCOTT@book> exec dbms_sqldiag.dump_trace(p_sql_id=>'41bbtn98pwgyq',p_child_number=>0,p_component=>'Compiler',p_file_id=>'11bbtn98pwgyq');
BEGIN dbms_sqldiag.dump_trace(p_sql_id=>'41bbtn98pwgyq',p_child_number=>0,p_component=>'Compiler',p_file_id=>'11bbtn98pwgyq'); END;
*
ERROR at line 1:
ORA-44003: invalid SQL name
ORA-06512: at "SYS.DBMS_ASSERT", line 206
ORA-06512: at "SYS.DBMS_SQLDIAG", line 1185
ORA-06512: at line 1
SCOTT@book> @ &r/desc_proc sys dbms_sqldiag dump_trace
INPUT OWNER PACKAGE_NAME OBJECT_NAME
sample : @desc_proc sys dbms_stats gather_%_stats
OWNER PACKAGE_NAME OBJECT_NAME SEQUENCE ARGUMENT_NAME DATA_TYPE IN_OUT DATA_TYPE DEFAULTED
----- ------------ ----------- -------- -------------------- -------------------- --------- --------- ----------
SYS DBMS_SQLDIAG DUMP_TRACE 1 P_SQL_ID VARCHAR2 IN VARCHAR2 N
2 P_CHILD_NUMBER NUMBER IN NUMBER Y
3 P_COMPONENT VARCHAR2 IN VARCHAR2 Y
4 P_FILE_ID VARCHAR2 IN VARCHAR2 Y
--//P_FILE_ID引數僅僅字元型別,並沒有說明第1個引數的字元是數字就不行,oracle真是很奇怪....
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2140767/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20150105]使用dbms_sqldiag.dump_traceSQL
- [20170615]直方圖-高度直方圖(11g).txt直方圖
- oracle 11gr2中使用dbms_sqldiag.dump_trace來獲得10053跟蹤檔案OracleSQL
- laravel使用EasyWeChat 使用Laravel
- 使用FTP限制使用者FTP
- 配置vsftpd匿名使用服務,個人使用者使用以及虛擬使用者使用配置細節!FTP
- Laravel passport 多端使用者使用LaravelPassport
- 使用 CSS 追蹤使用者CSS
- mongodb使用者與角色使用MongoDB
- RecyclerView使用指南(四)—— 使用ItemDecorationView
- RecyclerView使用指南(一)—— 基本使用View
- 使用dwebsocket在Django中使用WebsocketWebDjango
- 限制使用者使用session數Session
- 使用Index提示 強制使用索引Index索引
- ImageJ使用教程(一):開始使用
- winscp使用教程多使用者,winscp使用教程多使用者,教程詳情
- vi/vim使用進階: 在VIM中使用GDB除錯 – 使用vimgdb除錯
- 使用jquery和使用框架的區別jQuery框架
- Docker 使用者操作使用說明Docker
- 儘量使用 useReducer,不要使用 useStateuseReducer
- PyCharm使用技巧(六):Regullar Expressions的使用PyCharmExpress
- 使用Bootstrap tab頁切換的使用boot
- Urllib庫的使用一---基本使用
- 使用PyCharm引入需要使用的包PyCharm
- 使用 JWT 認證使用者身份JWT
- 使用者授權,策略的使用
- 使用普通使用者執行 dockerDocker
- 熟練使用使用jQuery Promise (Deferred)jQueryPromise
- mongoDB使用詳解(在node中使用)MongoDB
- 使用Git管理專案 使用總結Git
- Scrapy框架的使用之Scrapyrt的使用框架
- openfire使用自定義使用者表
- Bitbucket使用說明與SourceTree的使用
- 使用非oracle使用者建立databaseOracleDatabase
- Portage使用者使用指南(轉)
- Mac使用root使用者登入Mac
- 使用者組和使用者
- jumpserver 使用者,系統使用者和管理使用者 普通使用者和特權使用者 區別Server