关于操作失误的数据修复
在系统升级的过程中,准备了大量的脚本,分成几个窗口来分别执行。在碰到问题的时候,一定要很细心和冷静,不经意的错误可以需要几倍,几十倍的努力来挽回。准生产环境中有一个表。TREATMENT_ACTIVITY,现在需要从另外一个临时的schema中insert一部分数据。 Name ...
关于move tablespace的问题总结
现在得到一个需求,需要把生产环境的多个schema下的表结构复制到测试环境中的一个schema下。生产环境和测试i环境的表空间配置都不一样。目前可以考虑用如下的几种方式来实现。1)使用exp/imp来做表结构的导出导入。2)使用dbms_metadata.get_ddl来生成对应的ddl语句。3)使用expdp/impdp来做表结构的导入导出。因为...
怎样突破表名30个字符的限制
根据oracle的规范,对象的长度最大为30位,也就是说,在平时的使用中如果碰到表名长度大于30位,首先oracle是不答应的,它会提示idnetifier too long的错误。而30位的长度总是感觉受到限制,现在在做数据迁移的时候就碰到的类似的问题。当然了,我不是想强行创建一个大于30位的表名,本来可读性就差些,办法总比困难多。想...
海量数据迁移之外部表切分
在前几篇中讨论过海量数据的并行加载,基本思路就是针对每一个物理表都会有一个对应的外部表,在做数据迁移的时候,如果表有上百G的时候,一个物理表对应一个外部表性能上会没有任何提升。如果需要做数据插入的时候,对undo是极大的挑战,从某种程度上而言,性能应该要比datapump要差。这个时候可以考虑一个物理表对应多个...
海量数据迁移之分区并行抽取
在之前的章节中分享过一些数据迁移中并行抽取的细节,比如一个表T 很大,有500G的数据,如果开启并行抽取,默认数据库中并行的最大值为64,那么生成的dump文件最50多为64个,每个dump文件就是7.8G,还是不小,况且在做数据抽取的时候,资源被极大的消耗,如果资源消耗紧张,可能可用的并行资源还不到64个。那么dump文件可能...
关于验证表中有无数据的方法比较
在平时的工作中,有时候需要准备一些脚本,比如能够简单验证一下表是否可访问,或者验证表中有无数据等。今天在测试环境进行了简单的模拟,发现还是有很大的差别。简单来说,要实现如上的需求有两种方式,一种是通过count来判断,另外一种是通过rowid来判断。举个例子。先来看一个大表,但是某个分区没有数据的情况。...
通过sql语句分析足彩
老是做工作中的数据分析,最近也在看足球彩票,竞猜游戏有输有赢,但是里面还是有不少的数据分析的乐趣,关于足球彩票的分析,自己写了如下的程序,可以参考。当然了,最好能带有主观的分析,这样可能准确率要高一些。以下是仅根据赔率做的一个分析。比如我们目前计划投资100块买单场竞猜,胜平负的赔率就有很大的差别...
VXFS启用异步IO导致的严重问题
今天在做数据迁移的时候,碰到了一个严重的问题,数据加载完全hang住了,最后无奈回退了。 系统使用的vxfs文件系统,在生产升级前一个月的时候,做过一次小规模的数据迁移,当时查看awr,ash,最后根据addm的推荐得出加载速度比较慢主要是由于异步IO导致的,而且当时生产库确实没有启用异步io, filesystemio_option的...
数据迁移工具简单分析
exp/imp 对于数据结构的复制和同步,还是比较理想的工具。 在数据量比较小的情况下,这个工具的性能要远远好于datapump,而且重点推荐,他对于各种常用数据类型的支持还是很不错的。 有一些特性,在某种程度上要好于datapump,在做数据迁移的时候,commit特性还是很重要的。因为通过datapump碰到了很多undo空间不足带来...
海量数据迁移之分区并行切分
在海量的数据迁移中,如果某个表特别大,可以考虑对表中的分区进行切分,比如某个表有100g,还有100个分区,那么可以考虑针对这100个分区,那么可以考虑把这100个分区看成100个表进行并行抽取,如果某个分区数据比较多,可能生成5个dump,那么着100个分区,就可能生成105个分区以上。那么如果有100多个表,那么可能分区都算...
使用shell生成状态报表
在数据迁移的时候,目前启用了10个并行的进程。每个进程负责一部分的数据导入工作。然而在统计数据导入进度的时候,总是感觉抓不到重点,没有一目了然的报告。在定时做数据状态检查的时候,总是凭着感觉和不停的查看日志来得到最基本的状态。为了从这种体力工作中解放出来,今天写一个状态报表来对数据的导入状态进行清晰...
通过addm分析io问题
昨晚在做测试环境数据迁移的时候,遇到了io的问题,本来预计2,3个小时完成的数据导入工作最后竟然耗了7个多小时。在数据的导入中,使用了10个并行的session,每个session都启用的并行度为8,在表级,索引级都做了nologging设置,在insert的时候使用了append模式,结果本来数据的导入还是比较顺利的,突然在8点左右开始就一...
关于oracle后台启用的schedule job
在昨天晚上10点开始,数据库的性能开始下降,出现了一些j00开头的进程。而且持续了比较长的时间,简单分析了一下,对应的进程执行的sql语句如下。####### Process Information from OS level as below ########oraccbs1 16184 1 23 22:00 ? 00:...
启用ODM极速调优IO
在平时的工作中,数据库所处的文件系统是vxfs的话,可以考虑启用veritas的odm特性。ODM(Oracle Dsk Manager)是在oracle 9i之后开放出来管理数据文件,可以提高oracle数据库的输入输出数据吞吐量。Veritas提供了ODM的扩展,可以在VxFS文件系统的基础上,为oracle提供更高的读写速率和更简便的管理,其在VxFS文件系统上的...
海量数据迁移之分区表批量insert性能改进
在平时的工作中接触到的分区表一般都比较大,而且分区也少则几十,多则几百,上千。在数据迁移的时候,分区表的迁移更是块大骨头,因为数据量太大,而且有些分区表中还有一些lob字段,想直接通过sqlldr来迁移还是需要做一些额外的工作。如果通过datapump分区导出数据,批量导入,也是一种思路,不过需要考虑好并发的进...
通过shell和sql结合查找性能sql
在生产系统中,会发现一些潜在的sql问题,为了能够及时和准确的定位,我们可以借助sql_monitor来做性能sql的查找。可以在后台启用一个job不定时的去查找。毕竟大半夜的我们去监控也是有难度的,我们希望一切都能很自然的处理,结果我在一个指定的目录下每隔10分钟去查找一次性能sql,如果当天已经有生成报告就不重新生成...
通过闪回事务查看数据dml的情况
昨天有一个网友问我,怎么能够查询一个表中最后一条插入的记录,我大概回复了,可以通过闪回事务来实现,但是得看什么时候插入的数据,也需要一定的运气。如果通过闪回事务来得到对应的undo_sql,可能多个dml语句对应一个事务,所以我们需要得到的是一个完整的事务的信息,里面包括对应的Undo_sql,这样才算得到比较完整的...
数据迁移前的准备和系统检查
关于数据迁移,在之前也讨论过一些需要注意的地方,可能林林总总列了不少,都是在数据迁移迁移前和迁移时需要注意的。http://blog.itpub.net/23718752/viewspace-1195364/我在这个帖子的基础上进行更多的总结和补充。数据升级前的测试 -)充分的测试,评估时间,总结经验,提升性能, 心中有数。在生产中进行数...
数据迁移中的数据库检查和建议
关于数据迁移,在之前也讨论过一些需要注意的地方,可能林林总总列了不少,都是在数据迁移迁移前和迁移时需要注意的。http://blog.itpub.net/23718752/viewspace-1195364/http://blog.itpub.net/23718752/viewspace-1254945/我在这些帖子的基础上进行更多的总结和补充。数据库级的检查和建议1)参数检查有些参数...
通过shell脚本得到数据字典的信息
在平时的工作中,可能需要查询一些数据字典的信息,比如数据字典对应的基表信息,可以得到更多数据库内部的一些详细信息。比如user_objects这个数据字典视图,里面可能就包含很多的信息。首先可以得到,它是一个视图,然后在public上创建了对应的同义词,但是在不用用户使用的使用,查出的结果会不相同,这个其实是根据...