2014年9月11日

ORACLE迁移GP实践

摘要: 最近在做oracle到greenplum的迁移实践,步骤如下:1. 使用ora2pg实现Oracle的数据结构迁移到GP的实现过程2. Oracle的数据迁移到GP的实现过程1. ora2pg的使用地址: https://github.com/darold/ora2p关系图如下:需要安装DBD-or... 阅读全文

posted @ 2014-09-11 23:28 gobird 阅读(9452) 评论(2) 推荐(0) 编辑

2014年3月29日

greenplum表的distributed key值查看

摘要: greenplum属于分布式的数据库,MPP+Share nothing的体系,查询的效率很快.不过,这是建立在数据分散均匀的基础上的.如果DK值设置不合理的话,完全有可能出现所有数据落在单个节点上的情况,这就体现不出优势来.因此,DK值的设置是否合适是建表的时候,需要考虑的重要因素之一. 查看表(table_name)的数据在节点的分布情况:select gp_segment_id,count(*) from table_name group by gp_segment_id; 如果数据有严重倾斜的话,即某些节点的数据量过大,表示DK值需要重新调整.调整语句为alter table t... 阅读全文

posted @ 2014-03-29 15:12 gobird 阅读(5190) 评论(1) 推荐(1) 编辑

2014年3月27日

oracle dump的使用心得

摘要: 使用DS开发的时候,有的时候会遇到一个问题:数据库层面定义的空格与DS自已定义的空格概念不一致,导致生成的数据会有一定的问题. 举例来说: 在数据库里面定义CHAR(20),如果插入的字符不足20的时候,会自动补空格(ascii为0x20);在DS里面的话,源数据如果不满足20的话,那么DS也会自动补全,此时补的值为ascii 0x00。那么,这条记录在数据库里面的话,表面上是看不出异常的,但是加条件查询的时候,是查不出来结果集的。此时,就要用到dump来判断是否有此类情况出现。 oracle的dump函数就不介绍了,需要用到的时候,请google即可。The argument ret... 阅读全文

posted @ 2014-03-27 21:42 gobird 阅读(3077) 评论(0) 推荐(0) 编辑

Linux du与df命令的差异

摘要: 今天上午查看磁盘空间,df命令查看的时候:93%,du命令查看的时候:90%.回想起昨天在用ftp传输过程中,rm掉文件,应该是文件虽然表明上删除掉了,但是空间实际是未释放的. 由于du与df命令实施上的不同: du -s命令通过将指定文件系统中所有的目录、符号链接和文件使用的块数累加得到该文件系统使用的总块数;而df命令通过查看文件系统磁盘块分配图得出总块数与剩余块数。文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如i节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为Meta Data。du命令是用户级的程序,它不考虑Meta Data,而... 阅读全文

posted @ 2014-03-27 20:26 gobird 阅读(5674) 评论(1) 推荐(1) 编辑

2013年1月30日

datastage tips 二:使用crontab+shell定时调度datastage job

摘要: 在使用datastage抽取数据的过程中,经常会遇到要求以准实时(如每隔3分钟同步一次数据)进行数据抽取的需求。这些要求可以使用crontab+shell来实现。如下图所示,此为整个shell调度DS JOB的流程:首先使用dsjob的jobinfo参数获取该JOB的进程号(process_id)和状态值(state).当state异常时,重置该JOB;当state正常时,判断该job是否在运行(即process_id是否为0)。若process_id=0,表示目前该JOB未运行,正常调度该JOB,若process_id>0,表示该JOB正在运行阶段,转置结束处。代码如下:#!/bin/ 阅读全文

posted @ 2013-01-30 17:17 gobird 阅读(3725) 评论(2) 推荐(0) 编辑

2013年1月13日

执果索因调整greenplum table dk值

摘要: 前面一篇文章写到如何通过gp_segment_id来判断表的DK值设置有数据,下面是通过查看占用空间的量来检查分配不平衡的表,并重新调整着DK值。我的一台greenplum机器,其中的一个节点的数据量比其它的节点多很多,说明数据分布的不平衡,如下所示:以sdw16为例:$du -sh /gpdata{1,2}/data/gp*347G /gpdata1/data/gp30412G /gpdata1/data/gp62357G /gpdata1/data/gp63336G /gpdata2/data/gp31338G /gpdata2/data/gp94343G /gpdata2/data/gp 阅读全文

posted @ 2013-01-13 21:55 gobird 阅读(754) 评论(0) 推荐(0) 编辑

2013年1月11日

greenplum查看表的数据分布情况来调整dk值

摘要: 最近正在进行ETL后台系统数据的日志分析,查看运行耗时长的TASK,并找出耗时长的JOB,进行逻辑层面和数据库层面的优化.本文仅从数据库层面上的优化着手(包括SQL语句的调整以及greenplum table dk的调整).查看一个耗时30分钟左右的JOB,找到相应的源表,进行如下分析:dw=#select gp_segment_id,count(*) from tb_name group by gp_segment_id order by count(*) descgp_segment_id count---------------------- 65 166... 阅读全文

posted @ 2013-01-11 20:00 gobird 阅读(8584) 评论(1) 推荐(2) 编辑

2012年8月17日

greenplum窗口函数使用浅析

摘要: 最近处于系统不活跃期,没怎么升级,因此有了时间可以对整个ETL系统在稳定的基础上进行优化。每天列出TOP 10 COST TIME JOB进行分析,其中TOP1 COSTTIME JOB采用了窗口函数first_value和last_value,结果SQL全部使用的是first_value,并且为了全部使用first_value,对窗口函数进行了二次排序。通过explain这段代码,可以发现两次sort消耗的时候大概是一次sort的1.7倍,把sort二次改进成一次,并且把SQL从datastage迁移到greenplum的function里面,整个过程由24分钟降至40秒。分析为什么只使用f 阅读全文

posted @ 2012-08-17 21:36 gobird 阅读(2994) 评论(0) 推荐(0) 编辑

2012年7月23日

datastage tips 一:清除Datastage job日志信息

摘要: 使用Datastage8.1快二个年头了,期间一直使用DS来做数据中心ETL的工作。俗话说:"工欲善其事,必先利其器。",亦有人曰"勿在浮沙筑高楼",熟练掌握工具的用处可见一斑,这也是我想写下这一系列的原因。不过,工具终究是工具,如果不能深入理解和掌握承载在工具使用上的思路和方法,那么工具也仅仅是工具而已,谨以此提醒自己。 言归正传。工作中使用的DS环境:RHEL4 64bit,DS8.1 。 遇到问题的场景是:数据中心上线大半年时间后,其中有一台DS ETL服务器经常报errorcode=-1004,而另外一台DS ETL服务器从未出现问题。查看Dat 阅读全文

posted @ 2012-07-23 20:38 gobird 阅读(4515) 评论(0) 推荐(0) 编辑

2012年4月11日

greenplum分区表查看所占空间大小

摘要: 在使用greenplum数据库的时候,有的时候想要查看表所占用空间的大小,会使用如下二个函数pg_relation_size和pg_size_pretty. 前者用来查看数据大小,后者是human readable的调整.方法如下:select pg_size_pretty(pg_relation_size('relation_name')) ;select pg_size_pretty(pg_relation_size(oid)) ;但是,对于分区表而言,这个方法就没有用了,会发现使用后表的大小为0bytes.原因在于:GP的分区表的主表只是一个表定义,其实际数据内容存储在继 阅读全文

posted @ 2012-04-11 19:16 gobird 阅读(7661) 评论(0) 推荐(0) 编辑

导航