如何快速找到沒有使用繫結變數的SQL - asktome
Tom 的如何快速找到沒有使用繫結變數的SQL:
create table t1 as select sql_text from v$sqlarea;
alter table t1 add sql_text_wo_constants varchar2(1000);
create or replace function
remove_constants( p_query in varchar2 ) return varchar2
as
l_query long;
l_char varchar2(1);
l_in_quotes boolean default FALSE;
begin
for i in 1 .. length( p_query )
loop
l_char := substr(p_query,i,1);
if ( l_char = '''' and l_in_quotes )
then
l_in_quotes := FALSE;
elsif ( l_char = '''' and NOT l_in_quotes )
then
l_in_quotes := TRUE;
l_query := l_query || '''#';
end if;
if ( NOT l_in_quotes ) then
l_query := l_query || l_char;
end if;
end loop;
l_query := translate( l_query, '0123456789', '@@@@@@@@@@' );
for i in 0 .. 8 loop
l_query := replace( l_query, lpad('@',10-i,'@'), '@' );
l_query := replace( l_query, lpad(' ',10-i,' '), ' ' );
end loop;
return upper(l_query);
end;
/
update t1 set sql_text_wo_constants = remove_constants(sql_text);
select sql_text_wo_constants, count(*)
from t1
group by sql_text_wo_constants
having count(*) > 100
order by 2
/
create table t1 as select sql_text from v$sqlarea;
alter table t1 add sql_text_wo_constants varchar2(1000);
create or replace function
remove_constants( p_query in varchar2 ) return varchar2
as
l_query long;
l_char varchar2(1);
l_in_quotes boolean default FALSE;
begin
for i in 1 .. length( p_query )
loop
l_char := substr(p_query,i,1);
if ( l_char = '''' and l_in_quotes )
then
l_in_quotes := FALSE;
elsif ( l_char = '''' and NOT l_in_quotes )
then
l_in_quotes := TRUE;
l_query := l_query || '''#';
end if;
if ( NOT l_in_quotes ) then
l_query := l_query || l_char;
end if;
end loop;
l_query := translate( l_query, '0123456789', '@@@@@@@@@@' );
for i in 0 .. 8 loop
l_query := replace( l_query, lpad('@',10-i,'@'), '@' );
l_query := replace( l_query, lpad(' ',10-i,' '), ' ' );
end loop;
return upper(l_query);
end;
/
update t1 set sql_text_wo_constants = remove_constants(sql_text);
select sql_text_wo_constants, count(*)
from t1
group by sql_text_wo_constants
having count(*) > 100
order by 2
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-759836/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 統計沒有繫結變數SQL變數SQL
- 查詢沒有使用繫結變數的sql zt變數SQL
- 找出沒有繫結變數的引發硬解析的SQL變數SQL
- oracle找出沒有使用繫結變數的sql語句Oracle變數SQL
- 尋找沒有使用繫結變數的sql語句變數SQL
- 查詢出系統中沒有使用繫結變數的SQL變數SQL
- SQL Developer中使用繫結變數SQLDeveloper變數
- 【sql調優】使用繫結變數(二)SQL變數
- 【sql調優】使用繫結變數(一)SQL變數
- oracle 查詢未使用繫結變數的sqlOracle變數SQL
- Oracle中如何查詢未使用繫結變數的SQL語句?Oracle變數SQL
- SQL使用繫結變數,測試例項。SQL變數
- SQL*Plus中使用DATE型別的繫結變數SQL型別變數
- 關於繫結變數的SQL繫結什麼值變數SQL
- SQL Server動態SQL,繫結變數SQLServer變數
- 檢視未繫結變數的sql變數SQL
- 獲取sql繫結變數的值SQL變數
- PLSQL使用繫結變數SQL變數
- V$sql查詢未使用繫結變數的語句SQL變數
- PL/SQL中繫結變數使用的簡單測試SQL變數
- 如何在對in操作使用變數繫結(轉)變數
- 【優化】使用繫結變數 OR 不使用繫結變數,這不是問題!優化變數
- 繫結變數的使用範圍變數
- 關於繫結變數的使用變數
- 關於pl/sql中的繫結變數SQL變數
- 如何獲取繫結變數變數
- 【最佳化】使用繫結變數 OR 不使用繫結變數,這不是問題!變數
- 【SQL】在SQLPLUS中使用繫結變數的寫法SQL變數
- 使用繫結變數的一點總結!變數
- 【SQL 調優】繫結變數窺測SQL變數
- 【sql調優】繫結變數與CBOSQL變數
- 關於sql_profile中的繫結變數SQL變數
- 統計未用繫結變數的sql語句變數SQL
- 繫結變數變數
- 如何獲取繫結變數值變數
- 10g以後檢視未使用繫結變數的sql變數SQL
- [SQL]oracle 繫結變數(bind variable)[轉載]SQLOracle變數
- 如何用FGA得到繫結變數的值變數