数据库性能分析及调整一例(zt)

故障现象

2004年6月8日上午10:00,内蒙古巴盟网通用户反映在OSS系统界面“话单查询”里查询单个用户五天的话单特别慢,查询很长时间无结果。

例如:在OSS系统界面“综合查询”内点击“收费”-〉“话单查询”,键入“用户号码,起始时间:2004-01-01 00:00:00,结束时间:2004-06-01 23:00:00”,点击查询后,IE进度条缓慢,很长时间不返回结果。


故障分析

经过分析,此现象和数据库的性能有关,主要是数据库初始化参数调整不合理造成的性能低下。具体分析步骤如下:

1.首先查询话单表的索引是否失效,因为失效的索引会带来差的SQL查询效率。

SQL>select INDEX_NAME,status from USER_IND_PARTITIONS where status!='USABLE';

no rows selected.

结果说明没有失效的话单表索引。

2.用top命令看到可用物理内存很低,只剩下100M,有大量的SWAP区内存正在使用,ORACLE单个会话占用的内存很多,经查看ORACLE初始化参数shared_pool_size的值设置的过高,应重新调整。

top的结果:
last pid: 4565; load averages: 0.15, 0.20, 0.20 10:09:56

170 processes: 169 sleeping, 1 on cpu

CPU states: 84.9% idle, 1.6% user, 1.1% kernel, 12.4% iowait, 0.0% swap

Memory: 4096M real, 100M free, 1343M swap in use, 6851M swap free

PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND

10459 oracle 1 59 0 1978M 1953M sleep 0:53 0.79% oracle

2258 oracle 1 10 0 1976M 1951M sleep 116:57 0.65% oracle

25639 oracle 1 58 0 1975M 1949M sleep 1:56 0.27% oracle

1948 oracle 1 58 0 1976M 1948M sleep 3:34 0.18% oracle

4002 wacos 6 47 4 9616K 2344K sleep 27:26 0.18% cdr_backup

2271 oracle 1 59 0 1975M 1947M sleep 15:13 0.16% oracle

1958 oracle 1 48 0 1976M 1949M sleep 2:26 0.13% oracle

1928 oracle 1 58 0 1976M 1951M sleep 4:28 0.12% oracle

1926 oracle 1 58 0 1976M 1949M sleep 2:06 0.12% oracle

1956 oracle 1 58 0 1976M 1949M sleep 2:23 0.11% oracle

1952 oracle 1 59 0 1976M 1949M sleep 2:19 0.10% oracle

403 root 10 21 0 4896K 4608K sleep 16:32 0.09% picld

1954 oracle 1 48 0 1976M 1949M sleep 2:04 0.08% oracle

2189 oracle 1 58 0 1976M 1949M sleep 15:51 0.08% oracle

3.为了进一步分析ORACLE的性能,用ORACLE自带的诊断工具statspack做性能快照分析,统计时段为1小时,时间从下午17:00-18:00之间。这段时间业务比较繁忙,选择在此时段内对整个系统进行性能分析,能够得到更加准确的信息。

安装statspack性能分析工具:

SQL>connect internal

SQL>alter system set timed_statistics=true;(收集操作系统的计时信息)

SQL>@?/rdbms/admin/spcreate.sql

SQL>execute statspack.snap (17:00的时候运行一次)

SQL>execute statspack.snap (18:00的时候运行一次)

SQL>@?/rdbms/admin/spreport (产生性能分析报告)

截取报告的部分内容如下:

STATSPACK report for

DB Name DB Id Instance Inst Num Release OPS Host

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

ORCL 1000277484 ORCL 1 8.1.7.3.0 NO bm_db1

Snap Id Snap Time Sessions

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

Begin Snap: 1 08-Jun-04 17:00:15 116

End Snap: 2 08-Jun-04 18:00:40 116

Elapsed: 60.42 (mins)

Cache Sizes

~~~~~~~~~~~

db_block_buffers: 180000 log_buffer:

8192000

db_block_size: 8192 shared_pool_size:

314572800

Load Profile

~~~~~~~~~~~~ Per Second Per Transaction

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

Redo size: 11,005.01 2,280.39

Logical reads: 65,704.21 13,614.83

