在sqlplus 启用autotrace并略看执行计划,到此为止,DBA用户首先被授予了plustrace角色,然后我们可以把plustrace授予public。如果
1 如何启用sqlplus的autotrace功能?【pl/sql dev不支持这个功能】
要用sys用户登入并下列步骤:
(1)@?\rdbms\admin\utlxplan --建立plan_table表
(2)10G之前plan_table是没有同义词的,所以要加上create public synonym plan_table for plan_table。【此步:option】因为:In 10g, you don't need to create plan_table in your schema to explain plan. It uses the table plan_table$ belonging to SYS through a public synonym. The table is a session duration-based global temporary table. Makes perfect sense!
(3)grant all on plan_table to public
(4)@?\sqlplus\admin\plustrce
到此为止,DBA用户首先被授予了plustrace角色,然后我们可以把plustrace授予public。如果你需要限制Autotrace权限,可以把对public的授权改为对特定user的授权。例如:grant plustrace to scott。
【倘若根据以上步骤不行,则:
1.
1.)什么用户执行的set autotrace
2.)plan_table和plustrace是否按照要求创建和授权
2.
如果都已经按照要求做过,,还报错的话,可以grant select any dictionary to your_user,再验证一下是否可以使用。
3.
再不行drop plan_table重建呢?
】
Notice:
(1)Explain 唯一的限制是用户必须是所解释事物的所有者,否则可能报错。
(2)在pl/sql dev中,我们可以使用explain plan for+ select字句,然后再执行select * from table(DBMS_XPLAN.display)。
关于Autotrace几个常用选项的说明:
Set autotrace off :缺省值。
Set autotrace on :含查询输出,执行计划,统计信息
On后有两个可选参数:
Explain:含查询输出,执行计划
Statistics:含查询输出,统计信息
Set autotrace traceonly:含执行计划,统计信息