Oracle zw 非dba用户set autotrace提示启用 STATISTICS 报告时出错


 


SQL> conn zw/zw


Connected.


SQL> set autotrace traceonly;


SP2-0618: Cannot find the Session Identifier.  Check PLUSTRACE role is enabled


SP2-0611: Error enabling STATISTICS report


SQL> 




从错误可以看出两点:一是跟角色plustrace有关,另外跟用户对于特定视图的权限有关。






方法一:




直接使用DBA用户,或者给你的用户赋权DBA,这样就不会有权限问题了。但通常情况下,不应该给其他用户赋权DBA。


grant dba to zw;


SQL> conn zw/zw


Connected.


SQL> set autotrace traceonly;






方法二:




我们可以直接解决用户权限然后解决这个问题,首先,切换到DBA用户登录,然后使用以下语句直接给特定用户如scott赋权:




SQL> grant select on v_$sesstat to zw;


SQL> grant select on v_$statname to zw;


SQL> grant select on v_$mystat to zw;




SQL> conn zw/zw


Connected.


SQL> set autotrace traceonly;


SQL> 




回收权限


SQL>revoke select on v_$sesstat from zw;


SQL>revoke select on v_$statname from zw;


SQL>revoke select on v_$mystat from zw;




又不能用了


SQL> conn zw/zw


Connected.


SQL> set autotrace traceonly;


SP2-0618: Cannot find the Session Identifier.  Check PLUSTRACE role is enabled


SP2-0611: Error enabling STATISTICS report




然后再使用 set autotrace on 就不出有错误了。




方法三:




创建plustrace角色,然后将角色赋给特定用户。Oracle已经提供了角色plustrace的创建脚本




@/u01/app/oracle/product/11.2.0.4/db_1/sqlplus/admin/plustrce.sql








把角色赋权给zw用户




SQL> grant plustrace to zw;




SQL> conn zw/zw


Connected.


SQL> set autotrace traceonly;




把角色赋予给所有用户




SQL> grant plustrace to public;