暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Real-time SQL Monitoring Duration 远远大于 Database Time

aknight 2025-11-28
44

最近有个开发同事,讲用python调用sqlplus 运行sql脚本Select 结果很慢 有时会超过1个小时

公司有安装OEM 19c Real-time SQL Monitoring 非常强大 找到相关sqlid 结果看到 Duration 近1小时 远远大于 几分钟的Database Time 

记得之前有看到过类似如下的情况解读。一种情况在于sqlplus arraysize过小 会导致 fetch过多次 更多时间消耗在 网络交互往返中

http://www.nocoug.org/download/2016-02/Poder_Real_Time_SQL_Monitoring_in_Oracle_Database_12c.pdf

现在简单试验一下

windows sqlplus client 连接测试 19c 

运行下面sql 能让OEM Real-time SQL Monitoring 捕捉到

select /*+ monitor no_parallel */ * from dba_source where rownum<20000;

set termout off 让sqlplus不回显

先用默认 arraysize 15 第一次运行

再修改 set arraysize 1500 第二次运行

第一次运行 Real-time SQL Monitoring 

第二次运行 Real-time SQL Monitoring

对比如下

#  fetch  Duration DB_Time

1  1335   2s            71ms

2  15       45ms       45ms

果然 sqlplus 默认arraysize过小 会导致 fetch过多次 更多时间消耗在 网络交互往返中 导致 Duration 远远大于 Database Time 引发实际运行时间过长

另外  现在 sqlplus 工具有个 命令选项 –F[ast] option 可以加快运行 实际也通过加大arraysize等实现,参考如下

https://docs.oracle.com/en/database/oracle/oracle-database/19/sqpug/starting-SQL-Plus.html#GUID-073C1D33-E424-4791-8C79-8FA7B3CDEC43

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论