Oracle设置AUTOTRACE时出现SP2-0611错误

本文探讨了在Oracle 11g环境下设置AUTOTRACE时遇到的SP2-0611错误及ORA-942错误。通过分析发现,问题源于用户缺少必要的PLUSTRACE角色权限,最终通过授权解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个错误比较奇怪,设置AUTOTRACE是出现SP2-0611和ORA-942错误。

  版本11.2 for Linux x86-64:

  SQL> CONN TEST/TEST

  已连接。

  SQL> SET AUTOT TRACE

  搜集统计信息时出错ORA-942

  SP2-0611:启用STATISTICS报告时出错

  SQL> SET AUTOT ON

  搜集统计信息时出错ORA-942

  SP2-0611:启用STATISTICS报告时出错

  SQL> SET AUTOT OFF

  SQL> SET AUTOT ON

  搜集统计信息时出错ORA-942

  SP2-0611:启用STATISTICS报告时出错

  SQL> @?/rdbms/admin/utlxplan

  表已创建。

  SQL> SET AUTOT TRACE

  搜集统计信息时出错ORA-942

  SP2-0611:启用STATISTICS报告时出错

  SQL> SET AUTOT ON

  搜集统计信息时出错ORA-942

  SP2-0611:启用STATISTICS报告时出错

  这个错误以前还真没有碰到过,一般导致AUTOTRACE失败不是因为PLAN_TABLE不存在,就是由于缺少PLUSTRACE角色或PLUSTRACE角色包含的视图权限。

  而11g中PLAN_TABLE是一个同义词,指向SYS的PLAN_TABLE$表,而且这个表的DML权限已经授权给PUBLIC了,因此不应该是这个表导致的问题。

  将PLAN_TABLE建立了当前用户下,错误依旧。

  怀疑是由于缺少权限造成的问题:

  SQL> CONN / AS SYSDBA

  已连接。

  SQL> @?/sqlplus/admin/plustrce

  SQL>

  SQL> drop role plustrace;

  drop role plustrace

  *

  第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_$mystat to plustrace;

  授权成功。

  SQL> grant plustrace to dba with admin option;

  授权成功。

  SQL>

  SQL> set echo off

  SQL> GRANT PLUSTRACE TO TEST;

  授权成功。

  返回刚才的TEST用户,并重新登陆:

  SQL> CONN TEST/TEST

  已连接。

  SQL> SET AUTOT ON

  问题消失,看来就是由于缺少权限造成的。不过正常情况下Oracle的报错应该是:

  SQL> CREATE USER A IDENTIFIED BY A;

  用户已创建。

  SQL> GRANT CONNECT TO A;

  授权成功。

  SQL> CONN A/A

  已连接。

  SQL> SET AUTOT ON

  SP2-0618:无法找到会话标识符。启用检查PLUSTRACE角色

  SP2-0611:启用STATISTICS报告时出错

  SQL> SET AUTOT OFF

  检查TEST用户拥有的权限:

  SQL> SELECT OWNER, TABLE_NAME, PRIVILEGE

  2  FROM USER_TAB_PRIVS

  3  WHERE WNER = 'SYS'

  4  AND PRIVILEGE  = 'SELECT';

  OWNER                          TABLE_NAME                     PRIVILEGE

  ------------------------------ ------------------------------ ---------------------

  SYS                            V_$PROCESS                     SELECT

  SYS                            V_$SESSION                     SELECT

  SYS                            V_$PARAMETER                   SELECT

  SYS                            V_$MYSTAT                      SELECT

  怀疑因为包含了V_$MYSTAT视图的权限,使得Oracle没有报错缺少PLUSTRACE权限,而是报错ORA-942错误。

  SQL> CONN / AS SYSDBA

  已连接。

  SQL> GRANT SELECT ON V_$MYSTAT TO A;

  授权成功。

  SQL> CONN A/A

  已连接。

  SQL> SET AUTOT ON

  搜集统计信息时出错ORA-942

  SP2-0611:启用STATISTICS报告时出错

  问题果然如此。

标签:  数据库
1  2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值