[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
如果不使用绑定变量,每次查询都是一个新的查询,这将导致 Oracle 需要分析、解析、安全检查、优化等一系列操作。这些操作将消耗大量的系统资源,降低用户的使用数量,并且会把优化好的其它查询语句从共享池中踢出。...
- **绑定变量的优化问题**:在某些情况下,Oracle的优化器可能无法准确地估计使用绑定变量的SQL语句的执行成本,可能导致执行计划不佳。这时可以通过绑定变量提示(bind peeking)或重写SQL语句来解决。 - **避免...
- **提高性能**:使用绑定变量,Oracle只需解析和优化查询一次,然后将执行计划存储在共享池中。后续的查询可以重用这个执行计划,避免了重复的解析和优化过程,极大地提升了系统响应速度。 - **减少内存消耗**:...
为了解决这些问题,我们可以使用预编译的PreparedStatement对象来绑定变量,例如: ```java String sql = "select name from oms_user where id=?"; PreparedStatement pstmt = connection.prepareStatement(sql); ...
### Java中Oracle操作绑定变量使用用户工具模块解决方案 #### 一、背景介绍 在Java开发过程中,特别是与Oracle数据库交互的应用场景中,SQL语句的编写及执行效率一直是开发者关注的重点之一。为了提高SQL语句的...
不使用绑定变量,例如在Java程序中直接将变量值拼接到SQL语句中,会导致每次SQL语句的值改变时,Oracle都需要重新解析SQL,这称为硬分析(Hard Parse)。硬分析不仅消耗CPU资源,还会增加数据库的负载,因为每次都...
标题与描述中的“SQL绑定变量”这一知识点,主要聚焦于SQL语句中如何使用变量,尤其是在存储过程或函数中动态构建SQL语句时的关键技术。绑定变量允许在SQL语句中使用程序变量作为参数,这不仅提高了代码的可读性和...
动态SQL与绑定变量是数据库编程中的重要概念,尤其在Oracle数据库中被广泛应用。动态SQL允许在运行时构建和执行SQL语句,而绑定变量则是在动态SQL中用于替代具体值的占位符,使得SQL语句更为灵活和高效。 ### 1. ...
Oracle数据库的绑定变量是提升系统性能和可扩展性的重要特性,尤其对于大型企业级应用而言,正确使用绑定变量能够显著优化数据库操作。绑定变量的主要作用是减少解析和优化过程,提高查询效率,节省系统资源。 首先...
绑定变量的使用限制主要在于,它们需要配合PL/SQL或类似环境来运行,因为这些环境能够提供变量的值。在上面的例子中,未使用绑定变量的查询在循环中每执行一次都会产生新的查询计划,消耗时间随着循环次数增加而增长...
### 如何绑定变量 在OLTP(Online Transaction Processing...通过以上方法,我们可以有效地在Oracle数据库中使用绑定变量来优化SQL语句的执行效率,特别是在OLTP系统中,这种方法对于提升系统的整体性能具有重要意义。
Oracle数据库的绑定变量特性是其优化SQL性能的关键技术之一,对于构建高效、可扩展和稳定的数据库系统至关重要。本文将深入探讨绑定变量的原理、优势以及如何在实际应用中使用。 首先,为什么我们要使用绑定变量?...
绑定变量窥视功能是 Oracle 数据库中的一种重要功能,可以提高数据库性能,减少 CPU 的使用率,提高 SQL 语句的执行速度。但是,使用绑定变量需要注意一些问题,例如,第一次传人的绑定变量的值可能会导致全表扫描的...
绑定变量的作用在于,即使SQL的谓词部分(如WHERE子句)的值不同,Oracle也能通过使用相同的哈希值将它们视为同一SQL。例如,使用绑定变量":X"的SQL `SELECT salary FROM user WHERE name=:X`可以替代多个特定名字的...
9. **绑定变量**:绑定变量可以避免SQL语句的重复解析,降低CPU争用,但可能影响SQL优化,因为绑定变量使得统计信息难以精确反映实际的查询分布。 10. **稳定执行计划**:通过启用查询重写、星型转换和设定特定版本...
由于我们使用了绑定变量,所以Oracle只需要软分析一次,而不需要每次都进行硬分析,从而提高了数据库的性能。 需要注意的是,绑定变量可以在PL/SQL过程中使用,例如: Declare i number; Begin i := 1; Select ...
在处理大量动态查询时,使用绑定变量可以显著减少Oracle的解析次数,减轻SGA的压力,进而提升系统的整体性能。 绑定变量的工作原理是:在PHP代码中,我们不直接将变量值插入到SQL语句中,而是声明一个占位符(如`:...
在编写Oracle SQL语句时,正确和高效地使用绑定变量能够大幅度提升数据库的性能,并且节约宝贵的计算资源。合理的SQL编程习惯应当包括避免SQL语句硬编码,尽量使用绑定变量来实现代码的复用,减少解析时间,从而提高...