oracle自定義過程來獲得完整的sql語句
因為oracle將sql共享之後,擷取出來的sql語句是帶變數的
建立一個函式 jy_getsql來獲得執行時的完整sql語句
CREATE OR REPLACE FUNCTION jy_getsql (my_sql_id in varchar2)
RETURN clob
IS
Result clob;
cursor jl(p_sql_id in varchar2) is
select decode(instr(b.BIND_NAME,'SYS'),0,':'||b.BIND_NAME||'',''||chr(58)||chr(34)||b.BIND_NAME||chr(34)||'') name,
decode(b.DATATYPE,2,dbms_sqltune.extract_bind(a.bind_data,b.POSITION).value_string ,''''||dbms_sqltune.extract_bind(a.bind_data,b.POSITION).value_string ||'''')
value_string
from v$sqlarea a ,v$sql_bind_metadata b
where a.LAST_ACTIVE_CHILD_ADDRESS = b.ADDRESS
and a.SQL_ID = p_sql_id
order by b.POSITION desc;
BEGIN
select a.SQL_FULLTEXT into Result
from v$sqlarea a where a.SQL_ID=my_sql_id;
for r in jl(my_sql_id) loop
Result := replace(Result,r.name,r.value_string);
end loop;
RETURN Result;
EXCEPTION
WHEN OTHERS
THEN
RETURN Result;
END;
下面的查詢是查詢資料庫當前正處於等待狀態的sql語句
select sw.sid,s.username,sw.event,sw.wait_time,sw.state,sw.seconds_in_wait,p.PROGRAM,s.MACHINE,
(select c.SQL_FULLTEXT from v$sqlarea c where c.SQL_ID=s.SQL_ID) sql_fulltext,
(select c.BIND_DATA from v$sqlarea c where c.SQL_ID=s.SQL_ID) BIND_DATA,s.SQL_ID,
jy_getsql(s.SQL_ID)
from v$session s,v$session_wait sw,v$process p
where s.username is not null and s.PADDR=p.ADDR
and sw.sid=s.sid and sw.event not like'%SQL*Net%'
order by sw.wait_time desc
但是這還有一缺點就是
select 1 userid from dual
這個1沒有在v$sqlarea.bind_data中
但where子句中的繫結變數還是有了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-751947/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle SQL 語句的執行過程OracleSQL
- 理解oracle執行sql語句的過程OracleSQL
- ORACLE sql 語句的執行過程(SQL效能調整)OracleSQL
- dbms_metadata.get_ddl()來獲得物件的定義語句物件
- SQL語句的處理過程SQL
- Oracle一個SQL語句的處理過程(轉)OracleSQL
- 列出oracle dbtime得sql語句OracleSQL
- Oracle資料庫SQL語句執行過程Oracle資料庫SQL
- 使用dbms_xplan包來獲得sql語句的執行計劃SQL
- 搬運工,oracle獲得ddl語句Oracle
- Oracle釋出一個SQL語句的處理過程OracleSQL
- CoreData執行過程的sql語句SQL
- SQL語句的處理過程修正SQL
- 剖析SQL語句的執行過程SQL
- 根據SQL Id獲得SQL語句的執行計劃SQL
- mysql執行sql語句過程MySql
- 一條sql語句的執行過程SQL
- 淺談SQL語句的執行過程SQL
- 一條SQL語句的優化過程SQL優化
- 獲得目標SQL語句執行計劃的方法SQL
- 【原】獲取SQLServer的最完整資料字典的SQL語句SQLServer
- SQL語句執行過程詳解SQL
- sql語句執行過程小結SQL
- 【AWR】通過AWR報告中記錄的 SQL Id獲得SQL語句的執行計劃SQL
- 使用SQL語句獲取SQLite中的表定義SQLite
- SQL語句的解析過程 遊標週期SQL
- 實時獲得最耗CPU資源的SQL語句(zt)SQL
- Oracle 儲存過程中的DDL語句Oracle儲存過程
- 【實驗】【SQL_TRACE】使用sql_trace功能獲得show parameter的sql語句SQL
- oracle的sql語句OracleSQL
- 10_SQL語句執行過程剖析SQL
- 通過Linux命令過濾出binlog中完整的SQL語句LinuxSQL
- 自定義註解例項實現SQL語句生成SQL
- ORACLE 查詢語句處理過程(Oracle
- 完整sql語句輸出的工具類SQL
- 通過SQL語句提取儲存過程中的內容SQL儲存過程
- PostgreSQL獲取建表語句儲存過程SQL儲存過程
- oracle 通過sql profile為sql語句加hintOracleSQL