从业务角度分析奇怪的数据库高负载问题
今天到公司以后,照例查看了数据库的负载情况,发现有一些异常。11点开始到12点的时候,数据库的负载格外的高。按照平时的经验,这个时间段内不会有太多的高峰业务在运行,为了简单验证,自己抓取了近几天的数据库负载情况。自己抓取了2月1号,1月30号的负载情况,发现在这个时间段内数据库的负载其实不高。...
通过shell绑定系统进程调优
数据库的性能调优,需要基于操作系统的性能指标,如果操作系统级发生了一些状况,那么会潜移默化的影响到数据库层面。而数据库中对应的进程和操作系统级也有一定的映射关系,在专有服务器模式下大体如此。有时候如果你注意到操作系统级有一些进程消耗资源高,那么很可能这个进程对应的数据库进程存在潜在的问题,这种方法...
MySQL和Oracle对比学习之数据字典元数据
MySQL和Oracle虽然在架构上有很大的不同,但是如果从某些方面比较起来,它们有些方面也是相通的。毕竟学习的主线是MySQL,所以会从MySQL的角度来对比Oracle的一些功能。大体总结了以下的内容,欢迎大家拍砖,查看当前的数据库名mysql> SELECT DATABASE();+------------+| DATABASE() |+------------+| test &...
一条全表扫描sql语句的分析
今天在对生产系统做监控的时候,发现一个process的cpu消耗很高,抓取了对应的session和执行的sql语句。发现是一个简单的update语句,这样一条如果CPU消耗较大,很可能是由于全表扫描的。UPDATECOMM_ACTIVITY SET COMM_ACTIVITY.EXTRACT_STATUS = NVL(:1 ,EXTRACT_STATUS), COMM_ACTIVITY.SOURCE_TYPE = NVL(:2 , SOURCE...
关于db_files和maxdatafiles的问题
昨天在做生产监控的时候发现有个库的表空间不够了,就发邮件给客户的dba去处理,但是得到的反馈是尝试添加的时候发现已经超过了数据文件的最大数限制。这个错误毫无疑问就是"ORA-00059: Maximum Number Of db_files Exceeded"一看到这个问题,一下子感觉就头大了。这个参数是在创建数据库的时候就应该考虑到的。竟然没有考...
了解一下CPU 第一篇
CPU可能对于我们来说是熟悉又陌生的,每天的工作基本都离不开CPU,CPU的消耗是系统负载的一个重要指标,每天都会不定时的来看看CPU的使用情况,但是对于它了解甚少。在查找了一些资料,个人还是比较能够接受中对于CPU的描述。首先来看看书中提供的一张图。这张图是关于经典...
使用logon trigger完成动态的session跟踪
在之前讨论过 关于oracle中session跟踪的总结,可以参见链接 http://blog.itpub.net/23718752/viewspace-1150568/基本的session跟踪方法都做了讨论,但是在实际应用中场景可能要复杂一些,比如我们可以对指定的session开诊断事件,如果session中运行的某个环节出现问题,可以根据诊断事件得到比较明细的递归sql...
由hugepage设置导致的数据库事故
近期客户希望提高业务处理能力,在现有的环境中加入几台weblogic服务器,所以需要增加一下连接数的配置,但是同时他们想对现有系统的设置一些变更,最后发送了一个清单给我们。 大体的变更如下: Change Processes from 10000 to 18000 Change PGA from 10G to 20G Change Buffer Cache from 20G to 40G Change Sh...
同样的sql执行结果不同的原因分析
今天开发的同事问我一个问题,说有一个sql语句,在weblogic的日志中执行没有结果,但是手动拷贝数据到客户端执行,却能够查到。这种奇怪的问题一下子就能引起我的好奇心,从我知道的原因来看啊,可能是存在不可见字符造成的。对于不可见字符的问题,有必要先说明一下,可以简单举个例子。我们创建一个表,然后插入的数据...
关于exp/imp的总结学习
关于exp/imp,是很常用的数据导出导入工具,在10g开始推出的数据泵datapump相当于是exp/imp的补充和升级版本。在后续章节再做一个总结。exp/imp的使用相对比较简单,通常用做在不同的数据库或者环境之间转移数据,即使数据库位于不同的平台,也可以通过统一的接口来做数据的导入导出工作。使用方法可以通过exp -help,imp -...
vi的补充学习
今天突然发现vi虽然用了些日子了,但是常用的一些命令之外,还是有些命令比较生疏,简单总结了一下,然后自己在vi里面编辑了一把,效果还不错。对于大家比较熟悉且常用的命令就没有再列举。欢迎大家拍砖,我来做一些汇总。选项 作...
由Gavin King的故事所做的感悟
如果在前几年SSH火热的时候,提起Gavin King,那是如雷贯耳,现在虽然从事数据库管理的部分要多一些,感觉开发都快淡出了自己的能力范围了。但是看到Hibernate的故事还是让人热血沸腾。SSH就是Spring+struts+Hibernate 的简称,后来有了Structs2,成了SSH2.先来看看没有Hibernate之前的Gavin King.(以下摘自http://develo...
关于表联结方法_sort-merge join
在比较经典的表联结方法中,nested loop join和hash join是比较常用的,对于sort-merge join来说,可能略微有些陌生。在数据库中有一个隐含参数,默认是开启的。NAME ...
关于ORA-01779问题的分析和解决
最近同事问我一个问题,是关于一个update语句的问题,需求有点特别,结果在使用update语句尝试了各种方法后,仍然是不依不饶的报出ORA-01779的错误。今天专门花时间分析了一下这个问题,还是有些收获。为了说明问题,我们先来看两组数据有两个表data,link,现在希望更新data表中的amount列值,和link表的credit_class做关...
关于shell中的pl/sql脚本错误排查与分析
今天有个同事问我一个问题,他说运行shell脚本的时候抛出了ORA 错误,但是对于错误的原因没有思路,想让我帮他看看。我查看了下,脚本的结构比较清晰,看起来像是按照shell脚本风格来做的,首先在pl/sql中声明了大量的procedure,类似shell中的function,大概有10多个procedure然后在最后使用一个类似main函数的pl/sql块...
awr中DB CPU过低的原因分析
前几天在做巡检的时候发现有个库的负载在某一个时间段内极高,高达100倍。一个10分钟的awr报告,得到的db time 却有1000分钟。Snap Id Snap Time Sessions Cursors/Session Begin Snap:2774513-Jan-15 06:00:...
使用telnet命令验证邮箱
前些天在看一本shell脚本攻略的时候,里面有一个章节是通过curl命令来访问gmail邮箱,我在本地反复尝试,看来还是google服务在大陆受限的原因,一直都不通。最后想把这种思路转化为可使用的方式,最后发现telnet还是一种可行的方式。当然在支持中文方面还是不够全面,总是会有中文乱码的问题。不管怎么说这种用法不太主流...
job处理缓慢的性能问题排查与分析
昨天开发的同事找到我说,生产有个job处理数据的速度很慢,想让我帮忙看看是怎么回事,最近碰到这种问题相对比较多了,但是问题的原因也是五花八门。我还是大体找他们了解了下情况,说有一个Job是处理文件传输的,但是从目前的运行情况来看,处理速度很慢,基本没什么进展,我向他们确认这几天是否有数据变更的操作,他们说...
通过执行计划中的CONCATENATION分析sql问题
昨天开发的一个同事找到我,说写了一条sql语句,但是执行了半个小时还没有执行完,想让我帮忙看看是怎么回事。他大体上给我讲了下逻辑,表bl1_rc_rates是千万级数据量的表,autsu_subscriber 是个临时表,里面只有三百多条数据,bl1_activity_history 表的数据量略小,是百万级的。 select distinct hist.ent...
通过shell定制dbms_advisor.quick_tune
在平时的调优工作中,在11g中的新特性sql monitor可以极大的简化性能监控的工作,对于执行时间超过5秒的sql语句都会记入v$sql_monitor中。但是如果某个sql语句还没有执行,或者执行时间已经是几天前了,等发现性能问题进行调优的话就会比较困难,采用dbms_advisor.quick_tune是一个不错的选择。如果sql语句比较庞大,比较迷...