oracle10g创建分区表.docx
- 文档编号:6307730
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:13
- 大小:169.80KB
oracle10g创建分区表.docx
《oracle10g创建分区表.docx》由会员分享,可在线阅读,更多相关《oracle10g创建分区表.docx(13页珍藏版)》请在冰豆网上搜索。
oracle10g创建分区表
进阶练习7:
分区
背景:
认识分区,会使用表分区和索引分区(参考官方文档)。
整个练习使用dba_objects作为数据源。
任务
1.创建一张表,以dba_objects数据为基础的表,使用范围分区的方法,在CREATED字段上进行分区,要求表的分区在不同的表空间上;以及相应的本地分区索引。
创建表空间:
SQL>createtablespacetbs_created1datafile
'/oracle/oradata/orcl/test/tbs_created1_01.dbf'size100M;
SQL>createtablespacetbs_created2datafile
'/oracle/oradata/orcl/test/tbs_created2_01.dbf'size100M;
SQL>createtablespacetbs_created3datafile
'/oracle/oradata/orcl/test/tbs_created3_01.dbf'size100M;
SQL>createtablespacetbs_created4datafile
'/oracle/oradata/orcl/test/tbs_created4_01.dbf'size100M;
修改系统时间格式:
altersessionsetNLS_DATE_FORMAT='yyyy-mm-ddhh24:
mi:
ss';
创建分区表:
SQL>createtabletest_part_rangepartitionbyrange(CREATED)
(
partitionp1valueslessthan('2012-08-1400:
00:
00')tablespacetbs_created1,
partitionp2valueslessthan('2012-08-2400:
00:
00')tablespacetbs_created2,
partitionp3valueslessthan('2012-08-2900:
00:
00')tablespacetbs_created3,
partitionp4valueslessthan(maxvalue)tablespacetbs_created4
)
asselect*fromdba_objectswhere1=2;
查看段信息:
selectSEGMENT_NAME,PARTITION_NAMEfromuser_segmentswhere
SEGMENT_NAME='TEST_PART_RANGE';
向分区表插入数据:
insertintotest_part_rangeselect*fromdba_objects;
查看dba_objects视图中的个数:
selectcount(*)fromdba_objects;
查看每个分区的记录数:
SQL>selectcount(*)fromtest_part_rangepartition(p1)
unionall
selectcount(*)fromtest_part_rangepartition(p2)
unionall
selectcount(*)fromtest_part_rangepartition(p3)
unionall
selectcount(*)fromtest_part_rangepartition(p4);
创建本地索引:
createindextest_indexontest_part_range(CREATED)LOCAL
(
partitionp1,
partitionp2,
partitionp3,
partitionp4
);
2.创建一张表,以dba_objects数据为基础的表,使用hash分区的方法,在object_id字段上进行分区,要求表的分区在不同的表空间上。
创建表空间:
SQL>createtablespacetbs_hash1datafile
'/oracle/oradata/orcl/test/tbs_hash1_01.dbf'size50M;
SQL>createtablespacetbs_hash2datafile
'/oracle/oradata/orcl/test/tbs_hash2_01.dbf'size50M;
SQL>createtablespacetbs_hash3datafile
'/oracle/oradata/orcl/test/tbs_hash3_01.dbf'size50M;
SQL>createtablespacetbs_hash4datafile
'/oracle/oradata/orcl/test/tbs_hash4_01.dbf'size50M;
SQL>createtablespacetbs_hash5datafile
'/oracle/oradata/orcl/test/tbs_hash5_01.dbf'size50M;
SQL>createtablespacetbs_hash6datafile
'/oracle/oradata/orcl/test/tbs_hash6_01.dbf'size50M;
SQL>createtablespacetbs_hash7datafile
'/oracle/oradata/orcl/test/tbs_hash7_01.dbf'size50M;
SQL>createtablespacetbs_hash8datafile
'/oracle/oradata/orcl/test/tbs_hash8_01.dbf'size50M;
创建分区表:
SQL>createtabletest_part_hashpartitionbyhash(OBJECT_ID)
(
partitionhash_p1tablespacetbs_hash1,
partitionhash_p2tablespacetbs_hash2,
partitionhash_p3tablespacetbs_hash3,
partitionhash_p4tablespacetbs_hash4,
partitionhash_p5tablespacetbs_hash5,
partitionhash_p6tablespacetbs_hash6,
partitionhash_p7tablespacetbs_hash7,
partitionhash_p8tablespacetbs_hash8
)
asselect*fromdba_objectswhere1=2;
查看段信息:
SQL>selectSEGMENT_NAME,PARTITION_NAMEfromuser_segments
WhereSEGMENT_NAME='TEST_PART_HASH';
向分区表插入数据:
SQL>insertintotest_part_hashselect*fromdba_objects;
查看每个分区的记录数:
SQL>selectcount(*)fromtest_part_hashpartition(hash_p1)
unionall
selectcount(*)fromtest_part_hashpartition(hash_p2)
unionall
selectcount(*)fromtest_part_hashpartition(hash_p3)
unionall
selectcount(*)fromtest_part_hashpartition(hash_p4)
unionall
selectcount(*)fromtest_part_hashpartition(hash_p5)
unionall
selectcount(*)fromtest_part_hashpartition(hash_p6)
unionall
selectcount(*)fromtest_part_hashpartition(hash_p7)
unionall
selectcount(*)fromtest_part_hashpartition(hash_p8);
3.使用列表方法,创建分区表。
查询后使用STATUS属性作为列表方法的分区属性:
创建表空间:
SQL>createtablespacetbs_list1datafile
'/oracle/oradata/orcl/test/tbs_list1_01.dbf'size100M;
SQL>createtablespacetbs_list2datafile
'/oracle/oradata/orcl/test/tbs_list2_01.dbf'size100M;
创建分区表:
SQL>createtabletest_part_listpartitionbylist(STATUS)
(
partitionlist_p1values('VALID')tablespacetbs_created1,
partitionlist_p2values('INVALID')tablespacetbs_created2
)
asselect*fromdba_objects;
查看每个分区的记录数:
SQL>selectcount(*)fromtest_part_listpartition(list_p1)
unionall
selectcount(*)fromtest_part_listpartition(list_p2);
4.创建一种复合分区,进行体验。
创建表空间:
SQL>createtablespacetbs_com1datafile
'/oracle/oradata/orcl/test/tbs_com1_01.dbf'size50M;
SQL>createtablespacetbs_com2datafile
'/oracle/oradata/orcl/test/tbs_com2_01.dbf'size50M;
SQL>createtablespacetbs_com3datafile
'/oracle/oradata/orcl/test/tbs_com3_01.dbf'size50M;
SQL>createtablespacetbs_com4datafile
'/oracle/oradata/orcl/test/tbs_com4_01.dbf'size50M;
创建分区表,并插入数据:
createtabletest_part_compartitionbyrange(OBJECT_ID)subpartitionbyhash(OBJECT_NAME)
subpartitions4storein(tbs_com1,tbs_com2,tbs_com3,tbs_com4)
(
partitioncom_p1valueslessthan(10000)tablespacetbs_com1,
partitioncom_p2valueslessthan(20000)tablespacetbs_com2,
partitioncom_p3valueslessthan(30000)tablespacetbs_com3,
partitioncom_p4valueslessthan(maxvalue)tablespacetbs_com4
)
asselect*fromdba_objects;
查看每个分区的记录数:
SQL>selectcount(*)fromtest_part_compartition(com_p1)
unionall
selectcount(*)fromtest_part_compartition(com_p2)
unionall
selectcount(*)fromtest_part_compartition(com_p3)
unionall
selectcount(*)fromtest_part_compartition(com_p4);
5.针对大数据表进行delete和truncate操作,体会它们的不同与效率。
建议执行settimingon。
创建测试表,并向其中插入大量数据:
test测试表中共有381416条数据:
设置打开计时:
使用delete命令删除test表中的数据:
SQL>deletefromtest;
使用rollback命令回退:
查看test表中的数据:
使用truncate命令截断表:
truncatetabletest;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle10g 创建 分区表