今天使用一般的用户用autotrace做一个简单的查询,好给网友朋友一个很简单的执行计划的结果看看,
结果还出现问题了
问题如下
SQL> set autotr on;
SP2-0613: Unable to verify PLAN_TABLE format or existence
SP2-0611: Error enabling EXPLAIN report
SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
SP2-0611: Error enabling STATISTICS report
出现问题,呵呵呵,终于等到错误解决了,好多天都遇不到问题呢,始终还是那句话,人只有吃过亏了,才能记的住东西。
现在不就是一个很到的给我记东西的机会么
有些网友朋友,特别怕遇到问题,所以一有问题,马上求助于他人,这是一个不好的习惯,至少我们先要看看错误是什么样吧,
所以看到问题不怕,先看清楚问题的提示。
这里提示
SP2-0613: Unable to verify PLAN_TABLE format or existence
SP2-0611: Error enabling EXPLAIN report
这里的意思还是很清楚的,plan_table这个不能verify到format或者是否存在。不能够用explain report
SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
SP2-0611: Error enabling STATISTICS report
这个呢,也很清楚 plustrace这个role不能用。
下面一个觉得软一些,先开始吧。plustrace不能用,马上就查查role的状态哟。
SQL> desc dba_roles;
Name Type Nullable Default Comments
—————– ———— ——– ——- ——————————————————-
ROLE VARCHAR2(30) Role Name
PASSWORD_REQUIRED VARCHAR2(8) Y Indicates if the role requires a password to be enabled
SQL> select * from dba_roles where role = ‘PLUSTRACE’;
no rows selected
哦,都还没有这个role创建。如果autotrace需要这个role的权限了,没有的话就创建哟。不过,这个估计是系统带的role,可能是我还没有安装相关的sql文件吧。 安装他吧。
马上有一个问题来了,怎么安装了,可以g一把,也可以土发,用file search了。一般安装的脚本在rdbms下,搜索一下,有一个文件demo/nlsdemo0.sql有这个role的匹配,不过看名字就不是了,换个整个目录搜搜,在sqlplus下找到一个plustrce.sql的文件,打开看看,有些像。执行一把吧
SQL>conn / as sysdba
SQL>@ ?/sqlplus/admin/plustrce.sql
看着执行的消息就知道role已经OK了。
马上附上权限看看。
SQL>grant plustrace to test1;
搞定这个了。
试试test1现在行不行
SQL>conn test1/test1;
SQL>set autotr on;
SP2-0613: Unable to verify PLAN_TABLE format or existence
SP2-0611: Error enabling EXPLAIN report
刚刚的4个错误变两个了。
SQL>select name from user_tables;
出来统计报告了,
不过执行计划还没有出来。
继续解决上面两个问题。
查询有没有plan_table这个表
SQL> select * from dba_tables where table_name = ‘PLAN_TABLE’;
SYS PLAN_TABLE SYSTEM
怀疑是可能不能直接访问PLAN_TABLE的表,加上同义词
SQL>create public synonym plan_table for plan_table;
SQL>grant all on plan_table to public;
切换到test1下,
SQL>conn test1/test1
SQL>set autotr on;
没有问题了,
执行一下自己的表,
SQL>select * from t1;
no rows selected
Execution Plan
———————————————————-
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 TABLE ACCESS (FULL) OF ‘T1′
Statistics
———————————————————-
133 recursive calls
0 db block gets
18 consistent gets
2 physical reads
60 redo size
270 bytes sent via SQL*Net to client
372 bytes received via SQL*Net from client
1 SQL*Net roundtrips to/from client
2 sorts (memory)
0 sorts (disk)
0 rows processed
看这个结果就知道,一切都已经搞定了。
不过还是有些很纳闷的地方。
当我访问all_tables的时候或者user_tables的时候,这里会有
ERROR:
ORA-01039: insufficient privileges on underlying objects of the views
SP2-0612: Error generating AUTOTRACE EXPLAIN report
这样的错误出现,
琢磨了好久,还是没有能够解决,在网上查了查,也有几个类似的情况出现。不过其中
的解释不足以有说服力