萌依依yiyi:Oracle的数据仓库设计方案

来源:百度文库 编辑:偶看新闻 时间:2024/04/30 03:14:30

一个数据仓库中的数据容量很可能比任何一个OLTP数据库中的数据容量都要大得多。数据仓库可能含有Oracle使用的每一种数据段:数据字典表(SYSTEM表空间)、数据表(DATA和DATA_2)、索引(INDEXES和INDEXES_2)、小型和大型回滚段(RBS和RBS2)、临时段(TEMP和TEMPUSER)、工具表(TOOLS)。


除了这些数据段外,数据仓库通常还包括分区(PARTITIONS和PARTITIONS_1表空间)、聚合数据和显形图(AGG_DATA和AGG_DATA_1)、快照(SNAPS和SNAPS_1)和只是在进行批处理时使用的“工作”表(TEMPWORK和TEMPWORK1)。当对这些表空间进行物理配置设计时,需要考虑两种完全不同的使用数据仓库的方法:数据装载和数据检索。


在OLTP数据库中,数据装载处理由执行小型insert和update事务的许多用户执行。在数据仓库中,数据装载处理是一系列大型的成批操作,每个数据装载周期需要用数天或数星期才能完成。因此需要调整数据库以优化批数据装载进程。同时要考虑,一旦完成数据装载,用户如何来检索它。
 

数据仓库中的数据检索进程与OLTP数据检索进程稍有不同。与在OLTP数据库中一样,数据仓库用户对大量的表执行许多小型查询。尽管数据仓库的基表非常大,但终端用户不应直接查询它们,而应查询充分索引的聚合表。应将数据仓库中的数据进行非常规化处理,以便它非常支持终端用户最常采用的访问路径。
当设计数据仓库的物理布局时,应考虑将批装载和数据检索分开使用。对于批装载处理,所涉及的主要表空间如下:


SYSTEM数据字典表


TEMPWORK数据装载处理时使用的临时表
TEMPWORK1临时工作表的索引
TEMPUSER支持成批排序的大型临时段


RBS2支持成批事务处理的大型回滚段
DATA表
INDEXESDATA表空间中的表索引


PARTITIONS表分区
PARTITIONS1表分区的索引


SNAPS快照
SNAPS1快照的索引

AGGDATA聚合表和显形图
AGGDATA1聚合表和显形图的索引

 


按照本章前面提出的准则,应把SYSTEM和RBS表空间与所有其他的表空间分开。可以通过规划批装载处理来优化配置的其余部分。例如,许多数据仓库系统都是从外部信息源装载数据。如果数据通过平面文件进入数据库,则常规数据装载步骤如下:


1)把数据从平面文件装入TEMPWORK表以便进行数据清除操作。
2)检索TEMP_WORK表以改进数据清除和传送操作的性能;将索引写入TEMPWORK1。在创建索引期间,将TEMPUSER表空间用于相关的的临时段。
 

3)执行数据库事务处理,以便把数据从TEMPWORK表转移到DATA和PARTITIONS表,将RBS2表空间用于回滚段。
4)检索DATA和PARTITIONS中的表,将索引写入INDEXES和PARTITIONS。在索引创建期间,将TEMPUSER表空间用于相关的临时段。


5)如果数据仓库使用其他数据库的数据,在SNAPS数据库中创建远程数据的本地快照,将TEMP_USER表空间用于回滚段。在创建检索期间,检索SNAPS_1中的快照并把TEMPUSER表空间用于相关的临时段。


6)在AGGDATA中创建聚合表;检索AGGDATA1中的这些表,将RBS2表空间用于回滚段;在检索创建期间,将TEMPUSER表空间用于相关临时段。


在把这些表空间配置到同一个物理设备之前,必须考虑终端用户的数据访问要求。查询期间不只是查询DATA和INDEXES,用户还可以访问AGG_DATA、AGG_DATA_1、PARTITIONS、PARTITIONS_1、SNAPS和SNAPS_1。因此,需要把所有这些表空间分开,以便在查询期间把I/O冲突降至最低。


