生机勃勃、什么是实行布置
实践布署:一条查询语句在ORACLE中的奉行进度或访问路线的陈述。
二、如何查看实践布置 1:
在PL/SQL下按F5翻看推行布置。第三方工具toad等。
很四个人以为PL/SQL的实践布署只得看看基数、优化器、花费等中央音讯,其实那个能够在PL/SQL工具里面安装的。能够看见不计其数任何新闻,如下所示
2: 在SQL*PLUS(PL/SQL的一声令下窗口和SQL窗口均可卡塔尔下推行上面步骤 代码如下:
SQLEXPLAIN PLAN FOSportage SELECT * FROM SCOTT.EMP; –要深入分析的SQL脚本
SQLSELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

翻开Oracle实施计划的两种艺术

3: 在SQL*PLUS下(某些命令在PL/SQL下无效卡塔尔国施行如下命令: 代码如下:
SQLSET TIMING ON –调节呈现推行时间总结数据 SQLSET AUTOTRACE ON EXPLAIN
–那样设置包罗试行布署、脚本数据输出,未有总括信息SQL施行必要查阅推行陈设的SQL语句 SQLSET AUTOTRACE OFF
–不生成AUTOTRACE报告,那是缺省情势 SQL SET AUTOTRACE ON
–这样设置包蕴施行布置、总括音信、甚至脚本数据输出
SQL实行供给查阅奉行安排的SQL语句 SQLSET AUTOTRACE OFF SQL SET AUTOTRACE
TRA老总NLY –那样设置会有推行安排、总结音讯,不会有脚本数据输出
SQL履行需求查阅实践安顿的SQL语句 SQLSET AUTOTRACE TRA董事长NLY STAT
–那样设置只含有有总结新闻 SQL推行须要查阅实行安排的SQL语句

一、通过PL/SQL Dev工具

SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]]
[STAT[ISTICS]]

    1、直接File->New->Explain Plan
Window,在窗口中实行sql能够查看安顿结果。在那之中,Cost表示cpu的消耗,单位为n%,Cardinality表示施行的行数,等价Rows。

参谋文书档案:SQLPlus User’s Guide and Reference Release 11.1

    2、先执行 EXPLAIN PLAN FOR   select * from tableA where
