{"id":284,"date":"2012-01-14T21:05:20","date_gmt":"2012-01-14T13:05:20","guid":{"rendered":"http:\/\/www.royalwzy.com\/?p=284"},"modified":"2014-01-14T21:10:17","modified_gmt":"2014-01-14T13:10:17","slug":"oracle%e4%b8%ad%e5%b7%a5%e5%85%b7%e7%9a%84%e4%bd%bf%e7%94%a805-tkprof","status":"publish","type":"post","link":"http:\/\/www.royalwzy.com\/?p=284","title":{"rendered":"ORACLE\u4e2d\u5de5\u5177\u7684\u4f7f\u752805&#8211;TKPROF"},"content":{"rendered":"<div>\n<div>tkprof\u5de5\u5177\u7684\u4f7f\u7528<\/p>\n<ol>\n<li>tkprof\u5de5\u5177\u4f4d\u4e8e$ORACLE_HOME\/bin\u76ee\u5f55\u4e0b(\u67e5\u770b\u547d\u4ee4which trcsess),\u7528\u4e8e\u683c\u5f0f\u5316trace\u6587\u4ef6(\u4e5f\u53ef\u4ee5\u4f7f\u7528\u7b2c\u4e09\u65b9\u7684\u5de5\u5177,\u683c\u5f0f\u5316\u51fa\u6765\u7684\u66f4\u52a0\u7f8e\u89c2\u548c\u5168\u9762),\u4ece\u800c\u53ef\u4ee5\u975e\u5e38\u65b9\u4fbf\u7684\u8ddf\u8e2a\u548c\u8bca\u65adsql\u8bed\u53e5\u7684\u6267\u884c\u6548\u7387;<\/li>\n<li>tkprof\u7684\u8bed\u6cd5;\n<ol>\n<li>table:\u624b\u52a8\u751f\u6210explain plan\u65f6,\u5b58\u50a8\u4e2d\u95f4\u4fe1\u606f\u7684\u4e34\u65f6\u8868,\u9ed8\u8ba4\u4e3aPROF$PLAN_TABLE;<\/li>\n<li>explain:\u624b\u52a8\u751f\u6210explain\u65f6,\u8fde\u63a5\u6570\u636e\u5e93\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801;<\/li>\n<li>print:\u4ec5\u4ec5\u5904\u7406\u524dinteger\u6570\u91cf\u7684sql\u8bed\u53e5,\u5982\u679c\u6211\u4eec\u9700\u8981\u751f\u6210\u811a\u672c,\u8be5\u53c2\u6570\u5bf9\u811a\u672c\u4e2d\u5305\u542b\u7684sql\u6570\u91cf\u662f\u4e0d\u5f71\u54cd\u7684;<\/li>\n<li>insert:\u751f\u6210\u811a\u672c,\u8be5\u811a\u672c\u4f1a\u521b\u5efa\u8868,\u5e76\u628a\u76f8\u5173\u7edf\u8ba1\u4fe1\u606f\u63d2\u5165\u8868,\u4ece\u800c\u53ef\u4ee5\u5728\u6570\u636e\u5e93\u4e2d\u67e5\u770b;<\/li>\n<li>record:\u751f\u6210\u4e0d\u5305\u542b\u9012\u5f52sql\u7684\u811a\u672c\u6587\u4ef6;<\/li>\n<li>sys:\u662f\u5426\u5305\u542bsys\u7528\u6237\u6267\u884c\u7684sql,\u5927\u591a\u6570\u662f\u9012\u5f52sql;<\/li>\n<li>aggregate=no:\u5982\u679c\u8bbe\u7f6e\u4e3ayes\u7684\u8bdd,\u4f1a\u5408\u5e76\u76f8\u540c\u7684sql\u8bed\u53e5,\u4e00\u822c\u8bbe\u7f6e\u4e3ano,\u5206\u522b\u67e5\u770b\u6bcf\u6b21\u7684\u6267\u884c;<\/li>\n<li>waits:\u662f\u5426\u8bb0\u5f55\u7b49\u5f85\u4e8b\u4ef6;<\/li>\n<li>sort:\u5bf9sql\u8bed\u53e5\u6392\u5e8f\u7684\u89c4\u5219;<\/li>\n<li>\u5e38\u7528\u7684\u8bed\u6cd5:tkprof\u00a0tracefiles outputfile sys=no aggregate=no;<\/li>\n<\/ol>\n<\/li>\n<li>SQL Trace\u6587\u4ef6\u7684\u5185\u5bb9:\n<ol>\n<li>Parse, execute, and fetch counts:\u89e3\u6790,\u6267\u884c,\u83b7\u53d6\u4e09\u4e2a\u52a8\u4f5c\u7684\u6267\u884c\u6b21\u6570;<\/li>\n<li>CPU and elapsed times:\u6d88\u8017\u7684cpu\u65f6\u95f4\u548c\u603b\u65f6\u95f4,\u5355\u4f4d\u662f\u79d2;<\/li>\n<li>Physical reads and logical reads:\u7269\u7406\u8bfb\u548c\u903b\u8f91\u8bfb\u7684\u6b21\u6570;<\/li>\n<li>Number of rows processed:\u5904\u7406\u7684\u8bb0\u5f55\u6570;<\/li>\n<li>Misses on the library cache:\u6ca1\u6709\u547d\u4e2d\u7f13\u5b58\u7684\u6b21\u6570;<\/li>\n<li>Username under which each parse occurred:\u6267\u884csql\u8bed\u53e5\u7684\u7528\u6237;<\/li>\n<li>Each commit and rollback:\u6bcf\u6b21\u7684\u63d0\u4ea4\u548c\u56de\u6eda\u64cd\u4f5c(tkprof\u4e0d\u4f1a\u5904\u7406\u8fd9\u4e9b\u4fe1\u606f);<\/li>\n<li>Wait event and bind data for each SQL statement:\u9488\u5bf9\u6bcf\u6761sql\u8bed\u53e5\u7684\u7b49\u5f85\u4e8b\u4ef6\u548c\u7ed1\u5b9a\u53d8\u91cf\u4fe1\u606f;<\/li>\n<li>Row operations showing the actual execution plan of each\u00a0SQL statement:sql\u8bed\u53e5\u7684\u5b9e\u9645\u6267\u884c\u8ba1\u5212;<\/li>\n<li>Number of consistent reads, physical reads, physical writes,\u00a0and\u00a0time elapsed for each operation on a row;<\/li>\n<\/ol>\n<\/li>\n<li>Sql Trace\u4e0e\u6267\u884c\u8ba1\u5212:\n<ol>\n<li>\u5728sql trace\u671f\u95f4,\u5982\u679csql\u8bed\u53e5\u7684\u6e38\u6807\u5df2\u7ecf\u5173\u95ed,\u5219\u5728sql trace\u4e2d\u4f1a\u5305\u542b\u76f8\u5e94\u7684\u6267\u884c\u8ba1\u5212,Example 1;<\/li>\n<li>\u5728sql trace\u671f\u95f4,\u5982\u679csql\u8bed\u53e5\u7684\u6e38\u6807\u6ca1\u6709\u5173\u95ed,\u5219\u5728sql trace\u4e2d\u4e0d\u4f1a\u5305\u542b\u76f8\u5e94\u7684\u6267\u884c\u8ba1\u5212;<\/li>\n<li>\u5982\u679c\u4e4b\u524dsql\u8bed\u53e5\u5df2\u7ecf\u6267\u884c\u8fc7,\u5219\u4f1a\u5305\u542b\u6267\u884c\u8ba1\u5212;<\/li>\n<li>\u5982\u679c\u5728trace\u6587\u4ef6\u4e2d\u4e0d\u5b58\u5728\u6267\u884c\u8ba1\u5212\u7684\u76f8\u5173\u4fe1\u606f,\u53ef\u4ee5\u901a\u8fc7tkprof\u7684explain\u53c2\u6570\u6765\u767b\u9646\u6570\u636e\u5e93,\u5e76\u6267\u884cexplain plan\u547d\u4ee4,\u628a\u6267\u884c\u8ba1\u5212\u5199\u5165\u5230trace\u6587\u4ef6\u4e2d;<\/li>\n<\/ol>\n<\/li>\n<li>\u6307\u5b9aaggregate=yes,tkprof\u4f1a\u6c47\u603b\u76f8\u540c\u7684sql\u8bed\u53e5\u4fe1\u606f,\u5e76\u5728\u6587\u4ef6\u7684\u6700\u540e\u6c47\u603b\u6240\u6709\u8bed\u53e5\u7684\u76f8\u5173\u4fe1\u606f;<\/li>\n<li>\u4f7f\u7528insert\u548crecords\u53c2\u6570\u7684\u4f8b\u5b50,Example 2;<\/li>\n<li>\u6ce8\u610f\u4e00\u4e9b\u9677\u9631:\n<ol>\n<li>Avoiding the Argument Trap:\u5982\u679c\u5728\u8fd0\u884c\u65f6\u4e0d\u6ce8\u610f\u7ed1\u5b9a\u53d8\u91cf\u7684\u95ee\u9898,\u5f88\u53ef\u80fd\u4f1a\u9677\u5165\u53c2\u6570\u9677\u9631,EXPLAIN PLAN\u547d\u4ee4\u4e0d\u4f1a\u68c0\u67e5SQL\u8bed\u53e5\u4e2d\u7ed1\u5b9a\u53d8\u91cf\u7684\u7c7b\u578b,\u603b\u662f\u8ba4\u4e3a\u662fVARCHAR\u7c7b\u578b;\u6240\u4ee5,\u5982\u679c\u7ed1\u5b9a\u53d8\u91cf\u5982\u679c\u5b9e\u9645\u4e3anumber\u6216\u8005date\u7c7b\u578b\u7684\u8bdd,tkprof\u4f1a\u8fdb\u884c\u4e00\u4e2a\u9690\u5f0f\u8f6c\u6362,\u5bfc\u81f4\u751f\u6210\u9519\u8bef\u7684\u6267\u884c\u8ba1\u5212;\u4e3a\u4e86\u907f\u514d\u8fd9\u79cd\u60c5\u51b5,\u9700\u8981\u81ea\u5df1\u6267\u884c\u8f6c\u6362;<\/li>\n<li>Avoiding the Read Consistency Trap:\u5982\u679c\u8981\u67e5\u8be2\u7684\u6570\u636e\u88ab\u66f4\u65b0\u4e86,\u800c\u4e14\u6ca1\u6709\u63d0\u4ea4,\u90a3\u4e48\u5f88\u53ef\u80fd\u5c31\u4f1a\u8fdb\u5165\u4e00\u81f4\u6027\u8bfb\u7684\u9677\u9631,\u56e0\u4e3a\u5982\u679c\u6709\u5f88\u591a\u76f8\u540c\u7684\u67e5\u8be2\u7684\u64cd\u4f5c\u7684\u8bdd,\u4f1a\u4e00\u76f4\u6784\u5efaCR\u5757;<\/li>\n<li>Avoiding the Schema Trap:\u5f53\u770b\u5230\u4e00\u4e2a\u53ea\u6709\u5c11\u91cf\u6570\u636e\u8fd4\u56de\u5374\u53d1\u73b0\u626b\u63cf\u4e86\u975e\u5e38\u591a\u7684\u5757\u7684\u7edf\u8ba1\u662f,\u6709\u53ef\u80fd\u662f\u4e00\u4e0b\u539f\u56e0:\n<ol>\n<li>\u8868\u88ab\u7ecf\u5e38\u7684\u66f4\u65b0\/\u5220\u9664,\u9020\u6210\u4e86\u6c34\u4f4d\u7ebf\u5f88\u9ad8;<\/li>\n<li>\u53ef\u80fdtkprof\u5206\u6790\u7684trace\u6587\u4ef6\u8bb0\u5f55\u7684\u662f\u4e4b\u524d\u6ca1\u6709\u5728\u8868\u4e0a\u521b\u5efa\u7d22\u5f15\u60c5\u51b5,\u800c\u4e4b\u540e\u52a0\u4e0a\u4e86\u7d22\u5f15;<\/li>\n<\/ol>\n<\/li>\n<li>Avoiding the Time Trap:\u5f53\u6267\u884c\u4e00\u4e2a\u7b80\u5355\u7684sql,\u4f46\u662f\u770b\u5230elapsed time\u65f6\u95f4\u7279\u522b\u957f\u65f6,\u53ef\u80fd\u662f\u518d\u7b49\u5f85\u5176\u5b83\u7684\u9501;<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/div>\n<div><\/div>\n<div><\/div>\n<div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;\u00a0tkprof\u7684\u8bed\u6cd5\u00a0&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/div>\n<div>[oracle@singleton11g ~]$ tkprof<br \/>\nUsage: tkprof tracefile outputfile [explain= ] [table= ]<br \/>\n[print= ] [insert= ] [sys= ] [sort= ]<br \/>\ntable=schema.tablename\u00a0\u00a0 Use &#8216;schema.tablename&#8217; with &#8216;explain=&#8217; option.<br \/>\nexplain=user\/password\u00a0\u00a0\u00a0 Connect to ORACLE and issue EXPLAIN PLAN.<br \/>\nprint=integer\u00a0\u00a0\u00a0 List only the first &#8216;integer&#8217; SQL statements.<br \/>\naggregate=yes|no<br \/>\ninsert=filename\u00a0 List SQL statements and data inside INSERT statements.<br \/>\nsys=no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 TKPROF does not list SQL statements run as user SYS.<br \/>\nrecord=filename\u00a0 Record non-recursive statements found in the trace file.<br \/>\nwaits=yes|no\u00a0\u00a0\u00a0\u00a0 Record summary for any wait events found in the trace file.<br \/>\nsort=option\u00a0\u00a0\u00a0\u00a0\u00a0 Set of zero or more of the following sort options:<br \/>\nprscnt\u00a0 number of times parse was called<br \/>\nprscpu\u00a0 cpu time parsing<br \/>\nprsela\u00a0 elapsed time parsing<br \/>\nprsdsk\u00a0 number of disk reads during parse<br \/>\nprsqry\u00a0 number of buffers for consistent read during parse<br \/>\nprscu\u00a0\u00a0 number of buffers for current read during parse<br \/>\nprsmis\u00a0 number of misses in library cache during parse<br \/>\nexecnt\u00a0 number of execute was called<br \/>\nexecpu\u00a0 cpu time spent executing<br \/>\nexeela\u00a0 elapsed time executing<br \/>\nexedsk\u00a0 number of disk reads during execute<br \/>\nexeqry\u00a0 number of buffers for consistent read during execute<br \/>\nexecu\u00a0\u00a0 number of buffers for current read during execute<br \/>\nexerow\u00a0 number of rows processed during execute<br \/>\nexemis\u00a0 number of library cache misses during execute<br \/>\nfchcnt\u00a0 number of times fetch was called<br \/>\nfchcpu\u00a0 cpu time spent fetching<br \/>\nfchela\u00a0 elapsed time fetching<br \/>\nfchdsk\u00a0 number of disk reads during fetch<br \/>\nfchqry\u00a0 number of buffers for consistent read during fetch<br \/>\nfchcu\u00a0\u00a0 number of buffers for current read during fetch<br \/>\nfchrow\u00a0 number of rows fetched<br \/>\nuserid\u00a0 userid of user that parsed the cursor<\/div>\n<div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;\u00a0tkprof\u7684\u8bed\u6cd5\u00a0&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/div>\n<div><\/div>\n<div><\/div>\n<div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;\u00a0Example 1 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/div>\n<div>&#8212; 1.\u4f7f\u7528hr\u7528\u6237\u767b\u5f55,\u5e76\u67e5\u770bsql\u8bed\u53e5\u7684\u6267\u884c\u8ba1\u5212;<\/div>\n<div>sqlplus \/ as sysdba<\/div>\n<div>conn hr\/hr<\/div>\n<div>EXPLAIN PLAN FOR SELECT employee_id, email, salary FROM HR.EMPLOYEES WHERE employee_id = 100;<\/div>\n<div>SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"file:\/\/\/C:\/TEMP\/enhtmlclip\/Image(30).png\" width=\"825\" height=\"402\" \/><\/div>\n<div><\/div>\n<div>&#8212; 2.\u6253\u5f00sql trace\u529f\u80fd,\u7136\u540e\u8bbe\u7f6e\u6807\u8bc6\u7b26\u4e3aE1,\u5e76\u6267\u884csql\u8bed\u53e5;<\/div>\n<div>ALTER SESSION SET SQL_TRACE=TRUE;<\/div>\n<div>ALTER SESSION SET TRACEFILE_IDENTIFIER=&#8217;E1&#8242;;<\/div>\n<div>SELECT employee_id, email, salary FROM HR.EMPLOYEES WHERE employee_id = 100;<\/div>\n<div><\/div>\n<div>&#8212; 3.\u683c\u5f0f\u5316trace\u6587\u4ef6,\u7136\u540e\u67e5\u770b\u6267\u884c\u8ba1\u5212:tkprof *_E1.trc e1.out sys=no aggregate=no;<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"file:\/\/\/C:\/TEMP\/enhtmlclip\/Image(31).png\" width=\"825\" height=\"501\" \/><\/div>\n<div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;\u00a0Example 1 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/div>\n<div><\/div>\n<div><\/div>\n<div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;\u00a0Example 2 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/div>\n<div>&#8212; 1.\u4f7f\u7528hr\u7528\u6237\u767b\u5f55,\u6253\u5f00sql trace\u529f\u80fd,\u7136\u540e\u8bbe\u7f6e\u6807\u8bc6\u7b26\u4e3aE2,\u5e76\u6267\u884csql\u8bed\u53e5;<\/div>\n<div>sqlplus \/ as sysdba<\/div>\n<div>conn hr\/hr<\/div>\n<div>ALTER SESSION SET SQL_TRACE=TRUE;<\/div>\n<div>ALTER SESSION SET TRACEFILE_IDENTIFIER=&#8217;E2&#8242;;<\/div>\n<div>SELECT USER FROM DUAL;<\/div>\n<div>SELECT employee_id, email, salary FROM HR.EMPLOYEES WHERE employee_id = 200;<\/div>\n<div>SELECT COUNT(*) FROM HR.DEPARTMENTS;<\/div>\n<div><\/div>\n<div>&#8212; 2.\u683c\u5f0f\u5316trace\u6587\u4ef6,\u7136\u540e\u67e5\u770b\u6267\u884c\u8ba1\u5212:tkprof *_E2.trc e2.out sys=no\u00a0insert=insert.sql record=record.sql;<\/div>\n<div><\/div>\n<div>&#8212; 3.\u67e5\u770brecord.sql\u6587\u4ef6;<\/div>\n<div>[oracle@singleton11g trace]$ less record.sql<br \/>\nSELECT USER FROM DUAL ;<br \/>\nSELECT employee_id, email, salary FROM HR.EMPLOYEES WHERE employee_id = 200 ;<br \/>\nSELECT COUNT(*) FROM HR.DEPARTMENTS ;<\/div>\n<div><\/div>\n<div>&#8212; 4.\u67e5\u770binsert.sql\u6587\u4ef6;<\/div>\n<div>REM\u00a0 Edit and\/or remove the following\u00a0 CREATE TABLE<br \/>\nREM\u00a0 statement as your needs dictate.<br \/>\nCREATE TABLE\u00a0 tkprof_table<br \/>\n(<br \/>\ndate_of_insert\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 DATE<br \/>\n,cursor_num\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,depth\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,user_id\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,parse_cnt\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,parse_cpu\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,parse_elap\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,parse_disk\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,parse_query\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,parse_current\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,parse_miss\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,exe_count\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,exe_cpu\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,exe_elap\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,exe_disk\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,exe_query\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,exe_current\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,exe_miss\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,exe_rows\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,fetch_count\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,fetch_cpu\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,fetch_elap\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,fetch_disk\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,fetch_query\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,fetch_current\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,fetch_rows\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,ticks\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER<br \/>\n,sql_statement\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 LONG<br \/>\n);<br \/>\nset sqlterminator off<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 2, 0, 84, 1, 2000, 2136, 0, 0, 0, 1<br \/>\n, 1, 0, 46, 0, 0, 0, 0, 0<br \/>\n, 2, 0, 26, 0, 0, 0, 1, 12753692<br \/>\n, &#8216;SELECT USER FROM DUAL<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0<br \/>\n, 10, 0, 356, 0, 0, 0, 0, 0<br \/>\n, 10, 0, 448, 0, 40, 0, 10, 50095736<br \/>\n, &#8216;select obj#,type#,ctime,mtime,stime, status, dataobj#, flags, oid$, spare1, spa<br \/>\nre2 from obj$ where owner#=:1 and name=:2 and namespace=:3 and remoteowner is null<br \/>\nand linkname is null and subname is null<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0<br \/>\n, 2, 0, 80, 0, 0, 0, 0, 0<br \/>\n, 2, 0, 267, 0, 8, 0, 2, 1674<br \/>\n, &#8216;select t.ts#,t.file#,t.block#,nvl(t.bobj#,0),nvl(t.tab#,0),t.intcols,nvl(t.cluc<br \/>\nols,0),t.audit$,t.flags,t.pctfree$,t.pctused$,t.initrans,t.maxtrans,t.rowcnt,t.blk<br \/>\ncnt,t.empcnt,t.avgspc,t.chncnt,t.avgrln,t.analyzetime,t.samplesize,t.cols,t.proper<br \/>\nty,nvl(t.degree,1),nvl(t.instances,1),t.avgspc_flb,t.flbcnt,t.kernelcols,nvl(t.tri<br \/>\ngflag, 0),nvl(t.spare1,0),nvl(t.spare2,0),t.spare4,t.spare6,ts.cachedblk,ts.cacheh<br \/>\nit,ts.logicalread from tab$ t, tab_stats$ ts where t.obj#= :1 and t.obj# = ts.obj#<br \/>\n(+)<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0<br \/>\n, 2, 0, 118, 0, 0, 0, 0, 0<br \/>\n, 10, 2000, 2037, 0, 16, 0, 8, 3642<br \/>\n, &#8216;select i.obj#,i.ts#,i.file#,i.block#,i.intcols,i.type#,i.flags,i.property,i.pct<br \/>\nfree$,i.initrans,i.maxtrans,i.blevel,i.leafcnt,i.distkey,i.lblkkey,i.dblkkey,i.clu<br \/>\nfac,i.cols,i.analyzetime,i.samplesize,i.dataobj#,nvl(i.degree,1),nvl(i.instances,1<br \/>\n),i.rowcnt,mod(i.pctthres$,256),i.indmethod#,i.trunccnt,nvl(c.unicols,0),nvl(c.def<br \/>\nerrable#+c.valid#,0),nvl(i.spare1,i.intcols),i.spare4,i.spare2,i.spare6,decode(i.p<br \/>\nctthres$,null,null,mod(trunc(i.pctthres$\/256),256)),ist.cachedblk,ist.cachehit,ist<br \/>\n.logicalread from ind$ i, ind_stats$ ist, (select enabled, min(cols) unicols,min(t<br \/>\no_number(bitand(defer,1))) deferrable#,min(to_number(bitand(defer,4))) valid# from<br \/>\ncdef$ where obj#=:1 and enabled &gt; 1 group by enabled) c where i.obj#=c.enabled(+)<br \/>\nand i.obj# = ist.obj#(+) and i.bo#=:1 order by i.obj#<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0<br \/>\n, 8, 1000, 301, 0, 0, 0, 0, 0<br \/>\n, 17, 0, 410, 0, 34, 0, 9, 2435<br \/>\n, &#8216;select pos#,intcol#,col#,spare1,bo#,spare2,spare3 from icol$ where obj#=:1<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0<br \/>\n, 2, 0, 200, 0, 0, 0, 0, 0<br \/>\n, 17, 1000, 402, 0, 6, 0, 15, 1796<br \/>\n, &#8216;select name,intcol#,segcol#,type#,length,nvl(precision#,0),decode(type#,2,nvl(s<br \/>\ncale,-127\/*MAXSB1MINAL*\/),178,scale,179,scale,180,scale,181,scale,182,scale,183,sc<br \/>\nale,231,scale,0),null$,fixedstorage,nvl(deflength,0),default$,rowid,col#,property,<br \/>\nnvl(charsetid,0),nvl(charsetform,0),spare1,spare2,nvl(spare3,0) from col$ where o<br \/>\nbj#=:1 order by intcol#<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0<br \/>\n, 10, 999, 293, 0, 0, 0, 0, 0<br \/>\n, 10, 0, 459, 0, 30, 0, 10, 3519<br \/>\n, &#8216;select type#,blocks,extents,minexts,maxexts,extsize,extpct,user#,iniexts,NVL(li<br \/>\nsts,65535),NVL(groups,65535),cachehint,hwmincr, NVL(spare1,0),NVL(scanhint,0),NVL(<br \/>\nbitmapranges,0) from seg$ where ts#=:1 and file#=:2 and block#=:3<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0<br \/>\n, 8, 0, 199, 0, 0, 0, 0, 0<br \/>\n, 8, 0, 330, 0, 24, 0, 8, 2328<br \/>\n, &#8216;select o.owner#,o.name,o.namespace,o.remoteowner,o.linkname,o.subname from obj$<br \/>\no where o.obj#=:1<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0<br \/>\n, 2, 1000, 149, 0, 0, 0, 0, 0<br \/>\n, 2, 0, 119, 0, 4, 0, 0, 1135<br \/>\n, &#8216;select col#, grantee#, privilege#,max(mod(nvl(option$,0),2)) from objauth$ wher<br \/>\ne obj#=:1 and col# is not null group by privilege#, col#, grantee# order by col#,<br \/>\ngrantee#<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0<br \/>\n, 2, 0, 65, 0, 0, 0, 0, 0<br \/>\n, 5, 0, 179, 0, 6, 0, 3, 762<br \/>\n, &#8216;select grantee#,privilege#,nvl(col#,0),max(mod(nvl(option$,0),2))from objauth$<br \/>\nwhere obj#=:1 group by grantee#,privilege#,nvl(col#,0) order by grantee#<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0<br \/>\n, 2, 0, 51, 0, 0, 0, 0, 0<br \/>\n, 9, 1000, 269, 0, 18, 0, 7, 1321<br \/>\n, &#8216;select con#,obj#,rcon#,enabled,nvl(defer,0),spare2,spare3 from cdef$ where robj<br \/>\n#=:1<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0<br \/>\n, 2, 0, 80, 0, 0, 0, 0, 0<br \/>\n, 16, 0, 290, 0, 32, 0, 14, 2173<br \/>\n, &#8216;select con#,type#,condlength,intcols,robj#,rcon#,match#,refact,nvl(enabled,0),r<br \/>\nowid,cols,nvl(defer,0),mtime,nvl(spare1,0),spare2,spare3 from cdef$ where obj#=:1<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 14, 1, 0, 0, 0, 0, 0, 0, 0, 0<br \/>\n, 14, 0, 336, 0, 0, 0, 0, 0<br \/>\n, 28, 0, 499, 0, 56, 0, 14, 4305<br \/>\n, &#8216;select intcol#,nvl(pos#,0),col#,nvl(spare1,0) from ccol$ where con#=:1<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 15, 1, 0, 1, 1999, 1376, 0, 0, 0, 1<br \/>\n, 1, 2000, 2335, 0, 0, 0, 1, 0<br \/>\n, 1, 0, 26, 0, 2, 0, 1, 4365<br \/>\n, &#8216;select condition from cdef$ where rowid=:1<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0<br \/>\n, 3, 0, 71, 0, 0, 0, 0, 0<br \/>\n, 3, 0, 102, 0, 9, 0, 3, 905<br \/>\n, &#8216;select \/*+ rule *\/ bucket_cnt, row_cnt, cache_cnt, null_cnt, timestamp#, sample<br \/>\n_size, minimum, maximum, distcnt, lowval, hival, density, col#, spare1, spare2, av<br \/>\ngcln from hist_head$ where obj#=:1 and intcol#=:2<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 2, 0, 84, 1, 17997, 16136, 0, 0, 0, 1<br \/>\n, 1, 0, 23, 0, 0, 0, 0, 0<br \/>\n, 2, 0, 78, 0, 2, 0, 1, 1010<br \/>\n, &#8216;SELECT employee_id, email, salary FROM HR.EMPLOYEES WHERE employee_id = 200<br \/>\n&#8216;)<br \/>\n\/<br \/>\nINSERT INTO tkprof_table VALUES<br \/>\n(<br \/>\nSYSDATE, 15, 0, 84, 1, 8999, 9177, 0, 0, 0, 1<br \/>\n, 1, 1000, 113, 0, 0, 0, 0, 0<br \/>\n, 2, 0, 254, 0, 1, 0, 1, 2161<br \/>\n, &#8216;SELECT COUNT(*) FROM HR.DEPARTMENTS<br \/>\n&#8216;)<br \/>\n\/<\/div>\n<div>COMMIT;<br \/>\nset sqlterminator on<\/div>\n<div><\/div>\n<div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;\u00a0Example 2 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>tkprof\u5de5\u5177\u7684\u4f7f\u7528 tkprof\u5de5\u5177\u4f4d\u4e8e$ORACLE_HOME\/bin\u76ee\u5f55\u4e0b(\u67e5\u770b\u547d\u4ee4which trc [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[34,2],"class_list":["post-284","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-oracle","tag-oracle_basics"],"_links":{"self":[{"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/posts\/284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=284"}],"version-history":[{"count":0,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/posts\/284\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=284"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}