zoukankan      html  css  js  c++  java
  • 普通用户开启AUTOTRACE 功能

      AUTOTRACE是一个SQL*Plus工具,用于跟踪SQL的执行计划,收集执行时所耗用资源的统计信息。系统账户本身具有AUTOTRACE,其他账户需要通过手动赋予

    一. 用系统账户登录(DBA)

     1 SQL> set autotrace traceonly
     2 SQL> select * from hr.jobs;
     3 
     4 19 rows selected.
     5 
     6 
     7 Execution Plan
     8 ----------------------------------------------------------
     9 Plan hash value: 944056911
    10 
    11 --------------------------------------------------------------------------
    12 | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    13 --------------------------------------------------------------------------
    14 |   0 | SELECT STATEMENT  |      |    19 |   627 |     3   (0)| 00:00:01 |
    15 |   1 |  TABLE ACCESS FULL| JOBS |    19 |   627 |     3   (0)| 00:00:01 |
    16 --------------------------------------------------------------------------
    17 
    18 Statistics
    19 ----------------------------------------------------------
    20           0  recursive calls
    21           0  db block gets
    22           9  consistent gets
    23           0  physical reads
    24           0  redo size
    25        1452  bytes sent via SQL*Net to client
    26         396  bytes received via SQL*Net from client
    27           3  SQL*Net roundtrips to/from client
    28           0  sorts (memory)
    29           0  sorts (disk)
    30          19  rows processed
    31 
    32 SQL> 

    二.授予其他用户AUTOTRACE 功能

    2.1 创建基础表  运行$ORACLE_HOME/rdbms/admin/utlxplan脚本来创建plan_table

     1 SQL> conn /as sysdba                        --用系统账户登录
     2 Connected.
     3 SQL> start $ORACLE_HOME/rdbms/admin/utlxplan --执行utlxplan脚本
     4 
     5 Table created.
     6 
     7 SQL> create public synonym plan_table for plan_table;--为表plan_table创建公共同义词    
     8     
     9 Synonym created.
    10 
    11 --如果需要限制Autotrace权限,可以把对public的授权改为对特定user的授权。
    12 SQL> grant all on plan_table to public;--将同义词表plan_table授予给所有用户
    13 
    14 Grant succeeded.
    15 
    16 SQL>

    2.2 创建角色  运行$ORACLE_HOME/sqlplus/admin/plustrce.sql脚本

     1 SQL> start $ORACLE_HOME/sqlplus/admin/plustrce.sql  --执行创建角色的脚本
     2 SQL> 
     3 --以下是脚本执行过程:首先 删除PLUSTRACE角色,重建PLUSTRACE角色,赋予权限
     4 SQL> drop role plustrace;
     5 drop role plustrace
     6           *
     7 ERROR at line 1:
     8 ORA-01919: role 'PLUSTRACE' does not exist
     9 
    10 
    11 SQL> create role plustrace;
    12 
    13 Role created.
    14 
    15 SQL> 
    16 SQL> grant select on v_$sesstat to plustrace;
    17 
    18 Grant succeeded.
    19 
    20 SQL> grant select on v_$statname to plustrace;
    21 
    22 Grant succeeded.
    23 
    24 SQL> grant select on v_$mystat to plustrace;
    25 
    26 Grant succeeded.
    27 
    28 SQL> grant plustrace to dba with admin option;
    29 
    30 Grant succeeded.
    31 
    32 SQL> 
    33 SQL> set echo off
    34 SQL>         

    2.3 角色的授予

      在创建角色后,DBA首先被授予了该角色,且可以将角色授予其它组和用户。可以手工把plustrace授予给public,则该数据库内所有的用户都将拥有plustrace角色的权限。也可以单独授予给某个组和用户。

     1 --授予给单独用户
     2 SQL> grant plustrace to hr;
     3 
     4 Grant succeeded.
     5 
     6 --授予给所有用户
     7 SQL> grant plustrace to public;
     8 
     9 Grant succeeded.
    10 
    11 SQL>

      现在所有用户即可使用autotrace 功能

    三、AUTOTRACE的几个选项

    1 --在sql提示符下输入set autot后将会给出设置autotrace的提示,如下:
    2 SQL> set autot
    3 Usage: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
    4 
    5 set autotrace off :缺省值,将不生成autotrace 报告
    6 set autotrace on :包含执行计划和统计信息
    7 set autotrace traceonly :等同于set autotrace on,但不显示查询输出的结果
    8 set autotrace on explain :只显示优化器执行路径报告
    9 set autotrace on statistics :只显示执行统计信息        

    四.hr用户示例

     1 SQL> conn hr/hr123
     2 Connected.
     3 SQL> set autotrace traceonly
     4 SQL> select * from jobs;
     5 
     6 19 rows selected.
     7 
     8 
     9 Execution Plan
    10 ----------------------------------------------------------
    11 Plan hash value: 944056911
    12 
    13 --------------------------------------------------------------------------
    14 | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    15 --------------------------------------------------------------------------
    16 |   0 | SELECT STATEMENT  |      |    19 |   627 |     3   (0)| 00:00:01 |
    17 |   1 |  TABLE ACCESS FULL| JOBS |    19 |   627 |     3   (0)| 00:00:01 |
    18 --------------------------------------------------------------------------
    19 
    20 
    21 Statistics
    22 ----------------------------------------------------------
    23           1  recursive calls
    24           0  db block gets
    25           9  consistent gets
    26           0  physical reads
    27           0  redo size
    28        1452  bytes sent via SQL*Net to client
    29         396  bytes received via SQL*Net from client
    30           3  SQL*Net roundtrips to/from client
    31           0  sorts (memory)
    32           0  sorts (disk)
    33          19  rows processed
    34 
    35 SQL> 
  • 相关阅读:
    remove white space from read
    optimize the access speed of django website
    dowload image from requests
    run jupyter from command
    crawl wechat page
    python version 2.7 required which was not found in the registry windows 7
    health
    alternate rows shading using conditional formatting
    word
    【JAVA基础】static 关键字
  • 原文地址:https://www.cnblogs.com/polestar/p/3150543.html
Copyright © 2011-2022 走看看