oracle-Execution plan脚本运行配置-010

 创建索引 显示执行计划

1.创建索引

可以放在任意的表空间

create index index_name on table_name(xxx,xxx) tablespace tablespace_name storage(xxxx .....)

 

1em下的命令

CREATE INDEX "SCOTT"."INX_EMP" ON "SCOTT"."EMP" ("EMPNO", "JOB", "DEPTNO") TABLESPACE "MYTABLESPACE";

2)sqlplus命令

SQL> create index ind_emp on emp(sal,ename);

 

Index created.

scott用户创建索引不显示?

SQL>

2. 执行创建role plustrace的脚本

1)执行脚本

SQL> conn sys as sysdba

Enter password:

Connected.

Enter password:

Connected.

SQL>   @e:\oracle\product\ 10.1.0 \Db_1\sqlplus\admin\plustrce.sql  --执行创建role plustrace的脚本

//安装的oracle路径在e

---脚本dba自动创建的权限

SQL>

SQL> drop role plustrace;

 

Role dropped.

 

SQL> create role plustrace;

 

Role created.

 

SQL>

SQL> grant select on v_$sesstat to plustrace;

 

Grant succeeded.

 

SQL> grant select on v_$statname to plustrace;

 

Grant succeeded.

 

SQL> grant select on v_$mystat to plustrace;

 

Grant succeeded.

 

SQL> grant plustrace to dba with admin option;

Grant succeeded.

SQL>

SQL> set echo off

---脚本dba自动创建的权限

2)给public执行计划的权限

DBA用户首先被授予了plustrace角色,然后我们可以把plustrace授予public

这样所有用户都将拥有plustrace角色的权限.

SQL>grant plustrace to public;

//如果你需要限制Autotrace权限,可以把对public的授权改为对特定user的授权。

然后我们就可以使用AutoTrace的功能了.

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

--赋角色plustracepublic,所有普通用户都具有此角色  

 /*一般情况下不用配置上面的内容*/   这个角色会让普通用户可以查看到统计信息等。

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

--普通用户没有该角色时在

SQL> set time on

10:09:20 SQL> set  autotrace on

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

SP2-0611: Error enabling STATISTICS report

提示么有角色权限,所在只能看到Execution Plan的信息,看不到统计信息。

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

3执行创建plan_table的脚本

SQL>   @e:\oracle\product\ 10.1.0 \Db_1\RDBMS\ADMIN\utlxplan.sql; --

SQL>grant all on plan_table to public;  -- plan_table上的all权限给public,所有普通用户都具有此权限

Grant succeeded.

Table created.

SQL>

 

4Sql*plus运行错误的原因

可能你第一次在SQL*PLUS中运行 SET AUTOTRACE ON会得到如下错误:

SQL> set autotrace on;

SP2-0613: 无法验证 PLAN_TABLE 格式或实体

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

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

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

这是因为你没有PLUSTRACE 权限

1.运行plustrce.sql,必须用SYS用户或者再SVRMGRL

SQL>   @e:\oracle\product\ 10.1.0 \Db_1\sqlplus\admin\plustrce.sql

2.Grant PLUSTRACE to SMS

3.SMS的模式下运行

@e:\oracle\product\ 10.1.0 \Db_1\RDBMS\ADMIN\utlxplan.sql;

然后就可以用set autotrace on

5.普通用户执行计划

SQL>connect scott //普通用户

 SQL>set autotrace on  --显示执行计划和统计信息  

 SQL>set autotrace on explain --只显示执行计划  

 SQL>set autotrace on statistics --只显示统计信息  

 SQL>set autotrace traceonly --autotrace on,但不显示查询结果  

 SQL>set autotrace off --关闭autotrace 

Eg.

18:18:02 SQL> set autotrace on traceonly;

Execution Plan

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

   0      SELECT STATEMENT Optimizer=ALL_ROWS (Cost=3 Card=14 Bytes=51

          8)

 

   1    0   TABLE ACCESS (FULL) OF 'EMP' (TABLE) (Cost=3 Card=14 Bytes

          =518)

 

 

 

 

 

Statistics

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

          0  recursive calls

          0  db block gets

          8  consistent gets

          0  physical reads

          0  redo size

       1402  bytes sent via SQL*Net to client

        512  bytes received via SQL*Net from client

          2  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

         15  rows processed

 

18:45:47 SQL>

 

你可能感兴趣的:(oracle,数据库,职场,休闲)