paraA=1,再 select * from
table(DBMS_XPLAN.DISPLAY卡塔尔(英语:State of Qatar)便足以见到oracle的实践布置了,见到的结果和1中的相似,所以利用工具的时候推荐应用1办法。

注意:PL/SQL Developer 工具并不完全援救具备的SQL*Plus命令,像SET
AUTOTRACE ON 就像此,在PL/SQL Developer工具下进行此命令会报错

注意:PL/SQL Dev工具的Command window中不帮助set autotrance
on的命令。还应该有使用工具方法查看铺排看来的音讯不全,有个别时候大家供给sqlplus的支撑。

SQL SET AUTOTRACE ON;

 

Cannot SET AUTOTRACE

二、通过sqlplus

4:SQL_TRACE能够视作参数在大局启用,也足以通过命令格局在切实SESSION启用

1.最轻巧易行的法子

4.1 在大局启用,在参数文件,探讨SQL实践时,开掘后台

Sql> set autotrace on

错误等。

Sql> select * from dual;

代码如下: SQL ALTELacrosse SESSION SET SQL_TRACE=TRUE; SQL SELECT * FROM
SCOTT.EMP; SQL ALTER SESSION SET SQL_TRACE =FALSE;
那么此时怎么着查六柱预测关音信?不管您在SQL*PLUS抑或PL/SQL
DEVELOPEWrangler工具里面实施上面脚本过后都看不到什么音信,你能够透过上边脚本查询到trace日志音讯代码如下: SELECT T.VALUE || ‘/’ || LOWEQashqai(RT牧马人IM(I.INSTANCE, CHTiguan(0卡塔尔(英语:State of Qatar)卡塔尔国卡塔尔(قطر‎ ||
‘_ora_’ || P.SPID || ‘.trc’ TRACE_FILE_NAME FROM ( SELECT P.SPID
FROM V$MYSTAT M, V$SESSION S, V$PROCESS P WHERE M.STATISTIC# =1 AND
S.SID = M.SID AND P.ADDR = S.PADDR ) P, ( SELECT T.INSTANCE FROM
V$THREAD T, V$PARAMETER V WHERE V.NAME =’thread’ AND (V.VALUE = 0 OR
T.THREAD# = TO_NUMBER(V.VALUE)) ) I, (SELECT VALUE FROM V$PARAMETER
WHERE NAME=’user_dump_dest’) T

  执行完语句后,会彰显explain plan 与 总括音讯。

TKPROF的协理消息如下

  那些讲话的优点正是它的弱项,那样在用该方法查看实行时间较长的sql语句时,要求等待该语句实施成功后,才回去实践布署,使优化的周期大大抓好。若是不想进行语句而只是想获取实行陈设能够运用:

代码如下: TKPROF 选项 选项 表明 TRACEFILE 追踪输出文件的称号 OUTPUTFILE
已设置格式的公文的称呼 SORT=option 语句的排序依次 PSportageINT=n 打字与印刷前 n
个语句 EXPLAIN=user/password 以钦定的客户名运维 EXPLAIN PLAN
INSERT=filename 生成 INSERT 语句 SYS=NO 忽视作为客商 sys 运转的递归 SQL
语句 AGGREGATE=[Y|N] 假设钦定 AGGREGATE = NO TKPROF 不凑合影通 SQL
文本的几个顾客 RECOOdysseyD=filename 记录在跟踪文件中窥见的口舌
TABLE=schema.tablename 将奉行计划放入钦点的表实际不是缺省的PLAN_TABLE
能够在操作系统中键入 tkprof 以得到全体可用选项和输出的列表 注 排序选项有
排序 选项表明 prscnt execnt fchcnt 调用剖判实施提取的次数 prscpu execpu
fchcpu 分析试行提取所攻陷的 CPU 时间 prsela exela fchela
剖析施行提取所占用的小运 prsdsk exedsk fchdsk
解析实践提取时期的磁盘读取次数 prsqry exeqry fchqry
深入分析实施提取时期用于不断读取的缓冲区数 prscu execu fchcu
深入分析实行提取时期用于当前读取的缓冲区数 prsmis exemis
分析实践时期库高速缓存未命中的次数 exerow fchrow 解析推行时期管理的行数
userid 剖判游标的顾客的客商 ID TKPROF 总括数据 Count: 履行调用数 CPU:
CPU 的应用秒数 Elapsed: 总共用去的日子 Disk: 物理读取次数 Query:
持续读取的逻辑读取数 Current: 当前格局下的逻辑读取数 Rows: 已管理行数
TKPROF 总结消息 总括 含义 Count
分析或奉行语句的次数甚至为语句发出的领到调用数 CPU
各类阶段的管理时间以秒为单位假设在分享池中找到该语句对于剖判阶段为 0
Elapsed 占用时间以秒为单位平日不是十一分平价因为任何进程影响占用时间 Disk
从数据库文件读取的情理数据块如若该数量被缓冲则该计算可能十分的低 Query
为持续读取检索的逻辑缓冲区常常用于 SELECT 语句 Current
在那个时候此刻情势下寻觅的逻辑缓冲区平时用于 DML 语句 Rows
外部语句所拍卖的行对于 SELECT 语句在领取阶段展现它对于 DML
语句在推行等第呈现它 Query 和Current 的总额为所访谈的逻辑缓冲区的总和
实践上面施命发号:tkprof
D:/ORACLE/PRODUCT/10.2.0/DB_1/RDBMS/TRACE/wgods_ora_3940.trc
h:/out.txtoutputfile explain=etl/etl
实行上边命令后,能够查看生成的文书文件 代码如下: TKPROF: Release
10.2.0.1.0 – Production on 周四 7月 23 16:56:41 二〇一三 Copyright (c)1985, 二〇〇五, Oracle. All rights reserved. Trace file:
D:/ORACLE/PRODUCT/10.2.0/DB_1/RDBMS/TRACE/wgods_ora_3940.trc Sort
options: default
********************************************************************************
count = number of times OCI procedure was executed cpu = cpu time in
seconds executing elapsed = elapsed time in seconds executing disk =
number of physical reads of buffers from disk query = number of buffers
gotten for consistent read current = number of buffers gotten in current
mode (usually for update) rows = number of rows processed by the fetch
or execute call
********************************************************************************
ALTER SESSION SET SQL_TRACE = TRUE call count cpu elapsed disk query
current rows ——- —— ——– ———- ———- ———-
———- ———- Parse 0 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0
0 0 Fetch 0 0.00 0.00 0 0 0 0 ——- —— ——– ———-
———- ———- ———- ———- total 1 0.00 0.00 0 0 0 0
Misses in library cache during parse: 0 Misses in library cache during
execute: 1 Optimizer mode: CHOOSE Parsing user id: 89 (ETL)
********************************************************************************
begin :id := sys.dbms_transaction.local_transaction_id; end; call
count cpu elapsed disk query current rows ——- —— ——–
———- ———- ———- ———- ———- Parse 2 0.00 0.00
0 0 0 0 Execute 2 0.00 0.00 0 0 0 2 Fetch 0 0.00 0.00 0 0 0 0 ——-

Sql> set autotrace traceonly


与上述同类,就只会列出试行布署,而不会真的的实行语句,大大裁减了优化时间。即使也列出了总括新闻,可是因为尚未试行语句,所以该总括新闻并未用项,假设实行该语句时蒙受错误,消除方式为:

total 4 0.00 0.00 0 0 0 2 Misses in library cache during parse: 0
Optimizer mode: CHOOSE Parsing user id: 89 (ETL)
********************************************************************************
SELECT * FROM SCOTT.EMP call count cpu elapsed disk query current rows

(1)在要剖析的客户下:


Sqlplus > @ ?

———- Parse 2 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 1
0.00 0.00 0 7 0 14 ——- —— ——– ———- ———-
———- ———- ———- total 4 0.00 0.00 0 7 0 14 Misses in
library cache during parse: 1 Optimizer mode: CHOOSE Parsing user id: 89
(ETL) Rows Execution Plan ——-
————————————————— SELECT STATEMENT
MODE: CHOOSE TABLE ACCESS MODE: ANALYZED (FULL) OF ‘EMP’ (TABLE)
********************************************************************************
ALTER SESSION SET SQL_TRACE = FALSE call count cpu elapsed disk query
current rows ——- —— ——– ———- ———- ———-
———- ———- Parse 1 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0
0 0 Fetch 0 0.00 0.00 0 0 0 0 ——- —— ——– ———-
———- ———- ———- ———- total 2 0.00 0.00 0 0 0 0
Misses in library cache during parse: 1 Optimizer mode: CHOOSE Parsing
user id: 89 (ETL)
********************************************************************************
OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS call count cpu elapsed
disk query current rows ——- —— ——– ———- ———-
———- ———- ———- Parse 5 0.00 0.00 0 0 0 0 Execute 5
0.00 0.00 0 0 0 2 Fetch 1 0.00 0.00 0 7 0 14 ——- —— ——–
———- ———- ———- ———- ———- total 11 0.00
0.00 0 7 0 16 Misses in library cache during parse: 2 Misses in library
cache during execute: 1 OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS call
count cpu elapsed disk query current rows ——- —— ——–
———- ———- ———- ———- ———- Parse 0 0.00 0.00
0 0 0 0 Execute 0 0.00 0.00 0 0 0 0 Fetch 0 0.00 0.00 0 0 0 0 ——-

dbmsadminutlxplan.sql


(2卡塔尔 用sys用户登入

total 0 0.00 0.00 0 0 0 0 Misses in library cache during parse: 0 user
SQL statements in session. internal SQL statements in session. SQL
statements in session. statement EXPLAINed in this session.
********************************************************************************
Trace file:
D:/ORACLE/PRODUCT/10.2.0/DB_1/RDBMS/TRACE/wgods_ora_3940.trc Trace
file compatibility: 10.01.00 Sort options: default session in tracefile.
user SQL statements in trace file. internal SQL statements in trace
file. SQL statements in trace file. unique SQL statements in trace file.
SQL statements EXPLAINed using schema: ETL.prof$plan_table Default
table was used. Table was created. Table was dropped. lines in trace
file. elapsed seconds in trace file.
4.3追踪此外客商的经过,在数不胜数时候大家要求追踪此外客户的历程,而不是眼下客商,能够通过ORACLE提供的系统包
DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION来形成。 比方: 代码如下:
SELECT SID, SEMuranoIAL#, USERNAME FROM V$SESSION WHERE USERNAME = ‘ETL’
EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(61,76,TRUE); EXEC
DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(61,76,FALSE卡塔尔(英语:State of Qatar); 5 利用10046事件
代码如下: ALTE锐界 SESSION SET TRACEFILE_IDENTIFIER = 10046; ALTER
SESSION SET EVENTS=’10046 trace name context forever, level 8′; SELECT
* FROM SCOTT.EMP; ALTE昂Cora SESSION SET EVENTS =’10046 trace name context
off’; 然后您能够用脚本查看追踪文件的岗位 SELECT T.VALUE || ‘/’ ||
LOWEPRADO(RT奥迪Q5IM(I.INSTANCE, CH揽胜极光(0卡塔尔(قطر‎卡塔尔(英语:State of Qatar)卡塔尔国 || ‘_ora_’ || P.SPID || ‘.trc’
TRACE_FILE_NAME FROM ( SELECT P.SPID FROM V$MYSTAT M, V$SESSION S,
V$PROCESS P WHERE M.STATISTIC# =1 AND S.SID = M.SID AND P.ADDR =
S.PADDR ) P, ( SELECT T.INSTANCE FROM V$THREAD T, V$PARAMETER V WHERE
V.NAME =’thread’ AND (V.VALUE = 0 OR T.THREAD# = TO_NUMBER(V.VALUE)) )
I, (SELECT VALUE FROM V$PARAMETER WHERE NAME=’user_dump_dest’卡塔尔(英语:State of Qatar) T
查询结果为wgods_ora_28279.trc文件,
可是去相应目录却还没找到相应的追踪文件,而是如下trace文件:wgods_ora_28279_10046.trc
6 利用10053轩然大波 有一点点相仿10046,在这略过、 7 系统视图
通过下边一些系统视图,你能够看出局地碎片的实践布署的连锁消息,风乐趣的话能够多去切磋一下。
代码如下: SELECT * FROM V$SQL_PLAN SELECT * FROM
V$RSRC_PLAN_CPU_MTH SELECT * FROM V$SQL_PLAN_STATISTICS SELECT *
FROM V$SQL_PLAN_STATISTICS_ALL SELECT * FROM V$SQLAREA_PLAN_HASH
SELECT * FROM V$RSRC_PLAN_HISTO昂CoraY 三、看懂实践安插 1.实施各种实践各样的准绳是:由上至下,从右向左
由上至下:在实施布署中日常满含多少个节点,相符等级(或并列卡塔尔(英语:State of Qatar)的节点,靠上的先行推行,靠下的后试行从右向左:在有些节点下还存在多少个子节点,先从最靠右的子节点最初试行。
当然,你在PL/SQL工具中也足以透过它提供的效率来查看实践种种。如下图所示:

Sqlplus > @ ?sqlplusadminplustrce.sql

2.实行布置中字段解释

Sqlplus > grant plustrace to user_name;

SQL 名词解释: recursive calls 递归调用 db block gets 从buffer
cache中读取的block的多少当前恳请的块数目,当前形式块意思就是在操作中无独有偶提取的块数目,而不是在生机勃勃致性读的情况下而产生的健康情状下,一个查询提取的块是在查询查询开首的这一个时刻点上设有的数据库,当前块是在此个时候存在数据块,实际不是其有的时候间点此前依旧今后的的多少块数目。
consistent gets 从buffer
cache中读取的undo数据的block的多寡多少要求总的数量在回滚段Buffer中的数据后生可畏致性读所需求的数据块,,这里的定义是在你处理你那个操作的时侯要求在大器晚成致性读状态上拍卖四个块,这几个块产生的尤为重要缘由是因为您在询问进度中,由于别的对话对数码
块实行操作,而对所要查询的块有了改造,可是出于大家的查询是在这里些修改从前调用的,所要供给对回滚
段中的数据块的前印象开展查询,以保险数据的生龙活虎致性。那样就生出了一致性读。
physical reads 物理读 便是从磁盘上读取数据块的数额。其爆发的第风度翩翩原因是:
1:在数据库高速缓存中不设有这么些块。 2:全表扫描 3:磁盘排序 redo size
DML生成的redo的高低 sorts (memory卡塔尔(英语:State of Qatar) 在内部存款和储蓄器实行的排序量 sorts (disk卡塔尔(قطر‎在磁盘奉行的排序量 2091 bytes sent via SQL*Net to client
从SQL*Net向客商端发送了2091字节的数据 416 bytes received via SQL*Net
from client 客商端向SQL*Net发送了416字节的数额。 参谋文书档案:SQLPlus
User’s Guide and Reference Release 11.1 db block gets 、 consistent gets
、 physical
reads那三者的关联足以回顾为:逻辑读指的是ORACLE从内部存储器读到的数据块块数量,日常的话是:
consistent gets + db block gets.
当在内存中找不到所需求的数据块的话,就须要从磁盘中得到,于是就发出了物理读。
3.具体内容查看 1 Plan hash Value
那风姿罗曼蒂克行是这一条语句的的hash值,大家精晓ORACLE对每一条ORACLE语句爆发的实行安排泄在SHARE
POOL里面,第一回要透过硬深入分析,发生hash值。后一次再实践时比较hash值,假如肖似就不会奉行硬解析。
2 COST
COST未有单位,是一个相对值,是SQL以CBO方式解析执行安插时,供ORACLE来评估CBO开支,选取施行安插用的。未有掌握的意义,不过在自己检查自纠是就可怜有效。
公式:COST=/ Sreadtim 3 对上边推行布署列字段的解释: Id:
推行种类,但不是推行的前后相继顺序。推行的前后相继根据Operation缩进来剖断Operation:当前操作的源委。 Name:操作对象
Rows:也正是10g版本早先的Cardinality(基数卡塔尔,Oracle预计当前操作的回来结果集行数。
Bytes:表示实施该步骤后回来的字节数。
Cost:表示实行到该手续的一个施行开销,用于表明SQL实施的代价。
Time:Oracle 测度当前操作的年月。 4.谓词表达: Predicate Information
(identified by operation id卡塔尔(英语:State of Qatar):
————————————————— 2 – filter(“B”.”MG翼虎”
IS NOT NULL卡塔尔(قطر‎ 4 – access(“A”.”EMPNO” = “B”.”MGSportage”卡塔尔(英语:State of Qatar) Access:
表示这几个谓词条件的值将会潜移暗化多少的访谈路劲。
Filter:表示谓词条件的值不会影响多少的探望路劲,只起过滤的机能。
在谓词中第生机勃勃注意access,要构思谓词的标准化,使用的寻访路线是或不是科学。 5、
动态拆解分析
若是在举行安插中犹如下提示: Note ———— -dynamic
sampling used for the statement
那提醒顾客CBO当前利用的工夫,须求客户在拆解解析安排时思忖到这一个因素。
当出现这几个提醒,表明当前表使用了动态采集样本。大家就此测度这些表只怕未有做过解析。
这里会现出二种情况:
假如表未有做过深入分析,那么CBO可以因此动态采集样板的点子来赢得深入分析数据,也能够只怕正确的实施布置。
纵然表剖判过,可是解析新闻过旧,那时CBO就不会在选取动态采集样本,而是采纳这几个旧的解析数据,从而可能诱致错误的执行安插。
四、表访谈形式 1.Full Table Scan (FTS卡塔尔国 全表扫描 2.Index Lookup
索引围观 There are 5 methods of index lookup: index unique scan
–索引独一扫描
通过独一索引查找二个数值常常回来单个ROWID,假如存在UNIQUE或PTucsonIMA大切诺基Y
KEY节制,ORACLE 常常达成唯生机勃勃性扫描 Method for looking up a single key
value via a unique index. always returns a single value, You must supply
AT LEAST the leading column of the index to access data via the index.
index range scan –索引局地扫描 Index range scan is a method for
accessing a range values of a particular column. AT LEAST the leading
column of the index must be supplied to access data via the index. Can
be used for range operations (e.g. = = between卡塔尔(英语:State of Qatar) .
使用二个索引存取多行数据,在独一索引上使用索引范围扫描的独立气象是在谓词(WHERE
节制条件卡塔尔中动用了节制操作符号(如, , =, =,BWTEEN卡塔尔(英语:State of Qatar) index full scan
–索引全局扫描 Full index scans are only available in the CBO as
otherwise we are unable to determine whether a full scan would be a good
idea or not. We choose an index Full Scan when we have statistics that
indicate that it is going to be more efficient than a Full table scan
and a sort. For example we may do a Full index scan when we do an
unbounded scan of an index and want the data to be ordered in the index
order. index fast full scan –索引飞快全局扫描,不带order by情形下常发出
Scans all the block in the index, Rows are not returned in sorted order,
Introduced in 7.3 and requires V733_PLANS_ENABLED=TRUE and CBO, may be
hinted using INDEX_FFS hint, uses multiblock i/o, can be executed in
parallel, can be used to access second column of concatenated indexes.
This is because we are selecting all of the index. index skip scan
–索引跳跃扫描,where条件列是非索引的前提情形下常发出 Index skip scan
finds rows even if the column is not the leading column of a
concatenated index. It skips the first column(s卡塔尔(英语:State of Qatar) during the search.
3.Rowid 物理ID扫描 This is the quickest access method available.Oracle
retrieves the specified block and extracts the rows it is interested in.
–Rowid扫描是最快的走访数据情势

– – user_name是地点所说的拆解剖判顾客

 

 2.用explain plan命令

(1) sqlplus > explain plan for select * from testdb.myuser

(2) sqlplus > select * from table(dbms_xplan.display);

  下边那2种办法只可以为在本会话中正在运作的言辞发生实施安排,即我们必要已经清楚了哪条语句运维的频率非常糟糕,我们是有指标只对那条SQL语句去优化。其实,在非常多动静下,我们只会听二个顾客抱怨说未来系统运营相当的慢,而大家不通晓是哪些SQL引起的。当时有为数不菲现有的言辞能够搜索费用财富比超级多的说话,如:

SELECT ADDRESS, substr(SQL_TEXT,1,20) Text, buffer_gets,
executions,

buffer_gets/executions AVG  FROM  v$sqlarea

WHERE executions>0 AND buffer_gets > 100000   ORDER BY 5;

ADDRESS      TEXT                     BUFFER_GETS    EXECUTIONS        AVG



66D83D64   select
t.name,  (sel               421531        60104             7.01336017

66D9E8AC   select t.schema,
t.n               1141739        2732             417.913250

66B82BCC   select
s.synonym_nam             441261        6                73543.5

  从而对寻觅的讲话举办更为优化。当然大家还足认为三个正在运行的对话中运营的有所SQL语句生成实施陈设,那亟需对该会话实行跟踪,产生trace文件,然后对该文件用tkprof程序格式化一下,这种拿到执行布置的办法很有用,因为它包含别的额外音讯,如SQL语句实施的每种阶段(如Parse、Execute、Fetch卡塔尔分别花销的顺序能源气象(如CPU、DISK、elapsed等卡塔尔(قطر‎。

 

3、启用SQL_TRACE追踪全体后台进度活动:

大局参数设置: .OracleHome/admin/SID/pfile中内定: SQL_TRACE = true
(10g)

    当前session中设置:

    SQL> alter session set SQL_TRACE=true;

    SQL> select * from dual;

    SQL> alter session set SQL_TRACE=false;

    对别的客商实行追踪设置:

    SQL> select sid,serial#,username from v$session where
username=’XXX’;

       SID    SERIAL# USERNAME

    —— ———- ——————

       127      31923 A

       128      54521 B

    开启追踪:SQL> exec
dbms_system.set_SQL_TRACE_in_session(127,31923,true);

    关闭追踪:SQL> exec
dbms_system.set_SQL_TRACE_in_session(127,31923,false);

    然后选用oracle自带的tkprof命令行工具格式化追踪文件。

 

4、使用10046风云开展询问:

    10046事变品级:

    Lv1  – 启用标准的SQL_TRACE功能,等价于SQL_TRACE

    Lv4  – Level 1 + 绑定值(bind values)

    Lv8  – Level 1 + 等待事件跟踪

    Lv12 – Level 1 + Level 4 + Level 8

    全局设定:

    OracleHome/admin/SID/pfile中指定: EVENT=”10046 trace name context
forever,level 12″

    当前session设定:

    开启:SQL> alter session set events ‘10046 trace name context
forever, level 8’;

    关闭:SQL> alter session set events ‘10046 trace name context
off’;

    对别的客户实行设置:

    SQL> select sid,serial#,username from v$session where
username=’XXX’;

       SID    SERIAL# USERNAME

    —— ———- ——————

       127      31923 A

 

    SQL> exec dbms_system.set_ev(127,31923,10046,8,’A’);

 

5、采纳tkprof格式化追踪文件: (根据上面SQL语句获得的公文都不设有该目录下,忧愁呀,懵懂啊…卡塔尔(قطر‎

 

常常,三遍跟踪能够分成以下几步:

1、界定须要追踪的指标节制,并动用合适的下令启用所需追踪。

2、经过黄金时代段时间后,结束追踪。此时理应生出了三个追踪结果文件。

3、找到追踪文件,并对其开展格式化,然后阅读或分析。

 

–使用一下SQL找到当前session的追踪文件:

SELECT d.value|| ‘/’ ||lower(rtrim(i.instance,
chr( 0 )))|| ‘_ora_’ ||p.spid|| ‘.trc’trace_file_name
from
select p.spid from v$mystat m,v$session s, v$process p
where m.statistic# = 1 and s.sid = m.sid and p.addr =
s.paddr) p,
select t.instance from v$thread t,v$parameter v
where v.name = ‘thread’ and (v.value = 0 or t.thread#
= to_number(v.value))) i,
select value from v$parameter where name = ‘user_dump_dest’ )
d;
— 此外客商的 session
    SELECT d.value|| ‘/’ ||lower(rtrim(i.instance,
chr( 0 )))|| ‘_ora_’ ||p.spid|| ‘.trc’trace_file_name
    from
    ( select p.spid from v$session s, v$process p
          where s.sid= ’27’ and s. SERIAL#= ’30’ and p.addr
= s.paddr) p,
    ( select t.instance from v$thread t,v$parameter v
          where v.name = ‘thread’ and (v.value = 0 or t.thread#
= to_number(v.value))) i,
    ( select value from v$parameter where name = ‘user_dump_dest’ )
d;

 

–查找后采用tkprof命令,将TRACE文件格式为到D盘的explain_format.txt文件中

SQL> $tkprof
d:/oracle/admin/FZLGFM/udump/fzlgfm_ora_3468.trc  d:/explain_format.txt

 

文件内容差不离如下(看不太懂….懵懂啊…..天啊….神啊…..过什么时候就懂了/////////////卡塔尔(قطر‎

TKPROF: Release 9.2.0.1.0 – Production on 星期二 4月 20 13:59:20 2010

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Trace file: d:/oracle/admin/FZLGFM/udump/fzlgfm_ora_3468.trc

Sort options: default

********************************************************************************

count    = number of times OCI procedure was executed

cpu      = cpu time in seconds executing

elapsed  = elapsed time in seconds executing

disk     = number of physical reads of buffers from disk

query    = number of buffers gotten for consistent read

current  = number of buffers gotten in current mode (usually for update)

rows     = number of rows processed by the fetch or execute call
********************************************************************************

alter session set events ‘10046 trace name context forever, level 8’

 

call     count       cpu    elapsed       disk      query    current        rows

——- ——  ——– ———- ———- ———-
———-  ———-

Parse        0      0.00       0.00          0          0          0           0

Execute      1      0.00       0.00          0          0          0           0

Fetch        0      0.00       0.00          0          0          0           0

——- ——  ——– ———- ———- ———-
———-  ———-

total        1      0.00       0.00          0          0          0           0

 

Misses in library cache during parse: 0

Misses in library cache during execute: 1

Optimizer goal: CHOOSE

Parsing user id: SYS

相关文章