`
itspace
  • 浏览: 978499 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle 定位没有使用绑定变量的SQL

阅读更多
[ora10g@hzmc ~]$ export ORACLE_SID=drb
[ora10g@hzmc ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.3.0 - Production on Sat Sep 25 12:27:49 2010

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> create table t1 as select sql_text from v$sqlarea;

Table created.

SQL> alter table t1 add sql_text_wo_constants varchar2(1000);

Table altered.

SQL> create or replace function
  2  remove_constants( p_query in varchar2 ) return varchar2
  3  as
  4      l_query long;
  5      l_char  varchar2(1);
  6      l_in_quotes boolean default FALSE;
  7  begin
  8      for i in 1 .. length( p_query )
  9      loop
10           l_char := substr(p_query,i,1);
11           if ( l_char = '''' and l_in_quotes )
12           then
13               l_in_quotes := FALSE;
14           elsif ( l_char = '''' and NOT l_in_quotes )
15           then
16               l_in_quotes := TRUE;
17               l_query := l_query || '''#';
18           end if;
19           if ( NOT l_in_quotes ) then
20               l_query := l_query || l_char;
21           end if;
22       end loop;
23       l_query := translate( l_query, '0123456789', '@@@@@@@@@@' );
24       for i in 0 .. 8 loop
25           l_query := replace( l_query, lpad('@',10-i,'@'), '@' );
26           l_query := replace( l_query, lpad(' ',10-i,' '), ' ' );
27       end loop;
28       return upper(l_query);
29   end;
30   /

Function created.

SQL>  update t1 set sql_text_wo_constants = remove_constants(sql_text);

4569 rows updated.

SQL> commit;

Commit complete.

SQL> select sql_text_wo_constants, count(*)  from t1
  2  group by sql_text_wo_constants having count(*) > 100  order by 2
  3   /

SQL_TEXT_WO_CONSTANTS
--------------------------------------------------------------------------------
  COUNT(*)
----------
DELETE FROM MC$DR_BACKUPPIECE_DATAFILE WHERE BSET_KEY=@
      1385

DELETE FROM MC$DR_BACKUPPIECE WHERE BSET_KEY=@
      1385

DELETE FROM MC$DR_BACKUPSET WHERE BS_ID=@ AND SUB_ID=@ AND DB_KEY=@ AND DB_ID=@
AND BSET_KEY=@
      1386

SQL_TEXT_WO_CONSTANTS
--------------------------------------------------------------------------------
  COUNT(*)
分享到:
评论

相关推荐

    查找未使用绑定变量sql.sql

    查找未使用绑定变量sql.sql

    oracle 数据库的绑定变量特性及应用

    如果不使用绑定变量,每次查询都是一个新的查询,这将导致 Oracle 需要分析、解析、安全检查、优化等一系列操作。这些操作将消耗大量的系统资源,降低用户的使用数量,并且会把优化好的其它查询语句从共享池中踢出。...

    浅谈oracle 数据库的绑定变量特性及应用

    - **绑定变量的优化问题**:在某些情况下,Oracle的优化器可能无法准确地估计使用绑定变量的SQL语句的执行成本,可能导致执行计划不佳。这时可以通过绑定变量提示(bind peeking)或重写SQL语句来解决。 - **避免...

    也谈oracle 数据库的绑定变量特性及应用

    - **提高性能**:使用绑定变量,Oracle只需解析和优化查询一次,然后将执行计划存储在共享池中。后续的查询可以重用这个执行计划,避免了重复的解析和优化过程,极大地提升了系统响应速度。 - **减少内存消耗**:...

    在Java中实现Oracle变量的绑定方法 .doc

    为了解决这些问题,我们可以使用预编译的PreparedStatement对象来绑定变量,例如: ```java String sql = "select name from oms_user where id=?"; PreparedStatement pstmt = connection.prepareStatement(sql); ...

    Java中Oracle操作绑定变量使用用户工具模块解决方案

    ### Java中Oracle操作绑定变量使用用户工具模块解决方案 #### 一、背景介绍 在Java开发过程中,特别是与Oracle数据库交互的应用场景中,SQL语句的编写及执行效率一直是开发者关注的重点之一。为了提高SQL语句的...

    Oracle 中的变量绑定

    不使用绑定变量,例如在Java程序中直接将变量值拼接到SQL语句中,会导致每次SQL语句的值改变时,Oracle都需要重新解析SQL,这称为硬分析(Hard Parse)。硬分析不仅消耗CPU资源,还会增加数据库的负载,因为每次都...

    sql绑定变量

    标题与描述中的“SQL绑定变量”这一知识点,主要聚焦于SQL语句中如何使用变量,尤其是在存储过程或函数中动态构建SQL语句时的关键技术。绑定变量允许在SQL语句中使用程序变量作为参数,这不仅提高了代码的可读性和...

    动态SQL与绑定变量

    动态SQL与绑定变量是数据库编程中的重要概念,尤其在Oracle数据库中被广泛应用。动态SQL允许在运行时构建和执行SQL语句,而绑定变量则是在动态SQL中用于替代具体值的占位符,使得SQL语句更为灵活和高效。 ### 1. ...

    Oracle_数据库的绑定变量特性及应用终稿.pdf

    Oracle数据库的绑定变量是提升系统性能和可扩展性的重要特性,尤其对于大型企业级应用而言,正确使用绑定变量能够显著优化数据库操作。绑定变量的主要作用是减少解析和优化过程,提高查询效率,节省系统资源。 首先...

    Oracle数据库的绑定变量特性及应用.pdf

    绑定变量的使用限制主要在于,它们需要配合PL/SQL或类似环境来运行,因为这些环境能够提供变量的值。在上面的例子中,未使用绑定变量的查询在循环中每执行一次都会产生新的查询计划,消耗时间随着循环次数增加而增长...

    如何绑定变量

    ### 如何绑定变量 在OLTP(Online Transaction Processing...通过以上方法,我们可以有效地在Oracle数据库中使用绑定变量来优化SQL语句的执行效率,特别是在OLTP系统中,这种方法对于提升系统的整体性能具有重要意义。

    Oracle数据库绑定变量特性及应用

    Oracle数据库的绑定变量特性是其优化SQL性能的关键技术之一,对于构建高效、可扩展和稳定的数据库系统至关重要。本文将深入探讨绑定变量的原理、优势以及如何在实际应用中使用。 首先,为什么我们要使用绑定变量?...

    Oracle绑定变量窥视功能深度分析.pdf

    绑定变量窥视功能是 Oracle 数据库中的一种重要功能,可以提高数据库性能,减少 CPU 的使用率,提高 SQL 语句的执行速度。但是,使用绑定变量需要注意一些问题,例如,第一次传人的绑定变量的值可能会导致全表扫描的...

    oracle 的绑定变量

    绑定变量的作用在于,即使SQL的谓词部分(如WHERE子句)的值不同,Oracle也能通过使用相同的哈希值将它们视为同一SQL。例如,使用绑定变量":X"的SQL `SELECT salary FROM user WHERE name=:X`可以替代多个特定名字的...

    oracle 定位sql语句

    9. **绑定变量**:绑定变量可以避免SQL语句的重复解析,降低CPU争用,但可能影响SQL优化,因为绑定变量使得统计信息难以精确反映实际的查询分布。 10. **稳定执行计划**:通过启用查询重写、星型转换和设定特定版本...

    PLSQL绑定变量用法小结归纳.pdf

    由于我们使用了绑定变量,所以Oracle只需要软分析一次,而不需要每次都进行硬分析,从而提高了数据库的性能。 需要注意的是,绑定变量可以在PL/SQL过程中使用,例如: Declare i number; Begin i := 1; Select ...

    在PHP中利用绑定变量提高Oracle的存储效率.pdf

    在处理大量动态查询时,使用绑定变量可以显著减少Oracle的解析次数,减轻SGA的压力,进而提升系统的整体性能。 绑定变量的工作原理是:在PHP代码中,我们不直接将变量值插入到SQL语句中,而是声明一个占位符(如`:...

    Oracle Sql高效语句的写法诀窍

    在编写Oracle SQL语句时,正确和高效地使用绑定变量能够大幅度提升数据库的性能,并且节约宝贵的计算资源。合理的SQL编程习惯应当包括避免SQL语句硬编码,尽量使用绑定变量来实现代码的复用,减少解析时间,从而提高...

Global site tag (gtag.js) - Google Analytics