若要对物理配置进行设计,就从一个8个磁盘配置开始(如下所示)。8磁盘配置与标准OLTP配置相似,但TEMP表空间脱离了RBS表空间。


磁盘1:Oracle软件。
磁盘2:SYSTEM表空间、控制文件。
磁盘3:RBS、RBS2和TOOLS表空间、控制文件。


磁盘4:DATA表空间、控制文件。
磁盘5:INDEXES表空间。
磁盘6:DATA2和INDEXES2表空间、联机重做日志文件、导出转储文件。


磁盘7:TEMP和TEMPUSER表空间。
磁盘8:应用软件、归档重做日志文件。

 


注意如果正在使用一个买来的应用软件,销售商可能有这种应用软件的一个最佳磁盘配置。如果销售商有一个最佳配置,就采用这种配置。销售商可能使这种应用软件依靠这种配置来工作,或者在以后应用软件升级时依靠这种配置。


接着,为PARTITIONS、PARTITIONS_1、SNAPS、SNAPS_1、AGG_DATA、AGGDATA1、TEMPWORK和TEMPWORK1表空间增加磁盘。


磁盘1:Oracle软件。
磁盘2:SYSTEM表空间、控制文件。
磁盘3:RBS、RBS2和TOOLS表空间、控制文件。


磁盘4:DATA表空间、控制文件。
磁盘5:INDEXES表空间。
磁盘6:DATA2和INDEXES2表空间、联机重做日志文件、导出转储文件。


磁盘7:TEMP和TEMPUSER表空间。
磁盘8:PARTITIONS表空间。
磁盘9:PARTITIONS1表空间。


磁盘10:SNAPS表空间。
磁盘11:SNAPS1表空间。
磁盘12:AGGDATA表空间。
磁盘13:AGGDATA1表空间。


磁盘14:TEMPWORK表空间。
磁盘15:TEMPWORK1表空间。
磁盘16:应用软件、归档重做日志文件。


从上面的清单中可以看出,若支持数据仓库,就要支持许多类型的表空间。不过,如前所述,这些表空间并不是全部同时使用。例如,TEMPWORK和TEMPWORK1表空间只是在数据装载处理期间使用。因此,可以把它们与其他表空间(例如SNAPS和SNAPS1表空间)配置在一起,以减少所使用的磁盘数量。进一步讲,可以选择把全部非静态表分区,有效地消除对DATA和INDEXES表空间的需求。如下所示:

磁盘1:Oracle软件。
磁盘2:SYSTEM表空间、控制文件。
磁盘3:RBS、RBS2和TOOLS表空间、控制文件。

 


磁盘4:PARTITIONS表空间、控制文件。
磁盘5:PARTITIONS1表空间。
磁盘6:DATA2和INDEXES2表空间、联机重做日志文件、导出转储文件。


磁盘7:TEMP和TEMPUSER表空间。
磁盘8:SNAPS和TEMPWORK表空间。
磁盘9:SNAPS1和TEMPWORK1表空间。


磁盘10:AGGDATA表空间。
磁盘11:AGGDATA1表空间。
磁盘12:应用软件、归档重做日志文件。


上面对数据仓库的12磁盘配置只是一个起点,实际的配置应反映应用程序中文件的使用特性。在理想的数据仓库中,最常用的表空间是AGGDATA1和PARTITIONS1,对相关的表很少访问。如果可以如此有效地检索数据仓库表,以致这些表很少被访问,就可以将AGGDATA和PARTITIONS表空间配置在一起而不造成I/O冲突。


OracleCallInterface(OCI)具有Oracle8i引入的DirectPathLoading的特征。采用这种特征时,应用下述限制。这些限制镜和SQL*LoaderDirectPath选项的限制一样。


-不支持引用完整性约束。
-不支持簇表。


-不支持触发器。
-不支持用户定义的类型。
-不支持检验约束。


-不支持远程对象装载。
-必须在最后指定LOGNS。
-必须在全部数值列之后指定LOBS。


其中的某些限制可能引起数据库中现有数据库策略方面的问题(例如,缺少引用完整性的支持)。


网络上赚小钱