启用自动跟踪
要在会话中获得完整的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 CLOBPLAN_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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