Block changes: 67.96 14.08

Physical reads: 1,392.89 288.63

Physical writes: 11.61 2.40

User calls: 172.63 35.77

Parses: 29.11 6.03

Hard parses: 0.01 0.00

Sorts: 7.81 1.62

Logons: 0.14 0.03

Executes: 101.44 21.02

Transactions: 4.83

% Blocks changed per Read: 0.10 Recursive Call %: 41.29

Rollback per transaction %: 0.28 Rows per Sort: 25.55

Instance Efficiency Percentages (Target 100%)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Buffer Nowait %: 100.00 Redo NoWait %: 100.00

Buffer Hit %: 97.88 In-memory Sort %: 100.00

Library Hit %: 99.98 Soft Parse %: 99.96

Execute to Parse %: 71.30 Latch Hit %: 99.99

Parse CPU to Parse Elapsd %: 62.24 % Non-Parse CPU: 99.99

Shared Pool Statistics Begin End

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

Memory Usage %: 24.15 24.44

% SQL with executions>1: 75.04 76.95

% Memory for SQL w/exec>1: 75.49 79.90

Top 5 Wait Events

~~~~~~~~~~~~~~~~~ Wait % Total

Event Waits Time (cs) Wt Time

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

db file sequential read 5,030,075 389,071 86.37

log file sync 17,470 21,187 4.70

log file parallel write 17,640 18,611 4.13

db file parallel write 1,853 14,930 3.31

db file scattered read 3,149 2,297 .51

对报告分析后发现有一些不合理的初始化参数需要调整,建议如下调整:

1. 报告中发现全表扫描的语句特别多,因此建议程序中尽量避免使用全表扫描,

减少IO等待,从而加快语句的执行速度。

类似如下语句需要优化:

SQL>select count(*) as totalcount from LOCALUSAGE where se

rviceid=:"SYS_B_0" and starttime>=to_date(:"SYS_B_1",:"SYS_B_2")

and starttime <=to_date(:"SYS_B_3",:"SYS_B_4") and ( LOCALROAMI

NGCHARGE >:"SYS_B_5" or LocalCharge >:"SYS_B_6" or UrbanCharge

>:"SYS_B_7" or ruralcharge >:"SYS_B_8");

2.调整db_file_multiblock_read_count=16

这个参数指定一个完全连续扫描的一次I/O操作过程中读取的块的最大数量。它的增加对IO是有改善的,特别是在做full table scan的时候,可以减少IO的次数。

3.调整db_block_lru_latches=2

这个参数指定LRU 闩锁集数量的上限。LRU锁的数量是在Oracle数据库内部用来管理数据库缓冲的,它严重依赖于服务器上CPU的数量,这个值通常设置为服务器上cpu_count的一半,增大这个值有利于提高磁盘的I/O性能。

4.调整session_cached_cursors=200

这个参数指定要高速缓存的会话游标的数量,对同一SQL语句进行多次语法分析后,它的会话游标将被移到该会话的游标高速缓存中。增大这个值可以缩短语法分析的时间,因为游标被高速缓存,无需被重新打开。

5.调整log_buffer=1048576

参数log_buffer指定在 LGWR 将重做日志缓冲区里的内容写入重做日志文件之前,用于缓存这些条目的内存量。这个参数以字节为单位,同时受cpu_count的影响, log_buffer如果被设置得太高(例如,大于1MB),这会引起性能问题,因为大容量的结果会使得写入同步进行(例如,日志同步等待事件非常高)。

6.调整db_block_buffers = 200000 shared_pool_size= 262144000

按照杭州的规划,Oracle最终运行起来占用近1/2的物理内存。其中最主要的两个参数为:

db_block_buffers:它的配置原则是,最终数据块缓存占据1/3的内存。

Shared_pool_size:它的配置原则是,基本控制在200-500M左右。

7.从报告中发现系统等待最严重的五个事件为:db file sequential read,log file sync,log file parallel write,db file parallel write和db file scattered read.

(1)对于db file sequential read等待事件,一般问题出现在读索引上,建议将wacos表空间和wacos索引表空间分开存储在不同的物理卷下,以提高磁盘的I/O性能。

