一个很好用的数据库维护备份方式,表分区。
这个也是前段时间对数据库做设计的时候遇到的问题,为了解决数据库中有些表增长快,后期对其维护、备份麻烦的问题,用到了表分区。
铁路项目中的确报、安全门、轨道衡、超偏载等文件每天的入库,每天好几十条,数据库入库倒是没有问题,但是数据量越来越大,造成了查询速度非常慢。随着时间的推移,对数据库历史数据的维护(备份,删除),也是一个问题。因为这些增长(变化)比较大的表占用较大的表空间。为以后维护方便,就用到了表分区。
具体步骤:
1.建立各个表空间。
--=========================================
--以DBA用户登录
--=========================================
--创建默认表分区,此分区为存放数据不怎么变化的表。
Create Tablespace TS_DEFAULT
Datafile 'E:/oracle/product/10.1.0/oradata/railway/TS_DEFAULT.DAT'
Size 10M Autoextend On Next 5M Maxsize Unlimited;
--建立2008年一季度的表空间TS_2008_1 size=30M 每次自动增长1280K 最大不限(因为考虑到每季度的数据量不定)
Create Tablespace TS_2008_1
Datafile 'E:/oracle/product/10.1.0/oradata/railway/2008_1.DAT'
Size 30M Autoextend On Next 30M Maxsize Unlimited;
2.建立分区表。
Create Table ***(
CREATETIME DATE not Null,
...
...)
PARTITION BY RANGE (CREATETIME)
(
Partition part_2008_1 VALUES LESS THAN (to_date('2008-04-01','yyyy-mm-dd')) TABLESPACE TS_2008_1
);
--此分区表用于存放2008年第一季度的数据
3.分区表的扩充。
--到达一定的条件后,添加表分区到指定的表空间上(之前应先建立表空间)
ALTER TABLE TEST ADD PARTITION part_2008_2 VALUES LESS Than (to_date('2008-04-01','yyyy-mm-dd')) TABLESPACE TS_2008_2;
--此分区表用于存放2008年第二季度的数据
4.删除不必要的分区。
--删除不用的表分区
ALTER TABLE TEST DROP Partition part_2008_1;
5.查看分区信息。
Select * FROM user_extents;
--命令行导出分区数据,备份数据
-- exp test/test@orcl file=part_2008_1.dmp tables=(test:part_2008_1)
其它:
--查看当前用户默认表空间
SELECT DEFAULT_TABLESPACE FROM USER_USERS;
如有任何问题,请多多指教。