在Oracle中启用AutoTrace查看SQL执行计划

   通过以下方法可以把Autotrace的权限授予Everyone,

  如果你需要限制Autotrace权限,可以把对public的授权改为对特定user的授权。

  D:oracleora92>sqlplus /nolog

  SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 6月 3 15:16:03 2003

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

  SQL> connect sys as sysdba

  请输入口令:

  已连接。

  SQL> [b]@?rdbmsadminutlxplan[/b]

  表已创建。

  SQL> create public synonym plan_table for plan_table;

  同义词已创建。

  SQL> grant all on plan_table to public ;

  授权成功。

  SQL>[b] @?sqlplusadminplustrce[/b]

  SQL>

  SQL> drop role plustrace;

  drop role plustrace

  *

  ERROR 位于第 1 行:

  ORA-01919: 角色'PLUSTRACE'不存在

  SQL> create role plustrace;

  角色已创建

  SQL>

  SQL> grant select on v_$sesstat to plustrace;

  授权成功。

  SQL> grant select on v_$statname to plustrace;

时间: 2024-10-31 21:26:41

在Oracle中启用AutoTrace查看SQL执行计划的相关文章

【Oracle】如何查看sql 执行计划的历史变更

   今天中午,突然接收到active session 数目飙高的报警,查看数据库,对于一个OLTP 类型的查询本应该走index range scan 却变成全部是 direct path read ,所有的sql 走了全表扫描.悲剧的是那个表是一个历史表 185G..故造成了许多session堆积,前台应用受到影响.回到问题本身,如果查看sql执行计划的变更?? oracle 10G 以后可以通过下面的三个视图查询到sql执行计划的历史信息: DBA_HIST_SQL_PLAN DBA_HI

存储过程中查看sql执行计划的方法

如果sql在存储过程中,用set autotrace traceonly的方法一般不易直接查看,本文尝试了两种方法搜集存储过程中的执行计划 一 explain plan方法 测试用的存储过程 declare   p varchar2(10) ; begin   p:='15%';   execute immediate 'explain plan for select  h.id,h.phone from test.test_his H where h.phone like :1'   usin

查看SQL执行计划常用方法

不论是做为开发DBA还是维护DBA,总是或多或少地遇到SQL执行效率或者说SQL调优问题,查看执行计划是必须的.一般我们可以用3种方法查看: 一.explain plan for 举例就足以说明其用法 sys@ORCL> explain plan for 2 select sysdate from dual; Explained. sys@ORCL> select * from table(dbms_xplan.display()); PLAN_TABLE_OUTPUT -----------

Oracle AWR 阙值影响历史执行计划

      最近有网友提到为什么在dba_hist_sql_plan中无法查看到sql语句的历史执行计划,对于这个问题是由于缺省情况下,Oracle 设定的阙值并非捕获所有的sql语句,所以无法看到某些sql历史执行计划乃正常现象.在Oracle 9i的时候,我们可以通过设定不同的快照level获得不同程度的详细信息.也可以单独配置收集sql的阙值,如指定sql的执行次数,磁盘读的次数,解析调用的数量等.所有超出这个设置的sql语句都收集到snapshot之中.Oracle 10g,11g也有相

dbms_shared_pool.purge 清理某个SQL执行计划

dbms_shared_pool.purge 清理某个SQL执行计划 在日常管理中,经常有让sql重新解析的需求,比如说使用了bind peeking,第一次绑定特定值的时候执行计划走的特别糟,因为绑定变量导致之后的语句不作重新解析,重用了最差的执行计划,这时候我们希望重新解析来得到一个相对好的执行计划,常见的方法有: a.alter system flush shared_pool; b.对语句中的对象做个ddl ; --只会重新生成一个子游标 c.重新收集统计信息 但是这些操作的影响都比较大

关于SQL执行计划错误导致临时表空间不足的问题_oracle

故障现象:临时表空间不足的问题已经报错过3次,客户也烦了,前两次都是同事添加5G的数据文件,目前已经达到40G,占用临时表空间主要是distinct 和group by 以及Union all 表数据量在200W左右,也不至于把40G的临时表空间撑爆. 原因分析:既然排序用不了这么多临时表空间应该是别的原因造成. 从包含故障时间段的AWR报告中可以看出这一阶段DBtime蛮高的,并且sql execute elapsed time 竟然占到了99.43%,可以断定是SQL语句引起的. 通过TOP

Oracle技术:如何使用ordered提示改变SQL执行计划

ORDERED提示强制Oracle按照From子句中表出现的顺序进行表连接. 通过ordered提示,可以避免CBO SQL解析过程中的表连接评估,从而避免Oracle产生错误的执行计划,或者强制Oracle按照我们指定的方式执行. 在很多时候,当我们清楚地了解数据结构和数据分布之后,就可以通过ORDERED提示来提高SQL性能. 通过以下例子我们来说明一下Ordered提示的作用. 1.不加Hints时SQL的执行计划 我们可以通过10053事件跟踪一下该SQL的解析: 查看Trace文件可以

如何分析ORACLE的SQL执行计划 .

1,先举个例子: -------------------------------------------------------------------------------- | Id  | Operation                        | Name                    | Rows  | Byt -------------------------------------------------------------------------------

oracle 中,下面哪个SQL效率比较高?

问题描述 要对比两张表TA和TB: select * from TA a where not exists (select v_key from TB b where a.v_key = b.v_key); select * from TA, (select v_key from TB) c where TA.v_key = c.v_key(+) and c.v_key is null;如果表TA和TB都有大量数据的话,哪个效率会比较高一点? 问题补充:话说能不能顺便稍微解释一下为什么较快或者较