根据书中提供的下载代码链接地址,从github上找到源代码下载地址。
https://github.com/apress
下载好代码后,开始一段新的旅行。
设置 SQL*Plus 的 AUTOTRACE
设置 SQL*Plus 的 AUTOTRACE
AUTOTRACE 是 SQL*Plus 中一个工具,可以显示所执行查询的解释计划(explain plan)以及所用
的资源。这本书中大量使用了 AUTOTRACE 工具。
配置 AUTOTRACE 的方法不止一种,以下是我采用的方法:
(1)cd [ORACLE_HOME]/rdbms/admin;
(2)作为 SYSTEM 登录 SQL*Plus;
(3)运行@utlxplan;
(4)运行 CREATE PUBLIC SYNONYM PLAN_TABLE FOR PLAN_TABLE;
(5)运行 GRANT ALL ON PLAN_TABLE TO PUBLIC
utlxplan是Oracle提供的查看SQL语句执行计划的工具,该工具位于 [ORACLE_HOME]/rdbms/admin路径下,所以先要进入到该路径中。在该路径下启动cmd,sqlplus
运行
运行 @utlxplan
运行 create public SYNONYM synonym_plan_table for plan_table;
运行 grant all on synonym_plan_table to public;
查看执行计划
运行 explain plan for select * from emp;
运行 select * from table(dbms_xplan.display);
当我们执行如下sql,会报错。
set autotrace on;
创建plustrace角色
此时需要创建plustrace角色,登录sys系统用户,创建plustrace角色,并赋予相应的权限(下面的权限)。
SQL> drop role plustrace;
角色已删除。
SQL> create role plustrace;
角色已创建。
SQL> grant select on v_$sesstat to plustrace;
授权成功。
SQL> grant select on v_$statname to plustrace;
授权成功。
SQL> grant select on v_$mystat to plustrace;
授权成功。
SQL> grant plustrace to dba with admin option;
授权成功。
SQL>
SQL> grant plustrace to scott;
SQL>
重新执行set autotrace on; 即可。
当用户密码快过期时,执行set autotrace on; 会报如下错误。
SQL> set autotrace on;
ERROR:
ORA-28002: 4 天之后口令将过期
SP2-0619: 连接时出错
SP2-0611: 启用 STATISTICS 报告时出错
修改密码即可。
alter user scott identified by 123456;
重新使用scott登录,重新执行set autotrace on; 正确执行,结果如下: