当前位置:  数据库>oracle

Oracle性能调整工具总结

    来源: 互联网  发布时间:2017-04-18

    本文导语: 性能调整工具 explain plan,autotrace,tkprof,执行计划和静态统计信息的解读 1、 执行计划 执行计划的设定 conn sys/pwd@tiwen` as sysdba;   CREATE USER TOOL   IDENTIFIED BY tool   DEFAULT TABLESPACE EXAMPLE   TEMPORARY TABLESPACE TEMP   PROFILE DEFAULT   ACCOUNT ...

性能调整工具

explain plan,autotrace,tkprof,执行计划和静态统计信息的解读

1、 执行计划

执行计划的设定

conn sys/pwd@tiwen` as sysdba;

 

CREATE USER TOOL

  IDENTIFIED BY tool

  DEFAULT TABLESPACE EXAMPLE

  TEMPORARY TABLESPACE TEMP

  PROFILE DEFAULT

  ACCOUNT UNLOCK;

  -- 2 Rolesfor TOOL

  GRANT RESOURCE TO TOOL;

  GRANT CONNECT TO TOOL;

  ALTER USER TOOL DEFAULT ROLE NONE;

  -- 3 SystemPrivileges for TOOL

  GRANT CREATE SESSION TO TOOL;

  GRANT CREATE TABLE TO TOOL;

  GRANT UNLIMITED TABLESPACE TO TOOL;

 

CREATE GLOBAL TEMPORARY TABLE tool.PLAN_TABLE

(

  STATEMENT_ID       VARCHAR2(30 BYTE),

  PLAN_ID            NUMBER,

  TIMESTAMP          DATE,

  REMARKS            VARCHAR2(4000 BYTE),

  OPERATION          VARCHAR2(30 BYTE),

  OPTIONS            VARCHAR2(255 BYTE),

  OBJECT_NODE        VARCHAR2(128 BYTE),

  OBJECT_OWNER       VARCHAR2(30 BYTE),

  OBJECT_NAME        VARCHAR2(30 BYTE),

  OBJECT_ALIAS       VARCHAR2(65 BYTE),

  OBJECT_INSTANCE    INTEGER,

  OBJECT_TYPE        VARCHAR2(30 BYTE),

  OPTIMIZER          VARCHAR2(255 BYTE),

  SEARCH_COLUMNS     NUMBER,

  ID                 INTEGER,

  PARENT_ID          INTEGER,

  DEPTH              INTEGER,

  POSITION           INTEGER,

  COST               INTEGER,

  CARDINALITY        INTEGER,

  BYTES              INTEGER,

  Oracle认证:学好Oracle的六条总结 iis7站长之家_TAG          VARCHAR2(255 BYTE),

  PARTITION_START    VARCHAR2(255 BYTE),

  PARTITION_STOP     VARCHAR2(255 BYTE),

  PARTITION_ID       INTEGER,

  OTHER              LONG,

  OTHER_XML          CLOB,

  DISTRIBUTION       VARCHAR2(30 BYTE),

  CPU_COST           INTEGER,

  IO_COST            INTEGER,

  TEMP_SPACE         INTEGER,

  ACCESS_PREDICATES  VARCHAR2(4000 BYTE),

  FILTER_PREDICATES  VARCHAR2(4000 BYTE),

  PROJECTION         VARCHAR2(4000 BYTE),

  TIME               INTEGER,

  QBLOCK_NAME        VARCHAR2(30 BYTE)

)

ON COMMIT PRESERVE ROWS;

 

grant all on TOOL.PLAN_TABLE to public;

 

CREATE PUBLIC SYNONYM PLAN_TABLE FOR TOOL.PLAN_TABLE;

 

 

使用方法

truncate table PLAN_TABL;

explain plan select * from emp;

select plan_table_output from table(dbms_xplan.display('plan_table',null,'serial'));

 

演示:

conn scott/tiger

SQL> explain plan for select * from dept where deptno=10;

Explained

SQL> select plan_table_output fromtable(dbms_xplan.display('plan_table',null,'serial'));

 

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------

Plan hash value: 3383998547