(2)对于db file scattered read等待事件,建议程序中尽量避免使用全表扫描的语句,或者可以增大db_file_multiblock_read_count的值,提高全表扫描一次读取数据块的速度,减少磁盘I/O。

(3)对于db file parallel write等待事件,说明DBWR进程正等待把缓冲区的内容并行写入数据文件中去,等待将一直持续到所有的I/O全部完成。建议增大初始化参数中的db_writer_processes的值,可以增大到4。
(4)
对于log file sync等待事件,说明任何时候一个事物提交时,它将通知LGWR将LOG_BUFFER写入日志文件,如果此部分占用时间较长,应减少COMMIT的次数,建议将重做日志放到较快的磁盘上进行存储。
(5)
对于log file parallel write等待事件,和上面一样建议将重做日志放到较快的磁盘上进行存储。

故障处理调整initORCL.ora里不合理的参数,具体调整为:

process=200

log_buffer=1048576

session_cached_cursors=200

db_block_lru_latches=2

shared_pool_size= 262144000

db_block_buffers = 200000

sort_area_size = 6553600

sort_area_retained_size = 6553600

db_file_multiblock_read_count = 16

处理结果调整完重启DB后,发现查询一切正常,很快就返回了结果。

总结

数据库里初始化参数设置不合理, 内存富余太少, 导致数据库运行使用大量的swap空间,数据库性能很差,导致通过OSS界面查询话单很慢。这时需要通过调整数据库初始化参数解决该问题。从性能方面考虑,数据库服务器最好能富余300-500M以上的内存。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-85047/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-85047/

告别盲目调参:手把手教你用RKISP2.x Tuner理解AWB、AE、NR等核心模块 本文详细介绍了如何使用RKISP2.x Tuner工具进行ISP调试,重点解析AWB、AE、NR等核心模块的调参技巧。通过RV1126平台的实际操作演示,帮助工程师快速掌握可视化对比实验方法,告别盲目调参,提升图像信号处理效率。 阅读详情

相关推荐

告别虚拟机!在WSL2的Ubuntu里5分钟跑通LVGL v9.2图形界面(附SDL2配置避坑)

本文详细介绍了如何在WSL2的Ubuntu子系统中快速配置LVGL v9.2图形库的SDL2模拟环境,帮助嵌入式开发者在5分钟内跑通第一个图形界面示例。通过WSL2和VSCode的远程开发插件,实现Windows系统下无缝使用Linux工具链,大幅提升开发效率。

weixin_28736335的博客 425

Java 中的反射机制可以在以下场景下使用

Java 中的反射机制可以在以下场景下使用

gb4215287的博客 627

RK3588工业开发板实战:如何用IgH EtherCAT主站精准控制伺服电机(附完整代码)

本文详细介绍了如何利用RK3588工业开发板和IgH EtherCAT主站实现伺服电机的精准控制。从硬件选型、实时内核配置到EtherCAT主站安装和核心代码实现,提供了一套完整的工业自动化解决方案,特别适合需要高精度运动控制的场景。

pca5navigator的博客 972

『Java面经』简述 Java 的反射机制及其应用场景

文章目录1、前言2、反射是什么?3、为什么要有反射?4、小试牛刀4.1 获取 Class 对象4.2 获取成员变量4.3 获取构造方法4.4 获取非构造方法5、实践出真知6、微信关注『方糖算法』 1、前言 反射(Reflection) 是 Java 的特征之一,它允许运行中的 Java 程序对自身进行检查,并能直接操作程序的内部属性和方法。 反射是所有注解的实现原理,尤其在框架设计中。 常见的面试考点如下: 获取 Class 对象 获取类中的所有字段 获取类中的所有构造方法 获取类中的所有非构造方法 现

方糖世界 2636

COMSOL电弧放电仿真:四场耦合与磁流体建模实战指南

多物理场耦合仿真是现代工程中模拟复杂物理过程的重要手段。电弧本质上是电场、磁场、流场与温度场四场相互耦合的非线性系统,其行为由磁流体力学(MHD)方程描述。通过COMSOL等工具构建电弧模型,可准确预测温度分布、流场结构和电极烧蚀,为开关电器设计、等离子体应用等提供数据支撑。在高压电器开断、电弧切割、激光打孔等工程问题中,高效求解MHD耦合模型是关键。然而,电弧仿真涉及物性参数强非线性、边界条件设置、求解器配置以及移动网格处理等挑战。以二维轴对称电弧模型为例,系统梳理磁流体方程落地、多物理场耦合节点配置、收

