强大的awr format
awr报告对于dba而言是工作中重要的一部分内容,有些时候感觉跟去医院看病的化验单一样,各种指标和参数。有些高了,有些低了都是需要注意的内容。之前打印了一份awr报告,竟然有将近40页的样子,但是阅读awr报告也只能按照一定的思路来看,如果通读,那确实是云里雾里。awr format 是在http://tylermuth.wordpress.com/这个...
关于SQLRecoverableException问题的排查和分析
上周的时候在升级时候,客户反馈某个job报了下面的错误,想让我们查看一下是不是数据库这边有什么问题。报错的内容如下。Caused by: java.sql.SQLRecoverableException: No more data to read from socket at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1142) ...
巧用shell脚本统计磁盘使用情况
在系统环境中存在大量的文件时,统计磁盘空间的工作变得尤为重要。首先是传统的文件统计,通常使用-s选项,但是只能得到一个概要的信息,如果想定位哪些文件消耗的空间较大还是比较麻烦的。[ora11g@rac1 new_test]$ du -s .1296 .[ora11g@rac1 new_test]$ du -sh .1.3M .[ora11g@rac1 new_...
关于导入导出sequence
sequence在平时的工作中是一个默默无闻的角色。可能创建好之后很少会去修改它,它就在默默地自增长。直到一些特殊的原因导致sequence出现问题,比如提供了一个脚本,需要使用insert语句修复一些问题,修复的语句类似insert into test values(100,xxxxxx,xxxx);正确的写法应该是insert into test values(test_seq.nextval,...
巧用分析函数循序渐进解决实际问题
今天同事问我一个问题,他说问题的逻辑很清晰,但是感觉无心下起。问题的逻辑大体是这样的。有一个表,存在着大量的数据,比如account_id为1代表account的编号,可以把这个account做暂停操作,相当于把账户冻结,然后在一定的时候后做恢复操作,相当于把账户解冻。就对应ACTIVITY_CODE的 SUSPEND,RESUMEACCOUNT_ID ACTIVI...
oracle中的数组(第一篇)
数组在各种编程语言中都是很重要的数据结构实现,在oracle中也有自己的一席之地。自己简单做了几个实验,发现很多东西还是眼高手低,真实去做的时候,里面还是有不少的细节的。首先数组大体可以有以下几种。固定长度的数组变长数组多维数组如果说实现方式,就有varray,嵌套表,record等等。我们从varray来开始。比如实...
巧用linux命令做图片下载器
在平时上网的时候,发现有些图片不错,想保存到本地,一个一个的保存确实够费劲的,如果把整个网页都保存了,有些又是自己不需要的,就算下载下来了,还得从上百个网页元素中去筛选,哪些是css文件,哪些是js文件。如果能够使用命令来作为图片下载器就好了,至少不用那么费神的去干很多重复的工作。我们可以使用curl这个强...
关于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条结果,但是第一个查询和第二个查...
通过Linux命令实现屏幕录制和回放
平时在工作学习中如果可以录屏的话,那么在以后能够再看真是很难得的学习资料。有些远程的操作都是命令行,如果使用录屏软件,可能占用的空间极大。其实Linux中可以通过命令行来实现屏幕录制和屏幕回放。如果自己需要给别人演示一些操作,可能事先已经准备好了,在演示的时候只需要播放即可。或者在系统升级的时候需要...
通过java程序抽取日志中的sql语句
今天在翻看以前的笔记时,发现自己在很早之前写过一个java程序,能够解析日志中的sql语句。当时使用的环境是weblogic,日志目录下总是有几十上百个日志文件,有时候排查问题的时候只需要找到对应的DML语句即可。使用linux命令固然也可以,但是解析的时候还是比较被动,不能够正确地解析出sql语句来。比如日志中出现inser...
分析函数之窗口子句
关于分析函数,可能大家基本都是从row_number()开始了解到的。分析函数的使用在某种程度上可以避免自连接,使得原本较为繁琐复杂的查询一下子变得精简起来。分析函数分为分区子句,排序子句,和窗口子句,对于窗口子句来说,可能开始比较难懂,这部分的使用也尤为重要。还是先举个例子,然后基于例子再来简单分析一下分...
几个行列转换的实用小例子
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...
2015年学习计划
虽然忙活了一年,但是今天审视自己在年初定的学习计划,自己也是好多作业没有完成。有些要求是简单了解,书都没找到,有些要求是熟悉,也都忘了看了。2015年重拾2014年未完成的学习计划,也让自己在得瑟的时候明白自己其实好多都不会。大家也可以抽空订立自己的学习计划,可以安排好时间,不管能不能完成,总之过程是很...
crontab导致CPU异常的问题分析及处理
今天查看数据库负载没有发现问题,但是当我使用top命令的时候,发现有一个进程占用了大量的cpu资源而且已经执行很长时间了。这一下子引起了我的注意。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND ...
一次数据库无法登陆的问题及排查
今天在中午的时候,收到客户的邮件,说数据库访问有问题了,赶紧连到生产环境查看。结果在尝试登录的时候报了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...
关于导入dump
在工作中,dump文件对于dba而言是再平常不过的文件了。 不过在导入dump文件的时候还是有很多的细节可以注意,可以避免一些不必要的问题。 exp/imp是比较经典的数据导出导入工具,不过自expdp/impdp推出以来,exp/imp还是受到了不少的冷落,在新的版本中,支持力度都集中在了expdp/impdp上面。不过不管怎样,exp/imp还...
通过shell分析表依赖的层级关系
在平时的工作环境中,总会有一些表会存在依赖关系,比如我们有三张表customer,用户表subscriber,账户表account其中客户可以有多个用户或者账户,subscriber表和account表中就存在外键customer_id指向了customer表。这种情况下表的依赖关系就如下所示:customer &...
关于技术分享的思考
记得从自己2月份申请了公众号群发学习笔记以来,自己坚持写技术博客已经有快300天了,从当时一个简单的念头到现在的不断坚持,其中的苦与累,个中滋味,自己是感慨良多。有时候翻看起以前的笔记,就能勾起自己的一些回忆。学习笔记可能涉及的面不广,但是基本都是以实用为出发点,纯粹就是为了技术分享和个人参考。从零...
关于oracle中的反连接
在之前的章节中见到讨论过oracle中的半连接 http://blog.itpub.net/23718752/viewspace-1334483/与半连接相对应的是反连接,简而言之半连接就是查询条件中的in,exists,反连接就是not in, not exists这种类型的连接。在asktom中,tom也对大家关心的in,exists,not in, not exists的问题进行了大量的佐证和解释。因...
通过java程序模拟实现地铁票价2+2=12
地铁票价在这周六开始就要上涨了,这几天做地铁明显感觉人比平常多了很多。大家也都在默默的等待这一刻的到来,尽管很不情愿,但是终究会来。到时候肯定吐槽的人一抓一大把,毕竟一天上班4块的时代就要终结,一下子变成十几块,票价涨了,生活成本都在上涨,其它都没有变化,生活着实不容易啊。我每天从二号线转到四号线...