海量数据迁移之冲突数据筛查
对于数据迁移来说,无论准备工作准备的多么充分,在测试和正式生产环境中,心里还是会对冲突的数据有一些疑虑,心里感觉没底,因为生产的数据也是在不断变化的,要迁移的数据也在做相应的改动,在这样的环境中,其实数据抽取的工作还是顾虑比较少的,只要侧重考虑性能的提升,而在于数据加载的过程中,如果出现主键冲突的字...
海量数据迁移之外部表加载
在并行生成了大量的dump文件后,可以在目标环境上对数据进行加载,这个加载的过程时间极短,都基本可以在毫秒级完成。由于在外部表的加载过程中需要知道表结构的定义,所以可以通过如下的脚本得到表定义的基本语句,输出和desc类似。因为目标环境中的表结构可能会和源dump文件中的表结构有一定的出入。所以可以在目标环境...
海量数据迁移之外部表并行抽取
在10g开始的新特性中,外部表是一个不容忽视的好工具。对于大型项目中海量数据使用sqlloader是一种全新的方式,不过很明显,sqlloader的可扩展性更强,但是基于oracle平台的数据迁移来说,外部表的性能也不错。对于数据迁移来说也是一个很好的方案。使用外部表来做数据迁移,可以“动态”加载数据,能够很方便的从数据库中...
记一次数据库重启后归档急剧增加的问题
在本地的环境中测试外部表的性能,由于空间有限,不一会儿归档的空间就爆了。然后文件貌似出现了系统级的问题,刚刚rm掉的归档日志文件。隔了几秒钟再ls,就出现了。怎么删都删不掉。尝试了多次之后,无奈尝试shutdown immediate结果等了好半天还是没反应,然后采用shutdown abort后重启,库直接起不来了。报了ora错误,然...
insert的不同场景性能比较
关于Insert的问题,可能在一些场景中会有完全不同的期望和结果,在日常工作使用的库中,需要表在Logging模式,必要时需要一些索引 但在数据迁移中,可能为了提高速度,索引就需要考虑重建了。 我做了一些场景的测试,并且做了详细的数据比对。 第一种场景:table在nologging模式下。并且表中没有索引, 在插入不同数据...
关于创建索引的ora问题
创建index的时候,报了如下的错误。让人有些摸不着头脑。 create unique index t_pk on t(object_id,object_name) nologging * ERROR at li...
创建index 使用Online导致的问题
在本地的测试库中,本来空间就不足,结果创建了一个表有600多万条记录,想创建一个index. 物理段有340多M. 临时段大小有100M,结果想创建一个索引,总是报临时表空间不足的错误。 [ora11g@rac1 test]$ ksh test.sh "create unique index t_pk on t(object_id) tablespace pool_data nologging online;" create unique in...
通过shell脚本监控日志切换频率
在数据库遇到性能问题的时候,可能从io,cpu等角度能够下手找到性能瓶颈,日志的切换也是影响性能的一个因素,如果日志切换台频繁,等待时间就会在日志相关的事件上,从数据库的角度来说,肯定是io的瓶颈。可以通过如下的shell脚本来得到一个简单的报告。脚本如下:sqlplus -s $DB_CONN_STR@$SH_DB_SID<<EOFset line...
生产系统调优之_毫秒级的改进
生产中有一个sql语句,做了union-all操作,对于时间的要求是极其严格的,目前已经从2秒的改进调整到了1秒以内,在此基础上还想做进一步的调整,因为极其频繁的查询,如果一丁点的改进都会在时间上的飞跃,以下的sql语句目前时间控制在不到半秒的样子。因为表SMALL_OFFER_PARAM 是一个数据字典表,查询的字段上没有相关的索...
生产系统调优之_敢于质疑
接着昨天的那个问题来说。有个sql语句在做了统计信息收集之后,速度有了一定的提升,从5秒的响应降低到了2秒。但是和预期还是有一定的差距,按照80条查询请求在短时间内响应。2秒*80000次/60/60=44.4小时,本来感觉可以接受的一下子就成了大问题。 Elapsed Tim...
生产sql调优之统计信息分析
今天凌晨,又被电话叫醒了,说是有1个sql,现在跑的很慢。问题已经挺严重了,想让我看看,能不能做点什么。首先就是和他们确认最近有什么改动,他们说这个是用了很久的sql语句了,没有任何的改动,再听他们说,之前也没有任何的问题。然后就和他们确认之前这个jobl处理大概多长时间,那个哥们说他也是最近才进的这个项目...
生产系统pl/sql调优案例
昨天基本休息了一天,想着生产系统升级也会多多少少碰到些问题,肯定有一些心得或者是值得学习的东西,结果昨晚到现在生产系统升级一直为一个pl/sql的问题所困扰。在测试环境中只用了十多分钟, 在生产系统上跑了快5个小时。这个经历太痛苦了,大半夜还在考虑怎么优化真是痛苦。这个也算是一个很深刻的学习经验,和大家...
sqlldr批量导入导出数据测试
sqlldr是在处理大数据量的操作中建议采用的方式,它有许多性能想关的开关,能最大程度的减少redo,undo的生成,控制数据的处理方式(insert,append,replace,truncate)因为项目需要,对比datapump性能还是不理想,所以还是希望采用sqlldr来做。个人做了简单的测试。根据thomas kyte的介绍,并行执行路径加载时最快的方式,能...
使用sql语句分析双色球
这个题目看似有点无厘头,老写技术博客,也来干点“正事",用sql语句分析一下近十年来的双色球情况,不过我肯定算不出来开奖结果,纯属个人娱乐,个人觉得概率让一切皆有可能,但是用sql语句测试,有些结果还是和大家的想象有很大的出入。首先通过博彩网站找到数据来源,可以下载成excel文档之类的,对格式做一个简单的排...
关于exp statistics的问题和简单测试
在数据导出的时候,可能会碰到EXP-00091: Exporting questionable statistics.的问题,有时候会让人有点摸不到头脑,不知道该调整什么。 这个时候NLS_LANG就发挥作用了。 [ora11g@rac1 ~]$ exp n1/n1 tables=t file=t.dmp rows=n Export: Release 11.2.0.3.0 - Production on Fri May 23 19:26:35 2014 Copyright (...
使用shell脚本查看数据库负载情况
平时在查看数据库的问题时,会有种迷茫的感觉,如果没有任何人反馈问题,基本上没有主动查找问题的方向,awr,ash都是在得知问题发生的时间段或者一些时间戳来从历史记录中查找相关的信息,个人整理了如下的脚本,能够显示当天的时间段内数据库的负载信息,能够很好掌握数据库的忙闲情况。 来看一个简单的例子,比如我要查...
归档问题导致的数据库无法启动
本地有一个小的环境,今天照例登上sqlplus,突然发现报了如下的错误。一看原来归档满了。我记得前几天做一个批量操作临时把temp文件resize了很大,限于本地空间有限。准备改回去。把多余的归档删除了。 sqlplus n1/n1 .... ERROR: ORA-00257: archiver error. Connect internal only, until freed. 这个时候sysd...
循序渐进调优ddl的案例
在平时的工作中,可能需要导入一些数据,有些表可能比较大,对于constraint的操作可能会耗费大量的时间,今天简单做了一些相关的测试,也提出了一些相关的优化方案,对结果进行比较,看看哪种才是比较合理的方法。 首先监控redo,undo的生成量也是衡量的一个标准。本次测试就简单从redo,undo,执行时间这三个方面进行总结。...
有趣的linux命令总结
linux命令可以简化我们工作中的许多任务。关于Linux这个主题已经考虑很久了,也还是在不断的完善中,在自己的实验和各种资料的整理中,认为还是一些不错的命令。 1.查看自己常用的linux命令 history | awk '{print $2}' | sort | uniq -c | sort -rn | head -10 这行脚本能输出你最常用的十条命令,可以看...
字符画,你可能未知的美
在平时的工作中,如果接触字符界面时间比较长的时候,都会无意识的感觉到单调,认为字符只能表达一些抽象复杂的东西,对于图形的那种简单和清晰,显得有些力不从心。 今天和大家来分享一下字符画,可能你未知的美。 先来和大家分享一个简单的例子。 如果老看大片,这个场景是经常能看到的。 我自己也...