11g升级性能问题之一 重建user_synonyms

简介: 在测试环境11g升级之后,从测试那边反馈查询syn反应很慢。要持续差不多10分钟。 其实这个syn中的数据只有200多条 第一反应是cpu 100%了,查看果然是 因为问题紧急,直接抓了一个ash报告,看到两个session占用了99.

在测试环境11g升级之后,从测试那边反馈查询syn反应很慢。要持续差不多10分钟。
其实这个syn中的数据只有200多条
第一反应是cpu 100%了,查看果然是

因为问题紧急,直接抓了一个ash报告,看到两个session占用了99.9%的cpu,是多么复杂的sql导致的?

select count(distinct table_owner) from syn;
看似简单的sql怎么会导致这么严重的性能

 

   Sid, Serial# % Activity Event                             % Event

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

User                 Program                          # Samples Active     XIDs

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

     6238,10025      49.58 CPU + Wait for CPU                  49.58

PRDOPRC              sqlplus@host1 (TNS V1-V3)       119/120 [ 99%]        0

 

     6806, 2625      49.58 CPU + Wait for CPU                  49.58

PRDOPRC              sqlplus@host1(TNS V1-V3)       119/120 [ 99%]        0

 

 

 

^LTop SQL with Top Events     DB/Inst:    (Aug 23 12:30 to 12:32)

 

                                                        Sampled #

                 SQL ID             Planhash        of Executions     % Activity

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

Event                          % Event Top Row Source                    % RwSrc

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

          cdpfrnawjch1s           1815584559                    2          99.17

CPU + Wait for CPU               99.17 INDEX - FULL SCAN                   99.17

select count(distinct table_owner) from syn

 

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

 

Top SQL with Top Row Sources DB/Inst:   (Aug 23 12:30 to 12:32)

 

                                                        Sampled #

                 SQL ID             PlanHash        of Executions     % Activity

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

Row Source                               % RwSrc Top Event               % Event

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

          cdpfrnawjch1s           1815584559                    2          99.17

INDEX - FULL SCAN                          99.17 CPU + Wait for CPU        99.17

select count(distinct table_owner) from syn

 

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


Plan hash value: 3294565448


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

| Id  | Operation               | Name    | Rows  | Bytes | Cost  |

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

|   0 | SELECT STATEMENT        |         |     1 |    41 |     5 |

|   1 |  SORT AGGREGATE         |         |     1 |    41 |       |

|*  2 |   FILTER                |         |       |       |       |

|   3 |    NESTED LOOPS         |         |   522 | 21402 |     5 |

|*  4 |     HASH JOIN           |         |   522 | 18792 |     4 |

|   5 |      INDEX FULL SCAN    | I_USER2 |   158 |  3476 |     1 |

|*  6 |      INDEX RANGE SCAN   | I_OBJ5  |   522 |  7308 |     2 |

|*  7 |     INDEX UNIQUE SCAN   | I_SYN1  |     1 |     5 |     1 |

|   8 |    NESTED LOOPS         |         |     1 |    28 |     2 |

|*  9 |     INDEX RANGE SCAN    | I_OBJ4  |     1 |     8 |     1 |

|* 10 |     TABLE ACCESS CLUSTER| USER$   |     1 |    20 |     1 |

|* 11 |      INDEX UNIQUE SCAN  | I_USER# |     1 |       |     1 |

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

 重建syn

SQL> select count(*)from syn;


  COUNT(*)

----------

         9

SQL> CREATE OR REPLACE FORCE VIEW "SYS"."USER_SYNONYMS" ("SYNONYM_NAME", "TABLE_OWNER", "TABLE_NAME", " DB_LINK") AS

      select /*+ RULE */ o.name, s.owner, s.name, s.node

  2    3      from sys.syn$ s, sys."_CURRENT_EDITION_OBJ" o

  4      where o.obj# = s.obj#

  5       and o.type# = 5

  6        and o.owner# = userenv('SCHEMAID');

