Chinaunix首页 | 论坛 | 博客
  • 博客访问: 88811
  • 博文数量: 42
  • 博客积分: 905
  • 博客等级: 准尉
  • 技术积分: 400
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-14 14:08
文章分类

全部博文(42)

文章存档

2015年(1)

2011年(41)

我的朋友

分类: Oracle

2011-06-22 12:48:18

1.cluster 可以将两个或多个表捆绑在一起,,cluster是一种数据库结构,在这个结构中,可以将两个或者多个表储存在相同的数据块或段中,加入到cluster中的每个表行将物理地存储在相同的块中,好像这些表在cluster key 处连接起来了一样.通过下面的例子,你将理解cluster如何的工作.

aa 

SQL> select * from aa;

ID NAME *** AGE

---- ---- -- ----------

01 cc m 20

02 dd f 18

03 ee m 22

04 ff f 21

05 gg f 19

06 hh m 20

已选择6行。

bb表

SQL> select * from bb;

*** LIVING

-- ------

m 11-01

f 11-02

2.在使用aa,bb表的时候,如果想要将这两个表放到一个cluster,则可以将这两个

表在***列上连接起来,在这种情况下,***列称为cluster key ,当完成cluster

创建后,两个表中的数据将会在cluster中物理地连接起来.在创建cluster的时候有两种选择:

* index cluster(默认,需要在其中创建cluster index)

* hash cluster

3.创建cluster的步骤:

1). SQL> create cluster ab_cluster (*** char(2) ) tablespace users;

簇已创建。

上面的语句创建了一个名为ab_clustercluster,且将它置于表空间usrs.因为上面创建的是index cluster ,所以当cluster创建完后,还必须在cluster key上创建索引.

2). SQL> create index ab_cluster_idx on cluster ab_cluster tablespace users;

索引已创建。

当创建hash cluster的时候,例子如下:

Create cluster ab_cluster (*** char(2) size 8k hashkeys 1000 tablespace users;

参数hashkeys用来定义分配给表的hash]值的数目.指出了在cluster中唯一性cluster key的最大值.}

  3).创建参与cluster的表.aa bb

  SQL> create table aa(id varchar2(4) ,name varchar2(4),*** char(2),age number(2))

cluster ab_cluster (***);

表已创建.

SQL> create table bb( *** char(2) , living varchar(6)) cluster ab_cluster (***);

表已创建。

插入数据:

insert into aa values(1,'hb','m',27);

insert into bb values('m','aaa');

insert into bb values('m','bbb');

查询rowid,

AAAQ1OAAFAAAHE/AAA 

AAAQ1OAAFAAAHE/AAA

AAAQ1OAAFAAAHE/AAB

会发现这三条数据的rowid的block部分是相同的,而且第一条的rowid和第二条的rowid居然是相同的。

dump datafile

data_block_dump,data header at 0xe3f3c64

===============

tsiz: 0x1f98

hsiz: 0x22

pbl: 0x0e3f3c64

bdba: 0x0140713f

     76543210

flag=--------

ntab=3

nrow=4

frre=-1

fsbo=0x22

fseo=0x1f66

avsp=0x1f40

tosp=0x1f40

0xe:pti[0]  nrow=1  offs=0

0x12:pti[1] nrow=1  offs=1

0x16:pti[2] nrow=2  offs=2

0x1a:pri[0] offs=0x1f82

0x1c:pri[1] offs=0x1f76

0x1e:pri[2] offs=0x1f6e

0x20:pri[3] offs=0x1f66

block_row_dump:

tab 0, row 0, @0x1f82

tl: 22 fb: K-H-FL-- lb: 0x0  cc: 1

curc: 3 comc: 3 pk: 0x0140713f.0 nk: 0x0140713f.0

col  0: [ 2]  6d 20

tab 1, row 0, @0x1f76

tl: 12 fb: -CH-FL-- lb: 0x0  cc: 3 cki: 0

col  0: [ 1]  31

col  1: [ 2]  68 62

col  2: [ 2]  c1 1c

tab 2, row 0, @0x1f6e

tl: 8 fb: -CH-FL-- lb: 0x0  cc: 1 cki: 0

col  0: [ 3]  61 61 61

tab 2, row 1, @0x1f66

tl: 8 fb: -CH-FL-- lb: 0x2  cc: 1 cki: 0

col  0: [ 3]  62 62 62

end_of_block_dump


4.删除cluster.

在删除cluster的时候,首先必须删除参与该cluster的表或者使用including tables子句.不能从正在使用的cluster删除表.

SQL> drop cluster ab_cluster including tables cascade constraints;

簇已删除。

阅读(2294) | 评论(0) | 转发(0) |
0

上一篇:hp-ux gcc安装

下一篇:没有了

给主人留下些什么吧!~~