`

oracle 查看 sql 执行效率

阅读更多
http://wenku.baidu.com/view/eaed94c2d5bbfd0a79567329.html
==============================

SQL效率检查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中v$sqlarea与v$sql_plan全面分析


•        v$sql、v$sqlarea 、v$sqltext
这三个视图都可以用于查询共享池中已经解析过的SQL语句及其相关信息。
V$SQL中列出了共享SQL区中所有语句的信息,它不包含GROUP BY字句,并且为每一条SQL语句中单独存放一条记录;
V$SQLAREA中一条记录显示了一条共享SQL区中的统计信息。它提供了有在内存中、解析过的和准备运行的SQL语句的统计信息;
V$SQLTEXT包含了库缓存中所有共享游标对应的SQL语句。它将SQL语句分片显示。
下面介绍一下我常用的V$SQLAREA的结构:
字段 数据类型 说明
SQL_TEXT VARCHAR2(1000) 游标中SQL语句的前1000个字符。
SHARABLE_MEM NUMBER 被游标占用的共享内存大小。如果存在多个子游标,则包含所有子游标占用的共享内存大小。
PERSISTENT_MEM NUMBER 用于一个打开这条语句的游标的生命过程中的固定内存大小。如果存在多个子游标,则包含所有子游标生命过程中的固定内存大小。
RUNTIME_MEM NUMBER 一个打开这条语句的游标的执行过程中的固定内存大小。如果存在多个子游标,则包含所有子游标执行过程中的固定内存大小。
SORTS NUMBER 所有子游标执行语句所导致的排序次数。
VERSION_COUNT NUMBER 缓存中关联这条语句的子游标数。
LOADED_VERSIONS NUMBER 缓存中载入了这条语句上下文堆(KGL heap 6)的子游标数。
OPEN_VERSIONS NUMBER 打开语句的子游标数。
USERS_OPENING NUMBER 打开这些子游标的用户数。
FETCHES NUMBER SQL语句的fetch数。
EXECUTIONS NUMBER 所有子游标的执行这条语句次数。
USERS_EXECUTING NUMBER 通过子游标执行这条语句的用户数。
LOADS NUMBER 语句被载入和重载入的次数
FIRST_LOAD_TIME VARCHAR2(19) 语句被第一次载入的时间戳。
INVALIDATIONS NUMBER 所以子游标的非法次数。
PARSE_CALLS NUMBER 所有子游标对这条语句的解析调用次数。
DISK_READS NUMBER 所有子游标运行这条语句导致的读磁盘次数。
BUFFER_GETS NUMBER 所有子游标运行这条语句导致的读内存次数。
ROWS_PROCESSED NUMBER 这条语句处理的总记录行数。
COMMAND_TYPE NUMBER Oracle命令类型代号。
OPTIMIZER_MODE VARCHAR2(10) 执行这条的优化器模型。
PARSING_USER_ID NUMBER 第一次解析这条语句的用户的ID。
PARSING_SCHEMA_ID NUMBER 第一次解析这条语句所用的schema的ID。
KEPT_VERSIONS NUMBER 所有被DBMS_SHARED_POOL包标识为保持(Keep)状态的子游标数。
ADDRESS RAW(4 | 指向语句的地址
HASH_VALUE NUMBER 这条语句在library cache中hash值。
MODULE VARCHAR2(64) 在第一次解析这条语句是通过调用DBMS_APPLICATION_INFO.SET_MODULE设置的模块名称。
MODULE_HASH NUMBER 模块的Hash值
ACTION VARCHAR2(64) 在第一次解析这条语句是通过调用DBMS_APPLICATION_INFO.SET_ACTION设置的动作名称。
ACTION_HASH NUMBER 动作的Hash值
SERIALIZABLE_ABORTS NUMBER 所有子游标的事务无法序列化的次数,这会导致ORA-08177错误。
IS_OBSOLETE VARCHAR2(1) 游标是否被废除(Y或N)。当子游标数太多了时可能会发生。
CHILD_LATCH NUMBER 为了包含此游标的子latch数。
查看当前会话所执行的语句以及会话相关信息:
SQL> select a.sid||'.'||a.SERIAL#, a.username, a.TERMINAL, a.program, s.sql_text
    2    from v$session a, v$sqlarea s
    3    where a.sql_address = s.address(+)
    4    and a.sql_hash_value = s.hash_value(+)
    5    order by a.username, a.sid;

... ...

SQL>
•        v$sql_plan
视图V$SQL_PLAN包含了library cache中所有游标的执行计划。通过结合v$sqlarea可以查出library cache中所有语句的查询计划。先从v$sqlarea中得到语句的地址,然后在由v$sql_plan查出它的查询计划:
SQL> select lpad(' ', 2*(level-1))||operation "Operation",
    2           options "Options",
    3           decode(to_char(id), '0', 'Cost='||nvl(to_char(position), 'n/a'), object_name) "Object Name",
    4           substr(optimizer, 1, 6) "Optimizer"
    5     from v$sql_plan a
    6    start with address = 'C0000000FCCDEDA0'
    7    and id = 0
    8    connect by prior id = a.parent_id
    9    and prior a.address = a.address
10    and prior a.hash_value = a.hash_value;

Operation             Options                Object Name            Optimizer
------------------- -------------------- -------------------- ---------
SELECT STATEMENT                           Cost=0                 CHOOSE
    NESTED LOOPS
      INDEX             RANGE SCAN             CSS_BL_CNTR_IDX1       ANALYZ
      INDEX             RANGE SCAN             CSS_BKG_BL_ASSN_UQ1    ANALYZ

SQL>

======================================================

分享到:
评论

相关推荐

    Oracle中SQL语句执行效率的查找与解决

    ### Oracle SQL执行效率:查找与解决 #### 一、资源消耗分析 在Oracle中,SQL语句执行效率低下通常表现为资源过度消耗,这可能包括CPU时间、内存使用、磁盘I/O等。具体分析可从以下几个方面入手: 1. **响应时间...

    oracle优化sql执行效率-表分析

    为提高oracle的sql执行效率,优化性能,通过oracle表分析功能进行调整,能加快sql查询效率2倍以上

    Oracle的SQL语句执行效率问题查找与解决方法文.pdf

    Oracle SQL 语句执行效率问题查找与解决方法 一、 Oracle SQL 语句执行效率问题查找方法 Oracle 数据库系统中, SQL 语句的执行效率问题是一个非常重要的问题。在实际应用中,我们经常会碰到一些性能不佳的 SQL ...

    ORACLE 优化sql语句提高oracle执行效率 .doc

    ORACLE 优化 SQL 语句提高 Oracle 执行效率 Oracle 是一个功能强大的关系数据库管理系统,然而,如果不正确地使用 SQL 语句,可能会导致执行效率低下。为了提高 Oracle 的执行效率,需要遵循一些最佳实践。下面是...

    oracle 查看当前会话执行的sql语句

    除了查看SQL语句本身,我们还需要关注会话的等待事件,这些事件可能会影响SQL语句的执行效率。 ```sql -- 查询当前会话的等待事件 select event, count(*) from v$session where event not in ('SQL*...

    提高Oracle中SQL的执行效率

    ### 提高Oracle中SQL的执行效率 在Oracle数据库中,SQL查询性能的优化对于提升整个系统的响应速度至关重要。本文将详细介绍几种有效的方法来提高Oracle中SQL的执行效率,包括选择合适的表名顺序、优化WHERE子句中的...

    oracle查看执行最慢与查询次数最多的sql语句

    总之,监控和分析SQL执行次数与效率是Oracle数据库性能调优的关键环节。定期检查这些信息可以帮助预防并发问题,提高系统整体性能,并确保数据库资源的高效利用。希望本文提供的示例和方法对你的工作有所帮助,如果...

    Oracle提高SQL查询效率(SQL优化).doc

    Oracle 在内部执行了许多工作:解析 SQL 语句、估算索引的利用率、绑定变量、读数据块等。因此,减少访问数据库的次数可以提高查询效率。 五、在 SQL*Plus, SQL*Forms 和 Pro*C 中重新设置 ARRAYSIZE 参数 可以...

    oracle怎么查看执行计划

    在Oracle数据库管理中,查看SQL语句的执行计划是一项重要的技能,这有助于优化查询性能、诊断性能问题等。AUTOTRACE是Oracle提供的一种强大的工具,用于自动展示SQL语句的执行计划以及相关统计信息,帮助DBA和开发...

    Linux下定时自动执行Oracle_SQL

    本文将深入探讨如何在Linux环境下设置Crontab来定期执行Oracle SQL脚本,这一过程不仅能够提高工作效率,还能确保数据的及时更新与准确性。 ### 关键知识点详解 #### Crontab:Linux下的任务调度工具 Crontab是...

    优化sql语句执行效率几点注意事项

    随着技术的发展,新的优化策略和工具不断出现,保持学习和适应能力是提高SQL执行效率的关键。 总之,优化SQL语句执行效率是一个多方面的工作,需要结合具体业务场景,综合运用索引策略、SQL编写技巧、数据库配置和...

    Oracle的SQL监视工具SQLTracker

    总之,SQLTracker作为一款高效的Oracle SQL监视工具,它能帮助数据库管理员和开发人员深入理解SQL执行情况,及时发现并解决性能问题,从而提高数据库系统的响应速度和稳定性。在Windows 11环境下无须额外安装.NET ...

    ORACLE_SQLDeveloper使用教程

    - SQL Developer 提供了工具帮助优化 SQL 语句,提高执行效率。 3. **SQL 脚本管理:** - 可以将常用的 SQL 语句保存为脚本文件,便于重复使用。 - SQL Developer 支持脚本文件的管理,包括创建、编辑和执行。 ...

    Oracle数据库sql语句 跟踪器

    1. **实时监控**:用户可以设置SQL Monitor来实时跟踪特定的SQL语句,或者对整个数据库的SQL执行情况进行全局监控。 2. **性能指标**:显示每个SQL语句的执行时间、CPU使用率、I/O操作、缓冲区命中率等关键指标,...

    ORACLE+SQL效率优化.rar

    首先,了解SQL执行效率的基础在于理解查询执行计划。Oracle使用解析器解析SQL语句,然后生成执行计划,这个计划决定了数据如何被检索和处理。通过分析执行计划,我们可以发现潜在的性能瓶颈,如全表扫描、索引不当或...

    ORACLE SQL语句执行效率研究.pdf

    在数据库管理系统中,尤其是在使用Oracle数据库时,SQL语句的执行效率对于保证系统性能至关重要。在《ORACLE SQL语句执行效率研究》这篇文章中,作者魏彬深入分析了影响SQL语句执行效率的各种因素,并探讨了提高查询...

    压测Oracle的SQL语句的性能情况

    2. **绑定变量**:使用绑定变量可以防止硬解析,提高SQL执行效率,减少解析开销。 3. **执行计划**:通过EXPLAIN PLAN分析SQL执行路径,了解数据库如何处理查询,找出可能导致性能问题的步骤。 4. **索引策略**:...

    oracle利用批处理文件执行SQL语句,bat连接oracle数据库并执行语句

    在这个场景中,我们可以利用批处理文件来简化Oracle数据库的操作,如删除用户、创建用户、创建表和触发器,以及执行其他SQL语句。 首先,我们需要了解如何在批处理文件中连接Oracle数据库。这通常通过Oracle的...

    Oracle查看SQL执行计划SQL性能分析.docx

    ### Oracle查看SQL执行计划与SQL性能分析 #### 一、引言 在数据库管理与优化领域,SQL执行计划是评估查询效率的关键因素之一。通过理解并优化SQL执行计划,可以显著提升应用程序的性能。本文将详细介绍如何在...

    Oracle批量执行传多个参数多个SQL文件

    在Oracle数据库管理中,批量执行SQL脚本是常见的任务...通过以上方法,我们可以高效地在Oracle中批量执行多个带参数的SQL文件,实现自动化处理,提升工作效率。在实际应用中,可以根据具体需求和环境选择最适合的方案。

Global site tag (gtag.js) - Google Analytics