暂无图片
Oracle数据库怎样抓出带有自定义函数的SQL?
我来答
分享
三阳
2023-06-15
Oracle数据库怎样抓出带有自定义函数的SQL?

Oracle数据库怎样抓出带有自定义函数的SQL?

我来答
添加附件
收藏
分享
问题补充
6条回答
默认
最新

在开发过程中,应该避免在SQL语句中调用自定义函数,可以通过以下SQL语句抓出调用了自定义函数的SQL。

select distinct sql_id,sql_text,module

  from V$SQL,

          (select object_name

             from DBA_OBJECTS O

           where owner = 'SCOTT'

               and object_type in ('FUNCTION','PACKAGE''))

 where (instr(upper(sql_text),object_name) >0)

    and plsql_exec_time >0

    and regexp_like(upper(sql_fulltext),'^[SELECT]')

    and parsing_schema_name='SCOTT'; 

暂无图片 评论
暂无图片 有用 5
打赏 0
暂无图片
Thomas

在开发过程中,应该避免在SQL语句中调用自定义函数。请问,为何要尽量避免,这样做的弊端是什么呢?

暂无图片 评论
暂无图片 有用 0
打赏 0
2023-06-16
使用了自定义函数,容易造成列上的索引失效。
Thomas

哦,谢谢!

暂无图片 评论
暂无图片 有用 0
打赏 0
刘晓华

where条件里用的function会使索引失效

select 字段里的function, 会导致SQL引擎和PL/SQL引擎的上下文切换,影响性能

暂无图片 评论
暂无图片 有用 1
打赏 0
广州_老虎刘

顶楼的方法应该是参考了落落书上的写法,方法不错,有2个小改进建议:1.可以改从v$sqlarea里面查,可以避免v$sql子游标多导致的性能问题(用instr关联,应尽量把结果集变小); 2.regexp_like只是把select开头的sql抓出来,可能还有一些sql以with as,注释等开头,还有create table,insert ,update,delete,merge 语句里面可能也会用自定义函数, 建议把regexp_like条件,改成command_type in(1,2,3,6,7,189);    

暂无图片 评论
暂无图片 有用 1
打赏 0
Thomas

where条件里用的function会使索引失效,准确地说,应该是使得查询不走索引吧?怎么可能使索引失效呢?失效我感觉应该是索引状态为INVALID才是吧。

暂无图片 评论
暂无图片 有用 0
打赏 0
刘晓华
2023-06-16
是的,你说的对
回答交流
Markdown


请输入正文
提交
相关推荐
Oracle连接mysql做透明网关
回答 6
你的mysqltest机器是oracle服务器,还是mysql所在服务器?
请问下各位小伙伴,这个报错问题严重不?
回答 2
已采纳
如果只有索引报错,导入的库也不需要索引,那么可以就不用管了。但导入的库非要索引,方案也多:可以在源库修改索引长度然后再导出;当然也可以查看报错的索引,然后在目标库重新创建;如果可以的话,也可以不导索引
各位oracle standard 版需要收费吗?
回答 3
可以免费用于测试学习。但商业用途则要收费。
在数仓里面同时向Oracle和达梦分发数据,但是有个值传到Oracle是大写,但到达梦是小写,这是什么原因?数仓里面的数据也是大写
回答 1
检查分发代码,看是否进行了转换
请问,我在某张表上建了一个索引,可是执行计划并没有走这个索引,这是为什么?
回答 4
可能是发生了转换没法走,也可能是统计信息或数据分布导致CBP认为不该走,又或者不走索引反而更快。建议先看看执行计划,然后加hint提示走索引,再看看执行计划
有哪些国产操作系统支持 oracle 数据库,有上生产吗?
回答 1
已采纳
中标麒麟、红旗Linux等都有安装Oracle数据库实际上生产的
可否对一个bigfile的大表空间resize让它释放空间
回答 5
可否知道resize的速度快吗,可否给个量化的参照。
昨天oracle的日志丢了,今天去找,硬盘数据恢复软件有好用的不?
回答 1
已采纳
easyrecovery
OGG-01154 ORA-01555: snapshot too old
回答 1
在该进程的参数里,加入这句:GROUPTRANSOPS10  再启动该进程试试。
oracle ora-12154问题如何处理?
回答 2
已采纳
一、监听器介绍1、概念      监听器直接面向用户,也就是客户端程序。监听器启动时,负责打开监听端口,等待客户端连接。当有客户端连接时,在