首先我们一般可以利用以下的语句来识别Oracle“低效执行”的SQL语句:

  SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,

  ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,

  ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,

  SQL_TEXT

  FROM V$SQLAREA

  WHERE EXECUTIONS>0

  AND BUFFER_GETS >0

  AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8

  ORDER BY 4 DESC;

  还有一些实时监控ORACLE的语句可以参考Oracle数据库性能监控。

  当然我们更需要使用TKPROF工具来查询SQL性能状态:

  SQL trace 工具收集正在执行的SQL的性能状态数据并记录到一个跟踪文件中. 这个跟踪文件提供了许多有用的信息。

  例如:解析次数、执行次数、CPU使用时间等.

  这些数据将可以用来优化你的系统.

  设置SQL TRACE在会话级别: 有效

  ALTER SESSION SET SQL_TRACE TRUE;

  设置SQL TRACE 在整个数据库有效

  SQL_TRACE=TRUE,

  TIMED_STATISTICS=ON

  USER_DUMP_DEST参数说明了生成跟踪文件的目录

  用TKPROF工具解析阅读TRC文件,之后Jason会重点介绍下。

  之后我们还需要用EXPLAIN PLAN 分析SQL语句。

  EXPLAIN PLAN 是一个很好的分析SQL语句的工具

  它甚至可以在不执行SQL的情况下分析语句

  通过分析,我们可以知道ORACLE是怎么样连接表Plan_table

  @RDBMSADMINutlxplan.sql

  Explain Plan 的用法如下,

  explain plan

  [set statement_id = ‘text’]

  [into [owner.]table_name]

  for statement;

  或者设置AUTOTRACE

  SQL> set autotrace on

  SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabledS

  P2-0611: Error enabling STATISTICS report

  SQL>@SQLPLUSadminplustrace.sql

  AUTOTRACE

  SQL> SET AUTOTRACE ON

  SQL> SET AUTOTRACE TRACEONLY

  SQL> SELECT …..

  Oracle提供了不少有用的工具,在利用tuning task,tuning set调优oracle中Jason也介绍了些,之后会提供TKPROF的用法