ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 如何启用sqlplus的AutoTrace功能

如何启用sqlplus的AutoTrace功能

原创 Linux操作系统 作者:aikangyan 时间:2007-12-21 14:09:33 0 删除 编辑
很可能你第一次在SQL*PLUS中运行 SET AUTOTRACE ON会得到如下错误:
SQL> set autotrace on;
SP2-0613: 无法验证 PLAN_TABLE 格式或实体
SP2-0611: 启用EXPLAIN 报告时出错
SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色
SP2-0611: 启用STATISTICS报告时出错
这是因为你没有PLUSTRACE 权限

1).运行plustrce.sql,必须用SYS用户或者再SVRMGRL中
@$ORACLE_HOME/sqlplus/admin/plustrce.sql
2).Grant PLUSTRACE to SMS
3).在SMS的模式下运行
@$ORACLE_HOME/rdbms/admin/utlxplan.sql

然后就可以用set autotrace on了

根据如下方式将AutoTrace功能授予普通用户
如果你需要限制Autotrace权限,可以把对public的授权改为对特定user的授权。
[oracle@portal-test admin]$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> @$ORACLE_HOME/rdbms/admin/utlxplan
表已创建。

SQL> create public synonym plan_table for plan_table;
同义词已创建。

SQL> grant all on plan_table to public ;
授权成功。

SQL> @$ORACLE_HOME/sqlplus/admin/plustrce
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;
授权成功。
SQL> grant select on v_$session to plustrace;
授权成功。
SQL> grant plustrace to dba with admin option;
授权成功。
SQL>
SQL> set echo off

DBA用户首先被授予了plustrace角色,然后我们可以把plustrace授予public
这样所有用户都将拥有plustrace角色的权限.

SQL> grant plustrace to public ;
授权成功。

然后我们就可以使用AutoTrace的功能了.
SQL> connect jw/jw
已连接。
SQL> set autotrace on
SQL> set timing on
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> set autotrace traceonly
SQL> select count(*) from xj_xjb;

已用时间: 00: 00: 00.11

Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'XJ_XJB'


Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
58 consistent gets
0 physical reads
0 redo size
377 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed

SQL>


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

启用autotrace

SQL> @?/sqlplus/admin/plustrce

SQL>

SQL> drop role plustrace;

Role dropped.

SQL> create role plustrace;

Role created.

SQL>

SQL> grant select on v_$sesstat to plustrace;

Grant succeeded.

SQL> grant select on v_$statname to plustrace;

Grant succeeded.

SQL> grant select on v_$session to plustrace;

Grant succeeded.

SQL> grant plustrace to dba with admin option;

Grant succeeded.

SQL>

SQL> set echo off

SQL> grant PLUSTRACE to public;


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12379366/viewspace-1053/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-12

  • 博文量
    81
  • 访问量
    42278