探究AWR 第二篇
在探究awr第一篇中介绍了awr的一些基本操作 http://blog.itpub.net/23718752/viewspace-1123134/在这一篇中,我们来分析几个awr报告来探究一下awr的一些信息,其实在报告中有很多的信息是互相印证的。对于我们深入理解awr报告还是很哟帮助的。首先来看看CPU负载的分析,这个也是理解awr的一个切入点。CPU资源的考虑...
关于导入dump
在工作中,dump文件对于dba而言是再平常不过的文件了。 不过在导入dump文件的时候还是有很多的细节可以注意,可以避免一些不必要的问题。 exp/imp是比较经典的数据导出导入工具,不过自expdp/impdp推出以来,exp/imp还是受到了不少的冷落,在新的版本中,支持力度都集中在了expdp/impdp上面。不过不管怎样,exp/imp还...
一次数据库无法登陆的问题及排查
今天在中午的时候,收到客户的邮件,说数据库访问有问题了,赶紧连到生产环境查看。结果在尝试登录的时候报了listener的错误,感觉像是listener停了一样。> sqlplus n1/n1@xxxxSQL*Plus: Release 11.2.0.2.0 Production on Mon Dec 29 12:33:23 2014Copyright (c) 1982, 2010, Oracle. All rights reserved.ERRO...
crontab导致CPU异常的问题分析及处理
今天查看数据库负载没有发现问题,但是当我使用top命令的时候,发现有一个进程占用了大量的cpu资源而且已经执行很长时间了。这一下子引起了我的注意。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND ...
几个行列转换的实用小例子
create table session_test as select *from v$session;select count(*)cnt,status from session_test group by status;STATUSVARCHAR2(8)Status of the session:ACTIVE - Session currently executing SQL...
分析函数之窗口子句
关于分析函数,可能大家基本都是从row_number()开始了解到的。分析函数的使用在某种程度上可以避免自连接,使得原本较为繁琐复杂的查询一下子变得精简起来。分析函数分为分区子句,排序子句,和窗口子句,对于窗口子句来说,可能开始比较难懂,这部分的使用也尤为重要。还是先举个例子,然后基于例子再来简单分析一下分...
通过java程序抽取日志中的sql语句
今天在翻看以前的笔记时,发现自己在很早之前写过一个java程序,能够解析日志中的sql语句。当时使用的环境是weblogic,日志目录下总是有几十上百个日志文件,有时候排查问题的时候只需要找到对应的DML语句即可。使用linux命令固然也可以,但是解析的时候还是比较被动,不能够正确地解析出sql语句来。比如日志中出现inser...
关于order by中的数据排序
今天开发的一个同事找到我,说碰到一个比较奇怪的问题,说两个等价的查询类似下面的形式。select *from test where account_id=xxxxxx order by creation_dateselect *from test where account_id=xxxxxx and entity_id=xxxxx order by creation_date两个查询都会返回4条结果,但是第一个查询和第二个查...
oracle中的数组(第一篇)
数组在各种编程语言中都是很重要的数据结构实现,在oracle中也有自己的一席之地。自己简单做了几个实验,发现很多东西还是眼高手低,真实去做的时候,里面还是有不少的细节的。首先数组大体可以有以下几种。固定长度的数组变长数组多维数组如果说实现方式,就有varray,嵌套表,record等等。我们从varray来开始。比如实...
巧用分析函数循序渐进解决实际问题
今天同事问我一个问题,他说问题的逻辑很清晰,但是感觉无心下起。问题的逻辑大体是这样的。有一个表,存在着大量的数据,比如account_id为1代表account的编号,可以把这个account做暂停操作,相当于把账户冻结,然后在一定的时候后做恢复操作,相当于把账户解冻。就对应ACTIVITY_CODE的 SUSPEND,RESUMEACCOUNT_ID ACTIVI...
关于导入导出sequence
sequence在平时的工作中是一个默默无闻的角色。可能创建好之后很少会去修改它,它就在默默地自增长。直到一些特殊的原因导致sequence出现问题,比如提供了一个脚本,需要使用insert语句修复一些问题,修复的语句类似insert into test values(100,xxxxxx,xxxx);正确的写法应该是insert into test values(test_seq.nextval,...
巧用shell脚本统计磁盘使用情况
在系统环境中存在大量的文件时,统计磁盘空间的工作变得尤为重要。首先是传统的文件统计,通常使用-s选项,但是只能得到一个概要的信息,如果想定位哪些文件消耗的空间较大还是比较麻烦的。[ora11g@rac1 new_test]$ du -s .1296 .[ora11g@rac1 new_test]$ du -sh .1.3M .[ora11g@rac1 new_...
关于SQLRecoverableException问题的排查和分析
上周的时候在升级时候,客户反馈某个job报了下面的错误,想让我们查看一下是不是数据库这边有什么问题。报错的内容如下。Caused by: java.sql.SQLRecoverableException: No more data to read from socket at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1142) ...
强大的awr format
awr报告对于dba而言是工作中重要的一部分内容,有些时候感觉跟去医院看病的化验单一样,各种指标和参数。有些高了,有些低了都是需要注意的内容。之前打印了一份awr报告,竟然有将近40页的样子,但是阅读awr报告也只能按照一定的思路来看,如果通读,那确实是云里雾里。awr format 是在http://tylermuth.wordpress.com/这个...
通过shell定制dbms_advisor.quick_tune
在平时的调优工作中,在11g中的新特性sql monitor可以极大的简化性能监控的工作,对于执行时间超过5秒的sql语句都会记入v$sql_monitor中。但是如果某个sql语句还没有执行,或者执行时间已经是几天前了,等发现性能问题进行调优的话就会比较困难,采用dbms_advisor.quick_tune是一个不错的选择。如果sql语句比较庞大,比较迷...
通过执行计划中的CONCATENATION分析sql问题
昨天开发的一个同事找到我,说写了一条sql语句,但是执行了半个小时还没有执行完,想让我帮忙看看是怎么回事。他大体上给我讲了下逻辑,表bl1_rc_rates是千万级数据量的表,autsu_subscriber 是个临时表,里面只有三百多条数据,bl1_activity_history 表的数据量略小,是百万级的。 select distinct hist.ent...
完美的执行计划导致的性能问题
今天现场的开发同事反馈有一个job处理数据的速度很慢,从半夜2点开始运行,结果到了早上8点还没有运行完,最后无奈kill掉了进程。等我刚到公司,他们想让我查查倒底是什么原因导致的执行速度很慢。首先和他们简单沟通了下,问最近有什么新的变更吗,他们说没有,平时跑这个job的用户量不是很大,今天早晨调用job的时候用户...
ORA-600(504)(row cache objects)错误
客户数据库出现ORA-600(504)错误,其中第5个错误参数为row cache objects。以前碰到过一个sharedpool的相关latch:http://yangtingkun.itpub.net/post/468/526079 错误信息为:Wed ...
ORA-600(KSFD_DECAIOPC)和ORA-600(kfioReapIO00)错误
由于共享磁盘问题导致的两个ORA-600错误。 客户的10.2.0.4RAC for Linux X86-64,在告警日志中出现了大量的错误信息:Tue Apr 24 16:15:04 2012Errors in file /u01/admin/orcl/udum...
ORA-7445(lxsCntChar)错误
使用正则表达式导致的错误。 错误信息为:Fri Dec 16 15:37:51 2011Exception [type: SIGSEGV, Invalid permissions for mapped object][ADDR:0x2AFEA42A4000] [PC:0x9016222, lxsCn...