Oracle的数据仓库方案

给某一运营商的增值业务系统做过一个数据仓库子系统,基于oracle9i,当时的一些记录,以备将来查验!


Oracle的数据仓库方案构件如下:
1、Oracle 9i中的insert all, merge等超强的语句
2、Cube的支持,在安装OLAP组件之后,包括MIEW的Query Rewrite
3、Oracle 9i中集成了以前的 Express Server

抽取工具用pl/sql + external table + sqlldr来实现
展现工具用Discovery, Reports 或其他工具来做

对于每天同步一次的只要网络还可以的,建议还是用exp/ftp/check/imp.其实可以将exp的文件分成多个小文件,防止因为网络的问题导致大量数据的重传。在ftp的client和server端分别写个shell然后利用cron job来调用,应该就ok了。

快照+触发器+存储过程

dw由于多数是只读的,所以工作于非归档,不用做联机备份

DWA 关注与存贮和设计和实施, 由于 DW 在实际的实施的时候一般都可能要分为 ODS/DW/OLAP 等等, 必须考虑导每一个部分的数据存储的时间和备份的方案,同时由于数据仓库中数据量很大,并且由很多的重复数据,在定备份方案上一定需要确定一个时间窗口, 还有数据导入的时间窗口也是非常重要的。

物理存储的空间规划[HA、RAID、硬件存储的划分]、逻辑建模[PD、ERwin等]、ETL技术[DS、INFORMATICA等]、沉淀数据的存储管理[DBA]、前端展现工具[cognos、brio等,还要一定的数理分析知识]。当然了,做好DW项目的前提还有泥必须很熟悉这个行业的业务及需求。

使用ftp传输, 使用external table load, 再使用merge整合数据

1、最主要的是db_block_size的大小设置不同,DW的要比OLTP的大些;另外还有一个buffer大小设置不同(印象中是large_pool),也是DW的要相应大些。

使用位图索引,存储更为有效,与B*Tree索引比较起来,只需要更少的存储空间,这样每次读取可以读到更多的记录,而且与B*Tree索引相比,位图索引将比较,连接和聚集都变成了位算术运算,大大减少了运行时间,从而得到性能上的极大的提升。在事实表的外键列上建立位图索引,查询首先访问事实表,然后才是维表的连接。在事实表上返回的结果将减少,而不是对所有的可能的维表属性进行笛卡尔积运算,所以极为有效。
*如果要使用位图索引,初始化参数STAR_TRANSFORMATION_ENABLED应该设置为
TRUE.
* 优化模式应该是CBO。对于数据仓库的环境中,总是应该考虑使用CBO(COST-BASED
OPTIMIZER)。
*位图索引应该建立在每一个事实表的外键列上。(这只是一个一般的规则.)

1、数据仓库中的外键等约束主要是为数据库提供元数据让优化器使用的,保证数据一致性的工作应该在ETL中完成。
2、数据装载的时候最好是把所有约束禁用,把索引去掉,完了再启用约束和重建索引,这样会快好多(3、我不你明白,你说维表加载不成功,fact表的一部分数据也要加载吗,那不会得出错误的统计结果吗,或者因为没有维度数据fact表中的数据通过关联会被过滤掉?我的做法是如果出现加载不成功时根据情况的不同给管理员发送警告或者重新加载数据(可能需要人工干预)。

分区(hash分区和range分区)
CUBE和ROLLUP
位图化索引(Bitmapped index)
程序员特区

http://coderarea.net/html/shujukukaifa/Oracle/2009/0311/60208.html

 

你可能感兴趣的:(Oracle的数据仓库方案)