weixin_30047059的博客 135

openclaw通俗入门系列9——流式传输 + 分块

流式传输 = 不等写完就开始发。分块流式传输是把长回复切成几条消息发(所有渠道),草稿流式传输是像打字一样实时显示(仅 Telegram)。可以配置块大小、发送时机、合并规则、类人延迟。

m0_60605453的博客 506

数据库性能分析及调整一例

故障现象2004年6月8日上午10:00,内蒙古巴盟网通用户反映在OSS系统界面“话单查询”里查询单个用户五天的话单特别慢,查询很长时间无结果。 例如:在OSS系统界面“综合查询”内点击“收费”-〉“话单查询”,键入“用户号码,起始时间:2004-01-01 00:00:00,结束时间:2004-06-01 23:00:00”,点击查询后,IE进度条缓慢,很长时间不返回结果。故障分析

辰风的专栏--Oracle/ClearCase管理员日记 1338

[毕设项目-MCP+ENSP]一句话搞定ENSP自动化:MCP + LLM实战(架构图、工具清单、踩坑全解)

用 MCP + LLM 把“人话”变成对华为 ENSP 的安全自动化操作,三款工具覆盖配置/查询/落盘,配套架构、实战与排坑清单。

逐梦苍穹的博客 2539

Oracle数据库经常会遇到CPU利用率很高的情况

原文地址:http://blog.itpub.net/29827680/viewspace-1269633/ Oracle数据库经常会遇到CPU利用率很高的情况,这种时候大都是数据库中存在着严重性能低下的SQL语句,这种SQL语句大大的消耗了CPU资源,导致整个系统性能低下。当然,引起严重性能低下的SQL语句的原因是多方面的,具体的原因要具体的来分析,下面通过一个实际的案例来说明如何来诊

cuiyan1982的专栏 5087

Oracle 查看 rman 备份情况 SQL 语句

每天一个 DBA 小知识,助你更进一步!

LuciferLiu_DBA 3117

实战:RK3568 Android14 调试 MIPI DSI 液晶屏

