分享
 
 
 

Oracle8分区功能研究与应用

王朝oracle·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

一、现状分析

伴随着信息高速公路的飞速建设,油田的各项勘探开发数据都做到了及时准确入库,数据库中数据量日益增加。以其下属的胜利采油厂为例,数据量已达到2000M,各种数据库表更是多达1千多个。

与此同时,又生了一个新的问题,那就是虽然各种生产数据都已入库,但是由于数据量巨大,造成查询速度非常缓慢。

下面以油井日度数据表(dba01)为例进行说明,该表是最基础的开发数据,天天每一口井都有记录进入到数据库中。油田规定,该数据15个月内必须保存在线,15个月下来这个表就997890条记录。

这接近100万的记录大大增加系统开销,在用户提交查询后,经常需要等待五六分钟才能得到结果,有时甚至查不出数据,给用户的感觉是仿佛处于"死机"状态。

二、常规解决办法

为了提高速度,解决大表查询速度缓慢的问题,我们最初的对策是在后台创建很多中间表。

例如:要得到采油厂生产日数据汇总情况,了解全厂天天的油井开井数,水井开井数,日产油量,注采比等重要数据,其缺点主要有两个:

1、中间表的建立会占用大量表空间,也就是说查询速度的提高是以牺牲服务器空间为代价,造成了巨大的资源浪费。

2、随着各种应用的不断开展,中间表的数量也越来越多,这就人为加大了数据治理和维护的工作量。

因此,要从根本上解决大表存在的查询速度缓慢的问题,必须找到更为有效的方法。

三、采用分区功能解决问题

1、分区的定义

分区将表分离在若干不同的表空间上,将大的表和索引拆分成小的易于治理的数据片段,用分而治之的方法来支撑无限膨胀的大表,给大表在物理一级的可治理性。将大表分割成较小的分区可以改善表的维护、备份、恢复、事务及查询性能。针对我厂大量的油水井日度数据,可以推荐使用Oracle8的分区功能。

2、分区的优点

首先,能够成倍提高查询速度:进行分区治理后,服务器可以进行智能的分区检测。

跳过与查询无关的分区访问,并跳过不在线的分区。

其次,增强系统可用性:假如表的一个分区由于系统故障而不能使用,其余好的分区仍然可以使用。

不同分区可以跨表空间存储, 降低了磁盘损坏带来的数据不可用性。

四、分区的治理

1、建立表的各个分区的表空间

下面是创建2001年第一季度表空间的操作语句,指定所建立表空间的名字,所用数据文件的名称、大小和存放目录,并由存储字句指定在该空间中所建立对象的缺省存储参数。

CREATE TABLESPACE ts_dba01_2001q1

DATAFILE '/home2/oracle/test/dba01_2001q1.dat' SIZE 200M

DEFAULT STORAGE (INITIAL 30m NEXT 30m

MINEXTENTS 3 PCTINCREASE 0);

2、建立分区表

下面是建立dba01表的操作语句,指定表名、列名及列的数据类型等。这些都于常规创建表的语句相同。

CREATE TABLE dba01

(jh varchar2(16) not null,

rq date not null,

cyfs varchar2(3),

dwdm varchar2(11),

......

PARTITION BY RANGE (rq)

PARTITION dba01_2000q4

VALUES LESS THAN (TO_DATE('2001-01-01','YYYY-MM-DD')

TABLESPACE ts_dba01_2000q4,

PARTITION dba01_2001q1

VALUES LESS THAN (TO_DATE('2001-04-01','YYYY-MM-DD')

TABLESPACE ts_dba01_2001q1)

这是创建分区的语句,这里指定按照日期进行分区,例如:

日期='2001-01-01'并且

3、分区表的扩充

在2001年年底,我们向表中加入2002年的表空间,同样是每季度一个表空间,预计每个分区为200M,下面是创建2002第一季度表空间的操作语

句,指定表空间名称,数据文件名称及大小等 。

CREATE TABLESPACE ts_dba01_2002q1

DATAFILE '/home2/oracle/test/dba01_2002q1.dat' SIZE 200M

DEFAULT STORAGE (INITIAL 40m NEXT 40m

MINEXTENTS 3 PCTINCREASE 0)

其他季度表空间也如此建立。

4、为表添加表空间

操作语句如下:

ALTER TABLE dba01

ADD PARTITION dba01_2002q1

VALUES LESS THAN (TO_DATE('2002-04-01','YYYY-MM-DD')

TABLESPACE ts_dba01_2002q1;

5、删除不必要的分区

采油厂规定:必须保存15个月的日度数据在线。到2002年,必须把2000年3季度的数据备份,将该分区删除,使空间空出来供后续数据循环使用。

删除分区 ALTER TABLE dba01 DROP PARTION dba01_2000q3;

利用操作系统工具删除这个分区所占用的文件

oracle$ rm /home2/oracle/test/dba01_2000q3.dat

6、查看分区信息

可通过对数据字典USER_EXTENTS进行查询,操作如下:

SVRMGRL SELECT * FROM user_extents

WHERE SEGMENT_NAME='dba01';

显示内容如下:

7、卸出分区

ORACLE8的EXPORT 工具可卸出分区并导出数据,例如到2002年,我们可将2000年的数据按分区卸出。

例如:要卸出2000年3季度的数据,操作如下:

oracle$ exp tycx/***

tables=dba01:dba01_2000q3 file= dba01_2000q3.dmp

在语句中要指定用户名、口令、需要卸出的表名及分区名、卸出文件名称等。

8、导入分区

ORACLE8的IMPORT工具可导入分区并加载数据,例如在2002年,用户要查看2000年的数据,我们必须导入该年数据。

(1)建立该表2000年的四个表空间和相应的分区

(2)下面是导入2000年3季度分区数据的操作语句:

oracle$ imp tycx/***

file = dba01_2000q3.dmp tables= (dba01: dba01_2000q3)

五、实施效果

1、能够成倍提高查询速度

进行分区治理后,服务器可以进行智能的分区检测,跳过与查询无关的分区访问,跳过不在线的分区。

2、增强系统可用性

假如表的一个分区由于系统故障而不能使用,其余好的分区仍然可以使用。

不同分区可以跨表空间存储, 降低了磁盘损坏带来的数据不可用性。

以油井日数据表为例:

不采用分区技术时,若表空间文件受到破坏,会影响到所有数据都无法使用,必须将该表全部记录(多达100万条)重新恢复,工作量很大,恢复期间用户根本无法查询数据,完全不能使用。

而采用分区技术后,由于整个表已按季度拆分为6个分区,因此当某一个表空间文件被破坏,则仅是该分区表空间所对应的季度数据无法使用,其他季度数据仍然可以正常使用,对用户的查询以及其他应用影响不大。

六、总结

通过合理应用oracle8的分区功能,就可以大大改善系统的性能,降低大表数据治理和维护的工作量,对大表的查询、增加、修改等操作可以分解到表的不同分区来并行执行,可使运行速度更快。对促进无纸化办公,辅助生产有积极的推动作用。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有