« 关于数据文件头信息记录 | Blog首页 | 使用DBMS_SUPPORT包 »
如何启用sqlplus的AutoTrace功能
链接:https://www.eygle.com/archives/2004/06/enable_sqlplus_autotrace.html
通过以下方法可以把Autotrace的权限授予Everyone,
如果你需要限制Autotrace权限,可以把对public的授权改为对特定user的授权。
D:\oracle\ora92>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> create public synonym plan_table for plan_table; 同义词已创建。 SQL> grant all on plan_table to public ; 授权成功。 SQL> @?\sqlplus\admin\plustrce SQL> create role plustrace; 角色已创建 授权成功。 SQL> grant select on v_$statname to plustrace; 授权成功。 SQL> grant select on v_$session to plustrace; 授权成功。 SQL> grant plustrace to dba with admin option; 授权成功。 SQL>
|
DBA用户首先被授予了plustrace角色,然后我们可以把plustrace授予public
这样所有用户都将拥有plustrace角色的权限.
SQL> grant plustrace to public ; 授权成功。 |
然后我们就可以使用AutoTrace的功能了.
SQL> connect eqsp/eqsp
|
关于Autotrace几个常用选项的说明:
SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式
SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告
SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息
SET AUTOTRACE ON ----------------- 包含执行计划和统计信息
SET AUTOTRACE TRACEONLY ------ 同set autotrace on,但是不显示查询输出
SQL> set autotrace traceonly 已选择98行。 已用时间: 00: 00: 00.04 Execution Plan
Statistics SQL>
|
-The End-
历史上的今天...
>> 2010-06-18文章:
>> 2008-06-18文章:
>> 2007-06-18文章:
>> 2006-06-18文章:
>> 2005-06-18文章:
By eygle on 2004-06-18 14:31 | Comments (11) | FAQ | HowTo | 12 |
真是不错。tks
THANKS
不行呀!我按照你的步骤还是提示:
SQL> set autotrace on
Cannot SET AUTOTRACE
创建plan_table表及同义词、授权都成功(public)
plustrace用户也创建及sys授权都成功(public),
现在是不管我再sys还是再其他用户下都都不能使用set autotrace on.我oracle版本也是oracle9i,之前做过一次成功了,但不知道现在为何不成功?请教你我该如何处理这样的情况?谢谢了!
SYS用户可以使用么?
drop plan_table;
重新建一次试试呢?
SQL> @d:\oracle9i\ora92\rdbms\admin\utlxplan;
Table created
SQL>
SQL> create public synonym plan_table for plan_table;
Synonym created
SQL> grant all on plan_table to icdsc;--icdsc为一用户名
Grant succeeded
SQL> --drop role trace_rol;
SQL> create role trace_rol;
Role created
SQL> grant select on v_$sesstat to trace_rol;
Grant succeeded
SQL> grant select on v_$statname to trace_rol;
Grant succeeded
SQL> grant select on v_$session to trace_rol;
Grant succeeded
SQL> grant trace_rol to dba with admin option;
Grant succeeded
SQL> set echo off
SQL> grant trace_rol to icdsc;
Grant succeeded
SQL> set autotrace on
Cannot SET AUTOTRACE
SQL> connect icdsc/icdsc;
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as icdsc
SQL> set autotrace on
Cannot SET AUTOTRACE
怎么建都不行,不知道错在哪,还望指点一二,多谢!
你用10046跟踪一下会话set autotrace on,看看跟踪文件里面记录了什么错误
SQL> alter session set events '10046 trace name context forever,level 12';
Session altered.
SQL> set autotrace on
是不是用PL/SQL连接不行,我在pl/sql dev连接时候到最后出现
SQL> set autotrace on
Cannot SET AUTOTRACE
而用系统连接进去就可以
pl/sql dev不支持这个功能。
今天在9.2.0.4.0上试验下了下,发现我的系统需要加上grant select on v_$mystat to plustrace;
才可以。
对于dba用户这样就可以查看执行计划了.但对于没有dba权限的用户,还需要grant select any dictionary to user_name;
不错,学习了