oracle 创建簇

<在此声明,此博文转摘自别处,具体出处不详。>

簇的概念以及如何创建簇!

****************************簇***************************
簇可以实现将大的表和索引进行拆分,使处理速度提高和管理方便
1.1簇的概念
(cluster)就是将一组有机联系的表在物理上存放在一起,并且相同的关键列的值只存储一份,用于提高处理效率的的一项技术; oracle并行服务器通过使一组节点共享同一簇中的工作负载来扩展Windows NT的能力,
oracle提供具有高可用性和高伸缩性的簇解决方案。
  (1).何时建立簇
  如果通过引用完整性把两个或多个表联系起来并经常使用联结,则为这个表创建一个索引簇
  (2).有时簇会损害性能
  对频繁更新或删除的表使用簇对性能有不利的影响
  (3).限制
  .簇中的每一个表必须有一列与簇中指定的列的大小和类型匹配
  .簇码中可用的最大数目是16
  .列的最大长度为239字节
  .LONG和LONG RAW不能作为簇列码
1.2
  1.创建簇语法
  CREATE CLUSTER cluster(column datatype)
  [pctused 40|integer] [pctfree 10|integer]
  [size integer]
  [initrans 1|integer][maxtrans 255|integer]
  [tablespace tablespace]
  [storage storage]
  2.创建簇及其表的步骤[****注意顺序***]
  (1)用CREATE CLUSTER创建簇
  (2)用CREATE INDEX创建簇索引
  (3)用CREATE TABLE创建表,并指定簇
  (4)插入数据并进行DML操作

  [例]住房公积金(创建簇的具体实例)
SQL> drop cluster emp_unit;
SQL> create cluster emp_unit(acc_no varchar2(15))
     tablespace gao_tablespace
     storage(initial 1m maxextents 121 pctincrease 0);
SQL> create index unit_inf_ind on cluster emp_unit
   tablespace gao_tablespace;
SQL> drop table unit_inf;
SQL> create table unit_inf
   (
     bank_code  varchar2(6),
     acc_no     varchar2(15),
     proc_date  date,
     unit_name  varchar2(50),
     area       varchar2(20),
     address    varchar2(50),
     zip        varchar2(6),
10    master     varchar2(20),
11    belong     varchar2(20),
12    ecnomic    varchar2(20),
13    tot_emp    number(6),
14    sal_bank   varchar2(40),
15    sal_date   date,
16    pay_tot    number(6),
17    pay_money  number(13,2),
18    pro_depart varchar2(40)
19  )
20  cluster emp_unit(acc_no);
SQL> create unique index unit_inf_in on unit_inf(acc_no)
   storage(initial 1m next 512k maxextents 121 pctincrease 0);
SQL> drop table pay_lst_det;
SQL> create table pay_lst_det
   (
     bank_code  varchar2(6) not null,
     acc_no     varchar2(15) not null,
     emp_acc_no varchar2(20) not null,
     table_date date,
     name       varchar2(10)
   )
   cluster emp_unit(acc_no);

oracle_gao_dba 发表于 2004-6-21 21:07

1.3改变簇
在用户具有ALTER ANY CLUSTER的权限下,可以对已建好的簇(cluster)改变其设置
.物理属性PCTFREE,pctused,initrans,maxtrans,storage
.为cluster关键字值存储所有行所需的一般空间容量
.默认平行度
ALTER CLUSTER CLUSTER_NAME
|PCTUSED INTEGER
|PCTFREE INTEGER
|SIZE    INTEGER
|INITRANS INTEGER
|MAXTRANS INTEGER
|STORAGE    CLUSTER
[例]修改簇的参数
SQL> ALTER CLUSTER EMP_UNIT
      PCTFREE 30
      PCTUSER 60;

1.4删除簇
drop cluster [user.]cluster [including tables]

1.5删除簇索引
有时为了清除盘空间的碎片,我们经常进行删除簇索引的操作.

1.6收集簇信息
    .DBA_CLU_COLUMNS或USER_CLU_COLUMNS
    .DBA_CLUSTERS或USER_CLUSTERS
SQL> desc dba_clu_columns;
名称                                    是否为空?类型
------------------------------- -------- ----
OWNER                                    NOT NULL VARCHAR2(30)
CLUSTER_NAME                            NOT NULL VARCHAR2(30)
CLU_COLUMN_NAME                        NOT NULL VARCHAR2(30)
TABLE_NAME                            NOT NULL VARCHAR2(30)
TAB_COLUMN_NAME                                    VARCHAR2(4000)

SQL> desc dba_clusters;
名称                                                是否为空?类型
-------------------------------            --------            ----
OWNER                                    NOT NULL VARCHAR2(30)
CLUSTER_NAME                            NOT NULL VARCHAR2(30)
TABLESPACE_NAME                        NOT NULL VARCHAR2(30)
PCT_FREE                                            NUMBER
PCT_USED                                NOT NULL NUMBER
KEY_SIZE                                            NUMBER
INI_TRANS                                NOT NULL NUMBER
MAX_TRANS                                NOT NULL NUMBER
INITIAL_EXTENT                                    NUMBER
NEXT_EXTENT                                        NUMBER
MIN_EXTENTS                            NOT NULL NUMBER
MAX_EXTENTS                            NOT NULL NUMBER
PCT_INCREASE                            NOT NULL NUMBER
FREELISTS                                                        NUMBER
FREELIST_GROUPS                                        NUMBER
AVG_BLOCKS_PER_KEY                                NUMBER
[例]分析簇
SQL> ANALYZE CLUSTER emp_unit compute statistics;
SQL> select * from user_clusters where cluster_name='emp_unit';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值