ORA-17500 ODM err的问题排查
今天在一套环境中做系统检查的时候,发现alert日志中有一段ODM的错误。日志内容大体如下,可以看到是在半夜4点多报的错误。Clearing Resource Manager plan via parameterFri Aug 22 02:00:52 2014ALTER SYSTEM ARCHIVE LOGFri Aug 22 02:00:52 2014Thread 1 advanced to log sequence 6934 (LGWR switch) Cur...
海量数据迁移之使用分区并行切分导入
在之前的章节中讨论过怎么把一个很大的分区表切分为若干的dump文件,在数据加载的时候能够同时做基于每个分区的数据导入,如果有些分区比较大,有几十个dump文件,那么这个分区做数据导入的时候是不能再进行并行切分了。现在在准生产环境中先查找了如下的表,charge,memo,charge_rel数量级都过亿,而且memo表中还含有lob...
使用shell测试历史数据样本
使用shell分析了一些数据有一些时间了,而且分析的数据情况也是基于历史数据,今天写了个脚本对历史的数据进行一个简单的分析,看看准确率到底有多高。这里有一个借助一个脚本12c.sh 对一些数据的排列百分比进行分析,比如今天有两个球队,主队让球一个,胜平负的概率为35%,40%,25%表data里存放着一些样本数据,记录了...
海量数据迁移之使用shell启用多个动态并行
在数据迁移中,可能有成百上千个表,有些表很大,有些表又很小。如果启用了多个并行的进程,可能会有资源分配上的问题。比如下面有10个表,100代表预计的时间为100分钟。table1 100table2 90table3 90table4 80table5 80table6 70table7 60table8 60table9&nbs...
一条运行了3天的"简单"的sql
早上刚到公司,查看系统的负载,就马上看到一个进程的执行时间已经有3天了。而且cpu的消耗极高。Tasks: 2374 total, 19 running, 2354 sleeping, 0 stopped, 1 zombieCpu(s): 21.7%us, 2.7%sy, 0.0%ni, 74.5%id, 0.0%wa, 0.1%hi, 0.9%si, 0.0%stMem: 37...
linux乱码和数据库乱码的问题简单排查
在本地的虚拟机环境一直凑合着用英文,今天想看看中文的东西都显示乱码,下定决心要把问题解决了。如果直接打印文本内容,通过putty也会显示乱码。[ora11g@rac1 ~]$ cat aa.shδ? ε??ο?θ?ζ―δ?δ??ζ?θ―[ora11g@rac1 ~]$这个时候很可能是putty的编码转换的问题,通过查看putty的设置,如上,可...
通过分区键值发现性能问题
在很多应用中如果数据量少有规模,都会有大量的分区表存在,使用比较多的是range partition.一般的range partition都一时间为键值,或者根据业务绑定的关键id值。虽然已经做了一些大数据量的数据迁移,但是不管是按照分区抽取,还是根据数据条数抽取,发现有一个表比较奇怪,一个100G左右的分区表,80%以上的数据都分布在...
简单分析oracle的数据存储
在数据库的存储结构中,我们知道一般来说一个表都存储在对应的数据文件里,数据文件可以分为多个段,一般来说一个表会对应一个数据段,单纯考虑数据段的时候,数据段又可以分为多个区,每个区都可以分为若干个数据块,在操作系统层面,有对于的数据块映射和数据库层面的数据块有一个映射,可以打个比方来说,一栋大楼里面可以...
关于分区表的move操作
关于分区表的move操作还是很值得深究的一个问题。如果分区表中含有lob字段,难度还会加大。对于普通的表而言,做move操作室理所当然,oracle提供的方式很直接快捷。当然了这个命令也不是高可用的范畴。但是对于数据重组还是很方便快捷的。一般来说,如果尝试对分区表进行move操作,会得到如下的错误警告。SQL> alter...
生产环境sql语句调优实战第六篇
生产环境中有大量的sql语句在运行,尽管有awr,ash做数据的收集统计,但是dba的调优工作大多数情况都是在问题已经发生后做排查的,有些sql语句可能执行的时间有1,2分钟左右,但是sql语句本身有潜在的性能问题,通过awr是定位不到的,ash尽管能够查到,但是我们在未知的情况下怎么知道问题发生的精确时间点,通过sql monito...
批量转换分区表为普通表
今天数据迁移的小组找到我,希望我能够重新构建一些测试环境,其中测试环境中的一些分区表都需要去掉分区,转换成普通表的形式,因为他们在做一些工作的时候碰到了问题,而且希望必要的约束等都保留,这个需求听起来倒不复杂,很清晰,我看了下需要转换的表,一看有将近100多个,而且重构好几套环境,想想都头疼。这个需求...
海量数据迁移之通过shell估算数据量
在数据迁移的时候,需要根据用户量来评估需要在表空间理添加的空间大小。比如迁移5百万的用户和迁移200万,两者需要添加的数据量差别很大,在资源有限的情况下,需要一些比较合理的估算,毕竟在生产环境中做数据加载的时候报了空间不足的问题就是准备太不充分了,稍后的数据修复任务就难上加难。比如我们现在客户提供了如...
使用utl_file做选择性数据导出
在平时的数据导出中使用exp/expdp能够满足绝大部分的数据导出任务。如果有一些表的数据不多,但是查询条件要复杂一些,使用exp/expdp就很吃力了。或者在和外部系统的交互中,使用xml或者文本文件是一个很兼容的选择,这个时候使用exp/expdp也满足不了要求。这个时候可以考虑使用utl_file的提供的一些功能来做选择性的数据...
使用dbms_metadata生成建表语句
有时候在工作中,可以使用exp/imp得到表的创建语句。如果想得到关于table,index,constraint的语句,可以考虑使用dbms_metadata来实现。我们可以使用如下的脚本来得到建表语句,对应的索引语句,和ref_constraint语句。建表语句就不多说了,关于索引的部分,过滤了主键和唯一性索引的部分,这些语句会和建表语句中的cons...
一个普通数据库用户所能查到的"意料之外"的信息
有时候限于工作环境的情况,大多数开发人员只得到了一个权限收到限制的数据库用户。可能你都不知道你所拥有的数据库用户都能查到哪些你想象不到的数据库信息,其实你知道还是不知道,哪些东西就在那儿:)假定现在给你一台机器,让你在一个已经登录的sqlplus环境下自己探索一把,在短时间内完成下面的工作,你心里有底吗?...
生产环境sql语句调优实战第七篇
在数据迁移完成之后,开始了例行的后期数据库维护,早上一来就发现了一个sql执行时间很长了。达到了37279秒。最后在改进调优之后执行速度在1分钟以内。这个速度是毫无疑问的性能问题,但是是否是因为数据迁移直接导致的呢,通过简单的脚本分析,得出了如下的图表。显示了同样的sql语句在7月份至今的执行情况,还真是奇怪...
关于oracle session的简单测试
平时查看v$session的时候要定位一个session,需要sid,serial#这个两个值,其实更多时候我们关注更多的是sid,对于serial#却不太了解。 至少从v$mystat中,可以看到,是只能定位到sid的,对于serial#的值还需要借助v$session来查找。 SQL> desc v$mystat Name ...