--------------------------------------------------------------------------

| Id  |Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------

|   0 | SELECTSTATEMENT  |      |    1 |    16 |     4  (0)| 00:00:01 |

|*  1 |  TABLE ACCESS FULL| DEPT |     1 |   16 |     4   (0)| 00:00:01|

--------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

   1 -filter("DEPTNO"=10)

 

13 rows selected

 

执行计划解读:--估算

表v$sql_plan

cost概念

cardinality

 

 

 

查询路径—估算树

create table e

as select * from emp

 

create table d

as

select * from dept

 

 

Explain plan for

selectename,dname from d,e where e.deptno=d.deptno

 

select * from table(dbms_xplan.display());

 

 

Plan hash value: 1127375450

 

---------------------------------------------------------------------------

| Id | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |

---------------------------------------------------------------------------

|   0 | SELECT STATEMENT   |      |   15 |   630 |    7  (15)| 00:00:01 |

|*  1 |  HASH JOIN         |     |    15 |   630 |     7  (15)| 00:00:01 |

|   2 |   TABLE ACCESS FULL| D    |    4 |    88 |    3   (0)| 00:00:01 |

|   3 |   TABLE ACCESS FULL| E    |    15 |   300 |     3   (0)| 00:00:01 |

---------------------------------------------------------------------------

 

Predicate Information (identified byoperation id):

---------------------------------------------------

 

   1 - access("E"."DEPTNO"="D"."DEPTNO")

 

Note

-----

   - dynamic sampling used for this statement

 

Explain plan for

select ename,dnamefrom d, (select ename,deptno from e where rownum<2) e where e.deptno=d.deptno

 

select * from table(dbms_xplan.display());

 

Plan hash value: 1791846393

 

-----------------------------------------------------------------------------

| Id | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |

-----------------------------------------------------------------------------

|   0 | SELECT STATEMENT     |      |    1 |    42 |    5   (0)| 00:00:01 |

|   1 |  NESTEDLOOPS        |      |    1 |   42 |     5  (0)| 00:00:01 |

|   2 |   VIEW               |      |    1 |    20 |    2   (0)| 00:00:01 |

|*  3 |    COUNTSTOPKEY     |      |      |       |            |          |

|   4 |     TABLE ACCESS FULL| E    |    15 |   300 |     2   (0)| 00:00:01 |

|*  5 |   TABLE ACCESS FULL  | D    |     1 |    22 |     3   (0)| 00:00:01 |

-----------------------------------------------------------------------------

 

Predicate Information (identified byoperation id):

---------------------------------------------------

 

   3 - filter(ROWNUM<2)

   5 -filter("E"."DEPTNO"="D"."DEPTNO")

 

Note

-----

   - dynamic sampling used for this statement

 

 

驱动表概念

估算树

 

从左到右 从下到上

 

autotrace

Oracle_homesqlplusadmin

 

conn sys/pwd@tiwen as sysdba;

drop role plustrace;

create role plustrace;

 

grant select on v_$sesstat to plustrace;

grant select on v_$statname to plustrace;

grant select on v_$mystat to plustrace;

grant plustrace to dba with admin option;

grant plustrace  to public;

 

grant select on v_$sesstat to public;

grant select on v_$statname to public;

grant select on v_$mystat to public;

grant plustrace to dba with admin option;

grant plustrace  to public;

 

 

grant alter session to public;

 

使用命令

set autotrace on

set autotrace off

set autotrace on explain

set autotrace on statistics

set autotrace traceonly

 

 

autotrace输出内容解释

recursive calls:执行语句时、调用的oracle内部语句(如分析所用的sql)和其他语句(如触发器)。

测试举例:

举例1

conn scott/tiger@tiwen

set autotrace on

alter system flush shared_pool

set autotrace on

select * from emp

select * from emp

 

 

举例2

create table exchage_table

(

bill_code   number(10),

exchage_rate  number(16,3)

)

BILL_CODE

EXCHAGE_RATE

100

4.678

200

5.235

300

5.430

400

2.654

 

 

create or replace functiontoday_exchage(p_code in number) return number is

