这个错误比较奇怪,设置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报告时出错


问题果然如此。


oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html