暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何启用自动跟踪(AUTOTRACE)?

原创 小小亮 2022-10-27
831

启用自动跟踪

要在会话中获得完整的AUTOTRACE功能,您应该采取以下步骤。

1. 需要在用户模式中访问PLAN_TABLE表。

如果没有,请自行创建PLAN_TABLE表


要在会话中启用 AUTOTRACE 功能,您不仅需要安装PLUSTRACE角色,还需要创建PLAN_TABLE表,该表不是数据库原生的,需要安装。


如何安装 PLUSTRACE 角色

要安装PLUSTRACE ,只需通过SYS执行$ORACLE_HOME/sqlplus/admin/plustrce.sql

SQL> show user
USER is "SYS"
SQL> @$ORACLE_HOME/sqlplus/admin/plustrce.sql

以下是$ORACLE_HOME/sqlplus/admin/plustrce.sql的执行日志。

SQL> drop role plustrace;
drop role plustrace
          *
ERROR at line 1:
ORA-01919: role 'PLUSTRACE' does not exist


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
SQL>

现在,PLUSTRACE已经安装完毕。


如何安装 PLAN_TABLE 表

要创建PLAN_TABLE表,只需由用户执行$ORACLE_HOME/rdbms/admin/utlxplan.sql,而不是SYS

SQL> show user
USER is "HR"
SQL> @$ORACLE_HOME/rdbms/admin/utlxplan.sql

Table created.

然后我们检查表定义。

SQL> desc plan_table
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 STATEMENT_ID                                       VARCHAR2(30)
 PLAN_ID                                            NUMBER
 TIMESTAMP                                          DATE
 REMARKS                                            VARCHAR2(4000)
 OPERATION                                          VARCHAR2(30)
 OPTIONS                                            VARCHAR2(255)
 OBJECT_NODE                                        VARCHAR2(128)
 OBJECT_OWNER                                       VARCHAR2(128)
 OBJECT_NAME                                        VARCHAR2(128)
 OBJECT_ALIAS                                       VARCHAR2(261)
 OBJECT_INSTANCE                                    NUMBER(38)
 OBJECT_TYPE                                        VARCHAR2(30)
 OPTIMIZER                                          VARCHAR2(255)
 SEARCH_COLUMNS                                     NUMBER
 ID                                                 NUMBER(38)
 PARENT_ID                                          NUMBER(38)
 DEPTH                                              NUMBER(38)
 POSITION                                           NUMBER(38)
 COST                                               NUMBER(38)
 CARDINALITY                                        NUMBER(38)
 BYTES                                              NUMBER(38)
 OTHER_TAG                                          VARCHAR2(255)
 PARTITION_START                                    VARCHAR2(255)
 PARTITION_STOP                                     VARCHAR2(255)
 PARTITION_ID                                       NUMBER(38)
 OTHER                                              LONG
 DISTRIBUTION                                       VARCHAR2(30)
 CPU_COST                                           NUMBER(38)
 IO_COST                                            NUMBER(38)
 TEMP_SPACE                                         NUMBER(38)
 ACCESS_PREDICATES                                  VARCHAR2(4000)
 FILTER_PREDICATES                                  VARCHAR2(4000)
 PROJECTION                                         VARCHAR2(4000)
 TIME                                               NUMBER(38)
 QBLOCK_NAME                                        VARCHAR2(128)
 OTHER_XML                                          CLOB

PLAN_TABLE表已创建。


2. 需要将 PLUSTRACE角色授予用户。

    如果您看到错误ORA-01919: 角色 'PLUSTRACE' 不存在,请先安装PLUSTRACE角色,然后像这样将其授予用户。

    SQL> show user
    USER is "SYS"
    SQL> grant plustrace to hr;

    Grant succeeded.

使用自动跟踪

这是一个使用 AUTOTRACE 的示例。

SQL> conn hr/hr@orcl
Connected.
SQL> set autotrace on;
SQL> select count(*) from employees;

  COUNT(*)
----------
       107


Execution Plan
----------------------------------------------------------
Plan hash value: 3580537945

-------------------------------------------------------------------------
| Id  | Operation        | Name         | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------------
|   0 | SELECT STATEMENT |              |     1 |     1   (0)| 00:00:01 |
|   1 |  SORT AGGREGATE  |              |     1 |            |          |
|   2 |   INDEX FULL SCAN| EMP_EMAIL_UK |   107 |     1   (0)| 00:00:01 |
-------------------------------------------------------------------------


Statistics
----------------------------------------------------------
        100  recursive calls
          0  db block gets
        199  consistent gets
          2  physical reads
          0  redo size
        551  bytes sent via SQL*Net to client
        392  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          6  sorts (memory)
          0  sorts (disk)
          1  rows processed

如您所见,结果包括优化器执行路径和 SQL 语句执行统计信息。


原文标题:How to Enable AUTOTRACE

原文作者:  Ed Chen

原文链接:https://logic.edchen.org/how-to-enable-autotrace-in-session/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论