oracle数据库:初识大表格分区之列表分区
一、任务清单
给商品表数据按照类型分区
二、任务分解
商品的类型分为有限的几种,所以比较适合用oracle表分区中的列表(list)分区。如果要给表分区,必须在建表时分区。如果在系统运行一段时间以后才发现需要使用分区表的话,就要考虑用重建的方式,但重建之前,一定要先备份已有数据,重建后再将表数据导入。
1)给商品信息表建立备份表
create table t_goods_backup as select *from t_goods;
2)删除商品信息表
drop table t_goods;
3)重建商品信息表时按照商品类型进行列表分区
create table t_goods(
gid char(6) primary key,
gname varchar2(20) not null,
gtid char(6),
gprice number(12,3) check (gprice>=0),
gdiscount number(5,2),
gstocks number(7,2) check(gstocks>=0),
gmaxstocks number(7,2) check(gmaxstocks>=0),
gminstocks number(7,2) check(gminstocks>=0),
gmemo varchar2(50)
)partition by list(gtid)
(partition p_t001 values(‘T00001’),
partition p_t002 values(‘T00002’),
partition p_t003 values(‘T00003’),
partition p_t004 values(‘T00004’),
partition p_t005 values(‘T00005’)
);
4)导入备份数据
Insert into t_goods select * fromt_goods_backup;
三、相关条件
1、各表略
insert into t_gtype values('T00001','日用百货');
insert into t_gtype values('T00002','儿童用品');
insert into t_gtype values('T00003','女装精品');
insert into t_gtype values('T00004','男装精品');
insert into t_gtype values('T00005','电子精品');
insert into t_goods values('G01001','修正笔','T00001',5.5,0,0,100,0,null);
insert into t_goods values('G02007','30码童鞋','T00002',72.00,0.85,10,40,1,null);
insert into t_goods values('G03001','女式衬衣','T00003',92.00,0.95,18,40,1,null);
insert into t_goods values('G04001','领带','T00004',98.00,0,200,500,600,null);
insert into t_goods values('G05001','MP3','T00005',95.5,0,0,100,0,null);
24日,记:本来以来在本机上用记事本编辑sql语句,再pscp到服务器上start要快一些,结果是insert数据时就各种迂回一堆乱码,头大
select * from nls_instance_parameters; NLS_LANGUAGE AMERICAN
select * from nls_database_parameters; NLS_CHARACTERSET AL32UTF8 |NLS_LANGUAGE AMERICAN
找到一篇参考文档http://blog.sina.com.cn/s/blog_70b0fa020100m69u.html,关键是今天困死,精神不在状态加上熬夜伤身,25号继续
25日,记:感谢细心的刘帅、感谢耐心的刘帅、感谢啥啥的刘帅,终于在我准备以此为借口放下“纪录”枷锁时,让我没有了借口,只好再次拿起鞭子,继续今天的记录
教训如下:
1、如果状态为“困死”,那首要解决这个问题。否则做也是白做。
2、脚本中需仔细检查,什么全角的空格、引号什么的最讨厌了;多余的逗号各种讨厌了;输错的字符彻底无语了......
ORA-14308: partition bound element must be one of: string, datetime or interval literal, number, or NULL
3、涉及到中文的,export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK",否则insert后,select显示乱码
五、据说
1、 一般的表格不需要分区,一般需要分区的表的大小应该超过2GB.
2、 表中包含历史数据,新的数据被增加到新的分区中。
3、 表分区的优点:
1) 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。
2) 增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用。
3) 维护方便:如果表的某个分区出现简陋,需要修复数据,只修复该分区即可。
4) 均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。
说明:内容五均为鹦鹉学舌,本人暂无切身感受
六、遗留问题
1、 oracle 11g间隔分区特性?又一个需要记下的。所以本期为初识,看来后面还有故事
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5054.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
