关于导入导出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...
关于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条结果,但是第一个查询和第二个查...
几个行列转换的实用小例子
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年未完成的学习计划,也让自己在得瑟的时候明白自己其实好多都不会。大家也可以抽空订立自己的学习计划,可以安排好时间,不管能不能完成,总之过程是很...
关于导入dump
在工作中,dump文件对于dba而言是再平常不过的文件了。 不过在导入dump文件的时候还是有很多的细节可以注意,可以避免一些不必要的问题。 exp/imp是比较经典的数据导出导入工具,不过自expdp/impdp推出以来,exp/imp还是受到了不少的冷落,在新的版本中,支持力度都集中在了expdp/impdp上面。不过不管怎样,exp/imp还...
通过sql语句分析足彩(第三篇)
在之前写过两片关于sql语句分析足彩的。都从不同的角度提供了一些思路,之前是基于500场比赛的数据分析,为了数据分析的更加有说服性,我抽取了7000多场比赛的数据来作为分析的基础。自己是在世界杯的时候开始买的,发现真是期望越大,失望越大.。来看看总体的比赛情况。从1月份开始到10月份,有大概7000多场比赛。我们...
关于等待事件"read by other session"
在查看数据库负载的时候,发现早上10点开始到12点的这两个钟头,系统负载异常的高。于是抓取了一个awr报告。Snap IdSnap TimeSessionsCursors/SessionBegin Snap:2402718-Dec-14 10:00:433065...
使用shell定制addm脚本
在10g开始推出的addm对于工作中的调优能够提供很多的帮助,而且建议也更加客观和全面。但是使用addmrpt.sql的时候还是有些慢,可以使用如下的脚本来定制addm,能够根据快照生成指定的addm报告。脚本的内容如下:相比于定制awr,ash要略微有一些难度。对于addm目前只提供了文本格式的内容,所以格式的处理上没什么特别的地...
关于reset sequence
sequence在工作中使用比较频繁,对于Insert中插入的值,如果只需要它能够自动递增,这个时候sequence就派上用场了。但是既然sequence的值需要递增就有可能会达到最大值。比如sequence从1开始递增,递增幅度为1,最大值为100,那么很快就会达到最大值。我们可以指定sequence的值。这个时候可以使用删除,重建的方式,但是这种...
关于索引和空值的讨论
在日常的工作中,空值总是有特殊的身份,对于它的处理有时候也是比较纠结。有时候创建索引的时候会因为空值出现一些奇怪的结果。有时候一个简单的查询因为空值却走不了索引。有时候却因为空值而能走索引。我们来简单的模拟一下这些问题。首先创建一个空表,注意对于id列我们是加了not null的约束的。SQL> crea...
使用awr来分析session leak问题
awr是生产环境中排查问题的利器,但是有一些问题是awr定位不了的。不如session leak的问题,因为v$session中的数据是实时改变的,一来awr生成快照的频率也有限,二来如果session leak的问题发生,但是系统资源消耗不高,awr也不一定能够马上定位出问题所在。对于session leak的问题,当发生问题的时候,等我们连到系统中的...
对IMP-00013问题的思考
对于IMP的问题或者是各类ORA问题,如果碰到的时候使用oerr是一个很不错的参考方案。比如对于ora错误12041的解释如下。> oerr ora 1204112041, 00000, "cannot record ROWIDs for index-organized table \"%s\".\"%s\""// *Cause: Index-organized tables do not have ROWIDs. Therefore a materialized// ...
关于查询转换的一些简单分析(二)
关于查询转换的作用,在之前的一篇博文里面也大概说了视图合并和子查询嵌套的部分。http://blog.itpub.net/23718752/viewspace-1310272/ 今天来举一个实例来分析一下。这条sql语句是在生产环境中运行的,目前执行速度在0.1秒左右。我们来看看从查询转换的角度来看,对于同一条sql语句,反复的变化就能够折腾出不少的...
关于interval partitioning
今天一个开发的同事问我一个问题,说在系统中目前需要一个临时的解决方案,定义了一张表,目前想设定为分区表,因为会和外围系统交互产生大量的数据,所以需要按照小时来做分区,按照目前的数据情况,可能每个小时的数据量都在几十万~百万.如果按照常规思路来说,那这个需求基本上时候不可能实现的.一个是分区的限制数,...
数据库静默安装总结
在学习数据库的时候,不知道dbca的命令用了多少遍,但是越是安装也是觉得自己会的越少,因为图形界面的清晰直白反而不知道哪些准备工作是需要特别准备的,如果在远程支持的环境中,图形界面就会受到网络带宽的影响,如果在本地的环境中学习的时候,总是提示少这个包,那个包的。其实有很多的安装包如果不使用图形界面都不...
关于表联结方法(一)
在sql语句中,如果from后面有多个表时,关于表的联结方法是很重要的一个环节。大体有nested loop join,hash join,merge join-->nested loop join这种场景一般适用于大表和小表的关联,一般来说小表适用做为驱动表,对于小表中的匹配记录和大表做关联,这个时候小表是在外部循环,大表在内部循环,小表中的匹配记录都和...
和Null有关的函数
关于null相关的函数在日常的工作中还有比较实用的,可能会碰到各种和Null校验相关的情况,大体有以下几种。case whendecodenvlnvl2lnnvlnullifcoalsce-->case whencase when算是这个比较通用的方法,可以支持各种复杂的逻辑判断,对于Null的校验也不在话下,可能相对来说程序会略显臃肿。在性能方面还没有...
关于降低高水位线的尝试
在前一段时间,生产环境中有几个很大的分区表,由于存在太多的碎片,导致表里的数据就几十条,但是查询的时候特别慢。很明显是高水位线导致的问题。一般来说这类问题,使用备份->truncate->insert的方式比较保守,不适用于在线操作。而在10g开始的一个新特性shrink算是一个比较理想的方案,按照新特性的预期,速度也是很快...
联系生活来简化sql语句
目前生产环境中有一条sql语句的CPU消耗很高。执行时间比较长。从awr中抓到的sql语句如下:SELECT run_request.run_mode, cycle_groups.flow_id, cycle_groups.request_id, cycle_groups.dynamic_attributes, &nb...