plsql developer连接数据库导致服务器cpu升高的案例

时间:2024-05-20 14:56:00

测试环境有套库,开发人员反映cpu使用率非常高,但是他们没有在数据库执行什么语句。

我生成了awr和实时查看库上语句执行情况,发现有如下语句,一直占有cpu资源:

select s.synonym_name object_name, o.object_type
  from all_synonyms s, sys.all_objects o
 where s.owner in ('PUBLIC', :schema)
   and o.owner = s.table_owner
   and o.object_name = s.table_name
   and o.object_type in ('TABLE',
                         'VIEW',
                         'PACKAGE',
                         'TYPE',
                         'PROCEDURE',
                         'FUNCTION',
                         'SEQUENCE')

该语句的等待事件是:row cache mutex

数据库版本是12.2,我怀疑是不是踩了相关bug,但是在metalink上找了一圈,没有任何发现。感觉很诡异。

然后发现,只要是plsql developer连到数据库上,便会有一个执行上述语句的会话存在,占用100%的cpu(服务器4c,单颗cpu 100%)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

遇到这种比较奇怪的问题,百度真的毫无用处,已经不止一次如此。这里强烈推荐下微软的bing,自从推出国际版后,真心强大了许多。

这次也是通过国际版的搜索,找到了一篇文章,讲述了同样的问题。

说是由于plsql developer的bug导致,通过修改plsql developer配置可以解决:

It’s caused by the Describe Context Option of Code Assistant. To disable it:
Tools > Preferences > Code Assistant and disable the “Describe Context” option.

plsql developer连接数据库导致服务器cpu升高的案例

将“描述前后文关系”这一项的勾选给去掉。

测试发现,去掉后再连接数据库,果然不会出现之前遇到的问题。我plsql developer版本是9的,高版本中应该不会出现该问题

但是感觉比较奇怪的事,我电脑上的plsql developer工具一直在用,以前也没有发现会导致cpu冲高的问题,亦或是之前没有关注。