View created.

SQL> select count(*)from syn;

  COUNT(*)

----------


         9


执行计划发生了巨大的改变
Execution Plan
----------------------------------------------------------
Plan hash value: 1500249626

---------------------------------------------------
| Id  | Operation                       | Name    |
---------------------------------------------------
|   0 | SELECT STATEMENT                |         |
|   1 |  SORT GROUP BY                  |         |
|*  2 |   FILTER                        |         |
|   3 |    NESTED LOOPS                 |         |
|   4 |     NESTED LOOPS                |         |
|*  5 |      INDEX RANGE SCAN           | I_OBJ5  |
|   6 |      TABLE ACCESS BY INDEX ROWID| SYN$    |
|*  7 |       INDEX UNIQUE SCAN         | I_SYN1  |
|   8 |     TABLE ACCESS CLUSTER        | USER$   |
|*  9 |      INDEX UNIQUE SCAN          | I_USER# |
|  10 |    NESTED LOOPS                 |         |
|* 11 |     INDEX RANGE SCAN            | I_OBJ4  |
|* 12 |     TABLE ACCESS CLUSTER        | USER$   |
|* 13 |      INDEX UNIQUE SCAN          | I_USER# |
---------------------------------------------------

最后查询,耗费了0.01秒,和10分钟真是天壤之别。



 





目录
相关文章
|
测试技术 Python
Playwright系列(4):录制测试脚本
Playwright系列(4):录制测试脚本
375 0
|
缓存 前端开发 数据建模
DDD结构学习归纳总结(小傅哥の码场 学习专栏)
DDD结构学习归纳总结(小傅哥の码场 学习专栏)
277 0
|
缓存 Java 应用服务中间件
线程池的10个坑你都遇到过吗
日常开发中,为了更好管理线程资源,减少创建线程和销毁线程的资源损耗,我们会使用线程池来执行一些异步任务。但是线程池使用不当,就可能会引发生产事故。大家看完肯定会有帮助的~
377 0
|
弹性计算 大数据 测试技术
阿里云服务器租用报价多少钱一年?2024年阿里云服务器价格表出炉!
在现今这个数字化高速发展的时代,云服务已逐渐演变成众多企业和个人进行数字化转型的核心基石。阿里云,作为国内云服务市场的佼佼者,不仅凭借其稳定且强大的服务器性能赢得了市场的广泛认可,还通过提供多样化的云服务产品和极具竞争力的价格策略,进一步巩固了其市场地位。那么,在这个数字化浪潮中,阿里云服务器的价格究竟如何呢?今天,就让我们一起深入探索阿里云最新的价格体系,为您揭示其背后的价值所在。对于轻量级应用场景,阿里云提供了2核2G3M轻量应用服务器,其年度费用仅为62元。这一价格定位,无疑为初创企业和个人开发者提供了一个低门槛、高性价比的云服务选择,助力他们在数字化道路上轻松起步。
637 1
|
消息中间件 缓存 NoSQL
|
存储 Ubuntu 安全
在Ubuntu 16.04上安装和配置Nextcloud的方法
在Ubuntu 16.04上安装和配置Nextcloud的方法
288 0
|
Android开发 UED Kotlin
kotlin webview 加载网页失败后如何再次重试
在Kotlin中,当使用WebView加载网页失败时,可通过设置WebViewClient并覆盖`onReceivedError`方法来捕获失败事件。在该回调中,可以显示错误信息或尝试使用`reload()`重试加载。以下是一个简要示例展示如何处理加载失败
|
数据可视化 数据挖掘 Serverless
R语言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于预测时间序列数据
R语言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于预测时间序列数据
|
监控 安全 测试技术
使用pyftpdlib组件实现FTP文件共享
使用pyftpdlib组件实现FTP文件共享
235 0

热门文章

最新文章