11g升级性能问题之一 重建user_synonyms (笔记27天)
时间:2022-05-04
本文章向大家介绍11g升级性能问题之一 重建user_synonyms (笔记27天),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在测试环境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分钟真是天壤之别。
- 社团划分——Fast Unfolding算法
- 【PSU】AIX 11g RAC自动打GI PSU5
- 详解自动识别验证码,LSTM大显身手
- 智能算法——PageRank
- 【Go 语言社区】Golang 可变参数的使用
- 【Go 语言社区】Golang源码解读之map
- 一则报警信息所折射出来的诸多问题(r9笔记第14天)
- Java面试系列17-编程题-读取服务器字符、实现序列化、计数器、1000阶乘、n出列问题等
- tensorflow(一)windows 10 64位安装tensorflow1.4与基本概念解读tf.global_variables_initializer
- 容灾切换中的数据库宕机问题简单分析(一) (r9笔记第12天)
- Java面试系列14
- linux下搭建django记录笔记,未完稿,节后继续
- Java案例-打印图形与π
- 关于两个简单问题的分析(r9笔记第10天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 突击并发编程JUC系列-ReentrantLock
- 【腾讯云】记一次搭建云服务器
- 前端:如何让background背景图片进行CSS自适应
- 为什么Rust的println!不会发生所有权转移?
- 【译文】Rust futures: async fn中的thread::sleep和阻塞调用
- Smart Pointer Programming Techniques
- 一文搞懂AQS及其组件的核心原理
- 比较JavaScript中的数据结构(数组与对象)
- 9 个JavaScript 技巧
- [已解决]报错:XGBoostError: XGBoost Library (libxgboost.dylib) could not be loaded.
- 2.3 spring5源码---spring ioc 加载配置类的源码
- Tree Shaking概念详解
- Canvas基础教程(章节1)
- Canvas基础教程(章节2)
- CSS文件夹