v_exange number(16,3);

begin

selectexchage_rate into v_exange from exchage_table

wherebill_code=p_code;

returnv_exange;

end;

 

create table affair

(

 trans_id  number(10),

 bill_code number(10),

 balance   number(16,2)

)

 

TRANS_ID

BILL_CODE

BALANCE

1000

100

1234.00

2000

200

4324.32

3000

300

65464.23

 

较好的写法

select 

trans_id,

(select exchage_rate

fromexchage_table

wherebill_code=affair.bill_code )*balance

from affair

 

举例3

drop table tppp purge  

create table tppp(p integer)

 

create or replace trigger t_trigger

  before insert on tppp 

  for each row

declare

  -- local variables here

begin

if:new.p>5 then

raise_application_error(-20001,'bbbbbbbb');

end if;

 

end t_trigger;

 

统计信息

----------------------------------------------------------

         29 recursive calls

         19  db block gets

         54 consistent gets

          0  physical reads

       1172  redo size

        676  bytes sent via SQL*Net to client

        627  bytes received via SQL*Net from client

          3  SQL*Net roundtrips to/from client

          1  sorts (memory)

          0 sorts (disk)

          9  rows processed

 

在一次运行

 

统计信息

---------------------------------------------------------

         29  recursive calls

          0  db block gets

        117  consistent gets

          1  physical reads

          0  redo size

        483  bytes sent via SQL*Net to client

        416 bytes received via SQL*Net from client

          2  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

          9  rows processed

drop  trigger t_trigger;

 

统计信息

----------------------------------------------------------

          0 recursive calls

          0  db block gets

        108  consistent gets

          0  physical reads

          0  redo size

        483  bytes sent via SQL*Net to client

        416  bytes received via SQL*Net from client

          2  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

          9  rows processed 

解决方法为

1、 编写高效的trigger

2、 用过程代替trigger


    
 
 

您可能感兴趣的文章:

  • Oracle 数据库(oracle Database)性能调优技术详解
  • Oracle收购TimesTen 提高数据库软件性能
  • 关于提高Oracle数据库性能的四个错误认识
  • 用Oracle动态性能视图采集查询调优数
  • Oracle性能究极优化 上第1/2页
  • 用PHP连mysql比oracle数据库性能好
  • Oracle性能究极优化 下
  • 保持Oracle数据优良性能的技巧分享
  • 100分寻求最优化的连接oracle的java程序,请给我讲出理由,我是初学者,在做项目时不想让连接oracle影响我的程序性能
  • Oracle数据库应用程序性能优化探究
  • oracle 使用递归的性能提示测试对比
  • 善用Oracle表空间设计提升数据库性能
  • Oracle性能究极优化
  • Oracle SQL性能优化系列学习一
  • Oracle SQL性能优化系列学习三
  • Linux平台下如何监控Oracle数据库的性能
  • Oracle SQL性能优化系列学习二
  • 性能陷阱:Oracle表连接中范围比较
  • 基于Oracle的高性能动态SQL程序开发
  • 浅谈Oracle性能优化可能出现的问题
  • 如何保持Oracle数据库的优良性能
  • oracle 时间格式的调整
  • Oracle tablespace表空间调整
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle认证:学好Oracle的六条总结
  • oracle服务启动与停止经验总结
  • Linux下Oracle常见安装错误总结及参考案例
  • Oracle中三种表连接算法的总结
  • Oracle、DB2、PostgreSQL之Sequence大总结
  • Oracle索引(B*tree与Bitmap)的学习总结
  • [Oracle] dbms_metadata.get_ddl 的使用方法总结
  • Oracle数据库中的字符处理技巧总结
  • Oracle数据字典的学习总结
  • Oracle 数据库优化实战心得总结
  • 深入ORACLE迁移到MYSQL的总结分析
  • oracle数据库sql的优化总结
  • Oracle 游标使用总结
  • oracle 日期时间函数使用总结
  • Oracle 存储过程总结(一、基本应用)
  • Oracle 存储过程总结 二、字符串处理相关函数
  • ORACLE 常用函数总结(80个)第1/2页
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3