AUTOTRACE是一项 SQL*Plus 功能,自动跟踪为 SQL 语句生成一个执行计划并且提供与该语句的处理有关的统计。
可能经常遇到的问题是建了个新用户,set autut on 时报错,如下
SQL> conn zhang/weizhao –只有connect,resource角色的用户
Connected.
SQL> set autot on
SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
SP2-0611: Error enabling STATISTICS report
但如果忽略,继续查询测试表
SQL> select * from test_cache; –这是我自己建的测试表
ID
———-
1
Execution Plan
———————————————————-
Plan hash value: 2492309226
——————————————————————————–
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
——————————————————————————–
| 0 | SELECT STATEMENT | | 1 | 13 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| TEST_CACHE | 1 | 13 | 3 (0)| 00:00:01 |
——————————————————————————–
Note
—–
– dynamic sampling used for this statement
只有这些,没有最后统计的详细信息,回到那个错误,明显发现是没有PLUSTRACE这个角色的权限,那继续
SQL> conn system/oracle
Connected.
SQL> grant plustrace to zhang;
Grant succeeded.
SQL> conn zhang/weizhao
Connected.
SQL> set autot on;
SQL> select * from test_cache;
ID
———-
1
Execution Plan
———————————————————-
Plan hash value: 2492309226
——————————————————————————–
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
——————————————————————————–
| 0 | SELECT STATEMENT | | 1 | 13 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| TEST_CACHE | 1 | 13 | 3 (0)| 00:00:01 |
——————————————————————————–
Note
—–
– dynamic sampling used for this statement
Statistics
———————————————————-
0 recursive calls
0 db block gets
7 consistent gets
0 physical reads
0 redo size
409 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
AUTOTRACE Statistics常用列解释
序号
|
列名
|
解释
|
1
|
db block gets
|
从buffer cache中读取的block的数量
|
2
|
consistent gets
|
从buffer cache中读取的undo数据的block的数量
|
3
|
physical reads
|
从磁盘读取的block的数量
|
4
|
redo size
|
DML生成的redo的大小
|
5
|
sorts (memory)
|
在内存执行的排序量
|
7
|
sorts (disk)
|
在磁盘上执行的排序量
|
附加:
如果用system (DBA)在给用户授权plustrace 角色时出错,
conn / as sysdba
—用sysdba登录
sql>grant plustrace to dba with admin option
–但如果sys 都提示不存在那个角色,就用脚本创建那个角色,同时分配几个视图的查询权限给角色
sql>@$ORACLE_HOME/sqlplus/admin/plustrce.sql
create role plustrace;
grant select on v_$sesstat to plustrace;
grant select on v_$statname to plustrace;
grant select on v_$session to plustrace;
打赏
微信扫一扫,打赏作者吧~
对不起,这篇文章暂时关闭评论。