LCD1_RST -> 对应原理图网络连接到 GPIO。LCD1_PWR_EN ->用于给屏幕 VCC 供电。LCD0_BL_EN / LCD0_BL_PWM -> MP3302 升压芯片驱动 LED 灯条。![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/100f2be7f763494da1032464e272e63b.png&pinctrl {/* 配置 LCD_RST 和 LCD_EN */

qq_33427070的博客 1548

Solaris下的性能与调整[ZT] 作者:C.Arthur

Solaris下的性能与调整[ZT] http://www.chinaunix.net 作者:C.Arthur  发表于:2004-03-19 19:39:20 1. 着手性能问题  2. 性能监测  2.1. 从暴露出来的问题开始  2.2. 知道你的系统在正常情况下会怎样  2.3. 寻找性能瓶颈  3. 一些常见问题和一些建议  3.1. 64位的运算与容量能带来什么  3.2. 空闲内

symield的专栏 1967

杰理JL703N的SDK内部MIDI 音色库功能使用教程

本文介绍了MIDI琴按键解码和MIDI文件解码的实现方法。MIDI琴解码通过audio_dec_midi_ctrl.c文件实现,MIDI文件(mfa格式)解码则使用audio_dec_midi_file.c。使用前需将音色文件存放在SD卡或内置flash中(需确保四字节对齐),并在download.c中配置路径。同时需在板级配置中将FLASH设置为16Mbit以解决编译问题。关键注意事项包括音色文件的文件夹结构对齐要求和MIDI数据流的正确配置。

qq_42014563的博客 390

Oracle 数据库 11g:重要新特性[zt]

Oracle 数据库 11g:重要新特性 [@more@] 数据库重放探究数据库重放这是一新工具,它允许您捕获 SQL 语句并可随时重放这些语句。 --&gt 分区了解引用分区、间隔分区和虚拟列分区;新的子分区选项;等等...

cuihu5034的博客 166

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

使用SQL_TRACE进行数据库诊断(zt)

SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法。 本文就SQL_TRA...

cuixie2370的博客 81

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

阿里DRC介绍 zt

http://pan.baidu.com/s/1mg9o4TM#path=%252FQCon%25E5%258C%2597%25E4%25BA%25AC2015%25EF%25BC%2588PPT%25EF%25BC%2589%252F4%25E6%259C%258823%25E6%2597%25A5%252F%25E4%25BA%2591%25E8%25AE%25A1%25E7%25AE%259

u013793650的专栏 7510

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Oracle SQL optimization(zt)

Oracle SQL optimization(摘自SAP Note 766349) Symptom1. What is SQL optimization?2. How important is SQL optimization...

congnen9588的博客 353

Statspack中几个指标说明(ZT)

Oracle注:以下指标取自Oracle的性能分析工具Statspack所提供的性能分析指标。指标名称指标描述指标范围指标单位1.关于实例效率(Instance Efficiency Percentages)的性能指标缓冲区未等...

cuixian7271的博客 375

Eclipse最新插件的下载地址大全[收集整理] zt

http://hi.baidu.com/damofeisha/blog/item/425b114f7bd6f53cafc3ab14.htmlEMF,GEF - Graphical Editor Framework,UML2,VE - Visual Editor都在这里下载http://www.eclipse.org/downloads/index.php2 lomboz J2EE插件,开发JSP...

weixin_30709635的博客 94

数据库优化项目的流程之方案 zt

http://blog.oraclefans.cn/baishan1/entry/dba%E6%97%A5%E8%AE%B0_%E7%AC%AC%E4%B8%80%E9%83%A8_%E5%90%8E%E8%AE%B0_2_%E...

csdn_201601的博客 165

提高asp.net性能的10个小点(zt)

riting a Web application with ASP.NET is unbelievably easy. So easy, many developers dont take the time to structure their applications for great performance. In this article, Im going to present

study everyday 1385

对磁盘条带化性能的探索(zt)

1. 环境说明主机: IBM P520CPU: 4695MHz × 4内存: 15744MB操作系统: AIX 6100-06存储: 400GB × 4(主机自带磁盘)# lspvhdisk0 ...

392

zt Oracle工具篇之Tkprof

Tkprof工具可用来格式化sql trace产生的文件,让你更容易看懂trace的内容用法:tkprof tracefile outputfile [explain= ] [table= ] [print= ] [insert...

csdn_201601的博客 119

Solaris下的性能与调整

作者:C.Arthur 收藏Solaris下的性能与调整[ZT]http://www.chinaunix.net 作者:C.Arthur 发表于:2004-03-19 19:39:20 1. 着手性能问题2. 性能监测2.1. 从暴露出来的问题开始2.2. 知道你的系统在正常情况下会怎样2.3. 寻找性能瓶颈3. 一些常见问题和一些建议3.1. 64位的运算与容量能带来什么3.2. 空闲内存3.3. 优先内存页面调度3.4. 隐私的共享内存(ISM-Intimate Shared Memory)3.5.

undead的专栏 892

【zt】跟踪会话使用event10046和tkprof

一、使用跟踪事件10046 很多时候,对数据库进行性能诊断可以使用SQL跟踪的方法,把一些信息记录在trace文件里以后分析。一般情况下我们可以通过初始化参数SQL_TRACE=TRUE来设置SQL跟踪。我们也可以通过设置10046事件来进行SQL跟踪,并且可以设置不同的跟踪级别,比使用SQL_TRACE获得更多的信息。 Level 0 停用SQL跟踪,相当于SQL_TRACE=FA...

老A的自留地,欢迎加微信交流,微信号zhoul777 214

DBMS_PROFILER(zt)

DBMS_PROFILERTheDBMS_PROFILERpackage was introduced in Oracle8i to allow developers to profile the run-time behavi...

117
上一篇: 使用Oracle Hint提示来更改执行计划
下一篇: ORACLE表连接方式的分析与优化
cuixie2370
博客等级 码龄10年 16粉丝 842原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值