HASH表分区实验
首先是导入数据,我首先从同学那里找了大约两万条左右的数据来做表分区实验,他的数据是在mysql上的
1. select UDID, AREA_ID ,URL ,PRICE, STATUE from urlword into outfile /var/tmp/ urlword_text.txt首先选出数据,放入到urlword_text.txt文本文件中
2. 将数据考入到我数据库所在的机器上的/home/oracle/date目录下
3. 在该目录下编辑一个t.ctl的文件
load data
infile '/home/oracle/date/urlword_test.txt'
into table urlword_test
replace
fields terminated by x'09'
(UDID,AREA_ID,URL,PRICE,STATUE)
~
4. 以lsy用户登陆到数据库创建表urlword_text
create table urlword_test
(
UDID number(12,0) primary key,
AREA_ID number(10,0),
URL varchar2(200),
PRICE number(10,0),
STATUE varchar2(10)
);
5. 执行[oracle@field date]$ sqlldr lsy/lsy /home/oracle/date/t.ctl
6. 检查是否创建成功
SQL> select count(*) from urlword_test;
COUNT(*)
----------
21062
在这可以发现一个问题,我的这个表的数据应该是两百多万条,实际只导入了
万多条,究其原因fields terminated by x'09',表明在ASCII十六进制 09(水平制表符)结束。
另外在/home/oracle/date下(同你创建t.ctl文件),还有日志t.log可以查看
create table urlword_partition_hash(
UDID number(12,0) ,
AREA_ID number(10,0),
URL varchar2(200),
PRICE number(10,0),
STATUE varchar2(10)
)partition by hash(UDID)(
partition urlword_partition_p1 tablespace text01,
partition urlword_partition_p2 tablespace text02,
partition urlword_partition_p3 tablespace text03
);
Table created
插入数据
SQL> insert into urlword_partition_hash(UDID,AREA_ID,URL,PRICE,STATUE ) select * from urlword_test;
53702 rows inserted
SQL> select TABLE_NAME, PARTITIONING_TYPE, PARTITION_COUNT from user_part_tables;
TABLE_NAME PARTITIONING_TYPE PARTITION_COUNT
------------------------------ ----------------- ---------------
URLWORD_PARTITION_HASH HASH
对于分区表来说,每个表分区对应一个分区段。当在分区表上建立索引时,既可以建立全局索引,也可以建立分区索引。如果建立全局索引,则索引数据会存放到一个索引段中;如果建立分区索引,则索引数据会被存放到几个索引分区段中。
建立全局索引
当建立全局索引时,索引数据会存放到一个索引段中。默认情况下在分区表上建立的所以属于全局索引。
create index gbl_urlwork_hash on urlword_partition_hash(UDID) global;
这里有点不明白,我看三思的文档在建立global分区时是这样的:
create index gbl_urlwork_hash on urlword_partition_hash(UDID)
global partition by hash(UDID);(
partition urlword_partition_p1 tablespace text01,
partition urlword_partition_p2 tablespace text02,
partition urlword_partition_p3 tablespace text03
);
按照我看的书的说法,这样建立全局索引岂不是本地索引是一个性质了?
建立分区索引
先drop掉,再建立
create index lcl_urlwork_hash on urlword_partition_hash(UDID) local;
和上面查看表分区和相像的两个表user_ind_partitions和user_part_indexes,只不过把table换成来index
2010-12-8 by 饼干
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23493401/viewspace-681305/ ,如需转载,请注明出处,否则将追究法律责任。