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_