shell脚本心得
零零星星的接触到写一些shell也有一些日子了,发现自己已经犯了不少的错误,自我总结下。 选择合适的shell shell本身有很多种,大体有如下的几种。 /bin/sh (已经被 /bin/bash 所取代) /bin/bash (就是 Linux 预设的 shell) /bin/ksh (Kornshell 由 AT&T Bell lab. 发展出來的,相融于 bash) /bin/tcsh (整合 C ...
数据迁移工具简单分析
exp/imp 对于数据结构的复制和同步,还是比较理想的工具。 在数据量比较小的情况下,这个工具的性能要远远好于datapump,而且重点推荐,他对于各种常用数据类型的支持还是很不错的。 有一些特性,在某种程度上要好于datapump,在做数据迁移的时候,commit特性还是很重要的。因为通过datapump碰到了很多undo空间不足带来...
海量数据迁移之分区并行切分
在海量的数据迁移中,如果某个表特别大,可以考虑对表中的分区进行切分,比如某个表有100g,还有100个分区,那么可以考虑针对这100个分区,那么可以考虑把这100个分区看成100个表进行并行抽取,如果某个分区数据比较多,可能生成5个dump,那么着100个分区,就可能生成105个分区以上。那么如果有100多个表,那么可能分区都算...
使用shell生成状态报表
在数据迁移的时候,目前启用了10个并行的进程。每个进程负责一部分的数据导入工作。然而在统计数据导入进度的时候,总是感觉抓不到重点,没有一目了然的报告。在定时做数据状态检查的时候,总是凭着感觉和不停的查看日志来得到最基本的状态。为了从这种体力工作中解放出来,今天写一个状态报表来对数据的导入状态进行清晰...
海量数据迁移之通过rowid切分大表
在之前的章节中,讨论过了通过,分区+并行等方式来进行超大的表的切分,通过这种方式能够极大的提高数据的平均分布,但是不是最完美的。比如在数据量再提高几个层次,我们假设这个表目前有1T的大小。有10个分区,最大的分区有400G,那么如果我们想尽可能的平均的导出数据,使用并行就不一定能够那么奏效了。比方说我们要...
通过shell脚本生成查询表数据的sql
在工作中我们需要查询表的数据条数,一般来说就是使用select count(1)或者select count(*)之类的语句。当然了对于不同的表来说,应该还是可以做一些细分,能够最大程度的提高效率,比如表中含有主键列,尝试走索引扫面可能会被全表扫描效率要高。如果表中的数据太多,而且没有一些相关的约束,可以考虑使用并行来提高等等...
通过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上创建了对应的同义词,但是在不用用户使用的使用,查出的结果会不相同,这个其实是根据...
通过shell脚本分析足彩
最近对足彩的数据进行了一点分析,简单分享一下自己的一点收获,对于足球比赛的赔率还是很有计算方法的。我收集了一些比赛的数据,进行了简单的分析。创建了一个表为data.然后对于即将开始的比赛,进行胜负平的赔率计算,简单的shell脚本实现如下:sqlplus -s n1/n1 <<EOFset serveroutput onset linesize 200se...
通过shell抓取html数据
最近看一些网站的时候,发现有些数据很有意思,想把数据截取出来,但是想把数据抽取出来很是困难。因为如下的小方框的数字都是上下两行排列,想要把数据抽取到一行是很难实现的。斯达 2:3 斯特罗姆 23:57 欧 亚 析 0-1 2.45↑ 3.50 2.32↓5.15...
使用shell抽取html数据之二
昨天使用shell脚本来抽取html数据的时候,碰到了一个问题,如果要抽取的数据成了如下的情形时,数据的抽取就会出现不一致,有一些记录会没有数据,只显示"未开售" 这个时候如果还是按照原来的思路来抽取就会出现数据混乱的情况,比如根据第一列抽取数据一共有75 行,但是根据右边的赔率只能得到74行,有一行的数据混乱,后...
通过shell解析dump生成parfile
当我们得到一个dump文件的时候,总是有些不太确定dump文件中是否含有一些我们原本不希望出现的表,如果在未知的情况下对dump文件进行操作时很危险的,比如我们想要得到的是表结构的信息。如果不指定需要的表,会把当前schema下所有的Object对象的信息都导出。一般的操作中,建议还是使用parfile。[ora11g@rac1 dbm_lite]...
通过shell得到数据库中权限的脚本
有些时候想直接查看某个用户下对应的权限信息。自己每次从数据字典中查找有些太麻烦了。如果涉及的对象类型多一些,很容易遗漏。一种方式就是通过exp直接导出对象的信息来,可以直接解析dump内容来得到object的一些信息,也可以直接访问数据字典表来得到。以下是在Metalink中提供的脚本,我在原本的脚本基础上稍微改动...