Oracle自定义过程来获得完整的sql语句

php中文网
发布: 2016-06-07 17:25:43
原创
1287人浏览过

因为oracle将sql共享之后,截取出来的sql语句是带变量的,创建一个函数 jy_getsql来获得执行时的完整sql语句CREATE OR REPLACE F

因为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子句中的绑定变量还是有了

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号