Oracle8分区功能研究与应用
日期:2007年7月21日 作者: 查看:[大字体 中字体 小字体]-
一、现状分析
伴随着信息高速公路的飞速建设,油田的各项勘探开发数据都做到了及时准确入库,数据库中数据量日益增加。以其下属的胜利采油厂为例,数据量已达到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'并且<'2001-04-01'(即2001年第一季度)的数据放在dba01_2001q1分区内。其他分区也依次原则建立。
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季度的数据备份,将该分区删除,使空间空出来供后续数据循环使用。 - [1] [2] 下一页
-
- Oracle8分区功能研究与应用 相关文章:
- ·Oracle8分区功能研究与应用
- Oracle8分区功能研究与应用 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:漫谈oracle中的空值
下一篇:让数据库“安居”到Linux上
精品推荐
热点TOP10
- ·9istatspack使用手册
- ·ORACLE UPDATE 语句语法与性能分析的一点看法
- ·ORACLE备份&恢复案例--ORACLE BACKUP&RESTORE SCHEME
- ·关于oracle日期函数的介绍和使用
- ·Oracle的SQL*PLUS命令的使用大全
- ·oracle函数之常见单行字符串函数
- ·ORACLE傻瓜手册长篇连载
- ·详细介绍ORACLE sqlplus命令
- ·Decode 函数的用法
- ·ORACLE 培训教程(1)
- ·Oracle 游标使用大全
- ·把Oracle数据库移植到Microsoft SQL Server 7.0
- ·Oracle数据库检查死锁的sql
- ·Oracle的SQL语句执行效率问题查找与解决方法
- ·Oracle常用的OCI函数
- ·用正则表达式函数验证身份证号码合法性
- ·oracle中pro*c的学习
- ·VMware下RedHat安装Oracle 9i RAC全攻略
- ·Oracle 9i 分析函数参考手册
- ·数据库备份与恢复测试(8)
特别推荐
- ·Oracle环境下APACHE虚拟服务器如何设置
- ·常见Oracle HINT的用法
- ·ORA-00257: archiver error. Connect internal only, until freed.
- ·oracle的update问题
- ·小议索引的使用
- ·oracle产品服务和技术级别介绍,OrACLE服务
- ·Oracle 数据类型
- ·Oracle数据库检查死锁的sql
- ·怎样将冷备份移植到另一台Solaris机器上
- ·Oracle 动态SQL返回单条结果和结果集
- ·手动建立 Oracle9i 数据库
- ·Oracle内存结构(二)----Shared Pool的详细信息
- ·DELPHI 调用 Oracle 存储过程并返回数据集的例子.
- ·关于block中行数据的存储与空间重组三
- ·Sybase及SQL Anywhere SQL语句小结
- ·ORACLE备份&恢复案例--ORACLE BACKUP&RESTORE SCHEME
- ·Oracle ERP 11业务调研报告-AP应付帐
- ·在 Oracle 数据库上构建 .NET 应用程序
- ·Oracle的SQL语句执行效率问题查找与解决方法
- ·oracle中pro*c的学习
