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语句执行效率低下通常表现为资源过度消耗,这可能包括CPU时间、内存使用、磁盘I/O等。具体分析可从以下几个方面入手: 1. **响应时间...
为提高oracle的sql执行效率,优化性能,通过oracle表分析功能进行调整,能加快sql查询效率2倍以上
Oracle SQL 语句执行效率问题查找与解决方法 一、 Oracle SQL 语句执行效率问题查找方法 Oracle 数据库系统中, SQL 语句的执行效率问题是一个非常重要的问题。在实际应用中,我们经常会碰到一些性能不佳的 SQL ...
ORACLE 优化 SQL 语句提高 Oracle 执行效率 Oracle 是一个功能强大的关系数据库管理系统,然而,如果不正确地使用 SQL 语句,可能会导致执行效率低下。为了提高 Oracle 的执行效率,需要遵循一些最佳实践。下面是...
除了查看SQL语句本身,我们还需要关注会话的等待事件,这些事件可能会影响SQL语句的执行效率。 ```sql -- 查询当前会话的等待事件 select event, count(*) from v$session where event not in ('SQL*...
### 提高Oracle中SQL的执行效率 在Oracle数据库中,SQL查询性能的优化对于提升整个系统的响应速度至关重要。本文将详细介绍几种有效的方法来提高Oracle中SQL的执行效率,包括选择合适的表名顺序、优化WHERE子句中的...
总之,监控和分析SQL执行次数与效率是Oracle数据库性能调优的关键环节。定期检查这些信息可以帮助预防并发问题,提高系统整体性能,并确保数据库资源的高效利用。希望本文提供的示例和方法对你的工作有所帮助,如果...
Oracle 在内部执行了许多工作:解析 SQL 语句、估算索引的利用率、绑定变量、读数据块等。因此,减少访问数据库的次数可以提高查询效率。 五、在 SQL*Plus, SQL*Forms 和 Pro*C 中重新设置 ARRAYSIZE 参数 可以...
在Oracle数据库管理中,查看SQL语句的执行计划是一项重要的技能,这有助于优化查询性能、诊断性能问题等。AUTOTRACE是Oracle提供的一种强大的工具,用于自动展示SQL语句的执行计划以及相关统计信息,帮助DBA和开发...
本文将深入探讨如何在Linux环境下设置Crontab来定期执行Oracle SQL脚本,这一过程不仅能够提高工作效率,还能确保数据的及时更新与准确性。 ### 关键知识点详解 #### Crontab:Linux下的任务调度工具 Crontab是...
随着技术的发展,新的优化策略和工具不断出现,保持学习和适应能力是提高SQL执行效率的关键。 总之,优化SQL语句执行效率是一个多方面的工作,需要结合具体业务场景,综合运用索引策略、SQL编写技巧、数据库配置和...
总之,SQLTracker作为一款高效的Oracle SQL监视工具,它能帮助数据库管理员和开发人员深入理解SQL执行情况,及时发现并解决性能问题,从而提高数据库系统的响应速度和稳定性。在Windows 11环境下无须额外安装.NET ...
- SQL Developer 提供了工具帮助优化 SQL 语句,提高执行效率。 3. **SQL 脚本管理:** - 可以将常用的 SQL 语句保存为脚本文件,便于重复使用。 - SQL Developer 支持脚本文件的管理,包括创建、编辑和执行。 ...
1. **实时监控**:用户可以设置SQL Monitor来实时跟踪特定的SQL语句,或者对整个数据库的SQL执行情况进行全局监控。 2. **性能指标**:显示每个SQL语句的执行时间、CPU使用率、I/O操作、缓冲区命中率等关键指标,...
首先,了解SQL执行效率的基础在于理解查询执行计划。Oracle使用解析器解析SQL语句,然后生成执行计划,这个计划决定了数据如何被检索和处理。通过分析执行计划,我们可以发现潜在的性能瓶颈,如全表扫描、索引不当或...
在数据库管理系统中,尤其是在使用Oracle数据库时,SQL语句的执行效率对于保证系统性能至关重要。在《ORACLE SQL语句执行效率研究》这篇文章中,作者魏彬深入分析了影响SQL语句执行效率的各种因素,并探讨了提高查询...
2. **绑定变量**:使用绑定变量可以防止硬解析,提高SQL执行效率,减少解析开销。 3. **执行计划**:通过EXPLAIN PLAN分析SQL执行路径,了解数据库如何处理查询,找出可能导致性能问题的步骤。 4. **索引策略**:...
在这个场景中,我们可以利用批处理文件来简化Oracle数据库的操作,如删除用户、创建用户、创建表和触发器,以及执行其他SQL语句。 首先,我们需要了解如何在批处理文件中连接Oracle数据库。这通常通过Oracle的...
### Oracle查看SQL执行计划与SQL性能分析 #### 一、引言 在数据库管理与优化领域,SQL执行计划是评估查询效率的关键因素之一。通过理解并优化SQL执行计划,可以显著提升应用程序的性能。本文将详细介绍如何在...
在Oracle数据库管理中,批量执行SQL脚本是常见的任务...通过以上方法,我们可以高效地在Oracle中批量执行多个带参数的SQL文件,实现自动化处理,提升工作效率。在实际应用中,可以根据具体需求和环境选择最适合的方案。