打开Oracle Database软件后进入软件数据库主界面,在PL/SQL下按F5查看执行计划,在这里面可以看到基数、优化器、耗费等基本信息 如图
创新互联主要从事成都网站建设、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务东乡,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
2
在SQL*PLUS,PL/SQL的命令窗口下执行下面步骤 :
SQLEXPLAIN PLAN FOR
SELECT * FROM SCOTT.EMP; --要解析的SQL脚本
SQLSELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
如图
完成以上步骤后还需要在SQL*PLUS下输入代码执行命令:
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 TRACEONLY --这样设置会有执行计划、统计信息,不会有脚本数据输出
最后输入第5段代码:
SQL执行需要查看执行计划的SQL语句 SQLSET AUTOTRACE TRACEONLY STAT --这样设置只包含有统计信息 SQL执行需要查看执行计划的SQL语句
需要注意的是:在Oracle Database中,PL/SQL Developer 工具并不完全支持所有的SQL*Plus命令,如果执行“SET AUTOTRACE ON”命令就会报错,出现接下来的情况:
SQL SET AUTOTRACE ON;
Cannot SET AUTOTRAC
PL/SQL DEVELOPER工具里面执行上面脚本过后,我们是看不到相关信息的,这时我们可以通过输入脚本代码查询执行过的信息,代码如下:
SELECT T.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') T
如图所示:
我们通过Oracle Database,查看执行计划后,通常要以文本的形式保存下来,可以输入命令:tkprof D:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\TRACE/wgods_ora_3940.trc h:\out.txtoutputfile explain=etl/etl 执行 如图
执行上面命令后,就可以查看生成的文本文件了如图
以上就是如何用Oracle Database,查看执行计划的步骤,需要注意的是PL/SQL Developer 工具并不完全支持所有的SQL*Plus命令,执行SET AUTOTRACE ON 就如此,在PL/SQL Developer工具下执行此命令会报错。
查看归档模式
conn
/as
sysdba
archive
log
list
如果数据库为归档模式的话,可以通过logmnr来进行挖掘日志文件查看这些信息的。如果是非归档模式。对不起无法查看了
开启后台进程跟踪,
设置参数(initsid.ora)
.backgroudn_dump_dest=目录名
--
指定根踪文件存放的路径
.user_dmup_test=目录名
--指定用户信息跟踪文件的存放路径
.用户的跟踪文件(.trc),
用TKPROF
来格式化用户跟踪文件
SQL
语句跟踪即可。
.imed_statistics=true;
--设置启用
sql_trace
=true;
.user_dump_dest=目录
--指定跟踪文件的存放路径
.max_dump_file_size=5M
--指定跟踪文件最大尺寸
.SQL_TRACE=TRUE;
.动态改变
:alter
session
set
sql_trace=true;
或者打开生成的跟踪文件:
默认在..\oralce\admin\user\udump\*.trc,由于oralce
生成的*.trc
直接打开格式不规格,看得很累,可以用tkprof
gk
来格式化
:c:\tkprof
ora00001.trc
a.txt
获得当前trace文件生成路径
SQL select tracefile from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat));
2
开启当前session的trace
SQL alter session set sql_trace=true;
3
转换trc文件内容为可读的输出结果 (trace文件存放在F盘)
C:\Documents and Settings\Administratortkprof f:\oracle\administrator\diag\rdbm
s\orcl\orcl\trace\orcl_ora_1160.trc output=c:\aa.txt
4
转换的trc文件包含sql执行计划 (trace文件存放在D盘根目录)
C:\Documents and Settings\Administratortkprof d:\gdprd_ora_9120_htmlpkg.trc
output=d:\htmlpkg.txt explain=apps/apps@dev3 sys=no
trc文件是oracle的系统跟踪文件(trace), 当系统启动或运行过程中出现错误时,系统会自动记录跟踪文件到指定的目录, 以便检查问题原因。
备注:trace文件有后台进程或者服务在发生错误时产生的,每个进程或者服务会产生单独的一个trace文件,如果没用的话,可以直接删除就可以了。
trace
file
主动记录给打开了吧,
1、如果是实例层面的,将初始化参数文件里的sql_trace设置为false
sqlalter
system
set
sql_trace=false
scope=both;
修改前可以show
parameter先查看一下,保证这个参数是false就行
2、吐过是会话层面的
sqlalter
session
set
sql_trace=false;