【对象管理】cluster
来源:互联网 发布:sql链接服务器 编辑:程序博客网 时间:2024/04/29 06:23
cluster可以用来保存多个表的数据。cluster分为两种:
index cluster:
用索引来检索cluster key。不过需要注意的是,创建聚集的时候不会创建索引,需要在create cluster之后另外创建索引,否则在此之前不能对聚集表进行DML操作。
hash cluster:
利用散列函数来检索cluster key。不能对hash cluster 建立索引。
一、创建cluster
创建索引的时候需要注意,cluster key可以对应多个表的不同名称的列,但是这些列必须具有相同的数据类型和数据长度。同时,不能对cluster key建立constraint。另外,cluster 的storage参数、transaction参数等会覆盖table的对应参数。还有就是,创建索引需要create cluster的权限和表空间的quota。
1、查看用户权限。
SQL>grant create cluster to sh;---授予权限;SQL> select * from user_sys_privs where privilege ='CREATE CLUSTER';---查询权限USERNAME PRIVILEGE ADM------------------------------ ---------------------------------------- ---SH CREATE CLUSTER NO
2、创建cluster----第一步,创建index cluster;
SQL>create cluster tt( 2 prod_id number) 3 size 512 4 storage( 5 initial 100k 6 next 50k);
此时并没有创建索引,如果现在往cluster 中添加表的话,就会报错:SQL> create table tt1 2 cluster tt(prod_id) as 3 select * from sales where prod_id =13;select * from sales where prod_id =13 *ERROR at line 3:ORA-02032: clustered tables cannot be used before the cluster index is built
另外创建索引的时候,需要注意的是索引是对所有的cluster key创建的,不能单独创建。否则会报错,从cluster index 的创建语法可以看出。SQL> create index tt on cluster tt(prod_id);create index tt on cluster tt(prod_id) *ERROR at line 1:ORA-02158: invalid CREATE INDEX option-----第二步,创建cluster index;SQL> create index tt on cluster tt;Index created.
然后,第三步就是往聚集中添加表。SQL> create table tt1 2 cluster tt(prod_id) 3 as 4 select * from sales where prod_id =13;Table created.SQL> create table tt2 2 cluster tt(prod_id) 3 as 4 select * from sales where prod_id =15;Table created.
最后,我们查看一下cluster tt在动态性能视图中的信息。
----通过user_clusters 我们可以看到创建cluster的时候的参数。
SQL> select cluster_name,pct_free,pct_used,key_size,ini_trans,max_trans,initial_extent,next_extent,min_extents,max_extents,pct_increase,cluster_type,single_table,dependencies from user_clusters where 2 cluster_name ='TT';CLUSTER_NAME PCT_FREE PCT_USED KEY_SIZE INI_TRANS MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE------------------------------ ---------- ---------- ---------- ---------- ---------- -------------- ----------- ----------- ----------- ------------CLUST SINGLE_TAB DEPENDEN----- ---------- --------TT 10 512 2 255 106496 57344 1 2147483645INDEX N DISABLED
-----通过查看user_clu_columns我们可以看到该cluster中有两个表。
SQL> select * from user_clu_columns;CLUST CLU_COLUMN TABLE TAB_COLUMN----- ---------- ----- ----------TT PROD_ID TT1 PROD_IDTT PROD_ID TT2 PROD_ID
3、修改cluster可以通过alter cluster来修改下面三种参数:
1、物理属性(initrans和storage parameter)
2、SIZE(分配给每个cluster key的字节空间)
3、并发度
-----修改cluster key sizeSQL> alter cluster tt size 560;Cluster altered.SQL> select cluster_name,key_size from user_clusters where cluster_name ='TT';CLUST KEY_SIZE----- ----------TT 560
-----修改storage参数和parallel参数;SQL> alter cluster tt storage(next 30k) parallel 3;Cluster altered.SQL> select cluster_name,next_extent,degree from user_clusters where cluster_name ='TT';CLUST NEXT_EXTENT DEGREE----- ----------- --------------------TT 32768 3
另外需要注意的是,对于聚集表,alter table 不能修改该表对应上面的这些参数,否则会报错:ORA-01771,
illegal option for a clustered table。因为聚集表为了方便管理,必须覆盖所有聚集表的上面三种参数信息,以保持信息的一致性。为此,alter table 只能修改逻辑参数信息,如column的增删改操作、constraint的增删改操作等信息。
4、删除cluster
删除cluster table:
SQL> drop table tt1;Table dropped.----删除表TT1之后,会发现一个有趣的现象,就是user_clu_columns中依然有删除表的信息,只是名字改变罢了。
----显然这是表还在回收站中的缘故,清空一下回收站,然后再查看user_clu_columns,删除的表就不见了!
SQL> select * from user_clu_columns;CLUST CLU_COLUMN TABLE TAB_COLUMN----- ---------- ----- ----------TT PROD_ID BIN$l PROD_ID 5irW+ YqREa GPiS+ 9tpLN w==$0TT PROD_ID TT2 PROD_IDSQL> purge recyclebin;Recyclebin purged.SQL> select * from user_clu_columns;CLUST CLU_COLUMN TABLE TAB_COLUMN----- ---------- ----- ----------TT PROD_ID TT2 PROD_ID
删除cluster index:
SQL>drop index tt;
删除cluster:
SQL>DROP CLUSTER TT;---只是删除聚集;SQL>DROP CLUSTER TT INCLUDING TABLES CASCADE;----删除聚集的同时,删除聚集表;SQL>DROP CLUSTER TT INCLUDING TABLES CASCADE CONSTRAINTS;--若是外键表,则连带删除外键表。
- 【对象管理】cluster
- redis cluster 管理
- redis cluster 管理!
- redis cluster window 集群管理
- Sun Cluster 的日常维护和管理
- 管理11g RAC之Cluster实验
- mysql cluster管理节点启动报错
- mysql cluster管理节点配置详解
- Redis Cluster 集群的实现和管理
- Redis Cluster部署、管理和测试
- Redis Cluster部署、管理和测试
- Redis Cluster部署、管理和测试
- cluster
- Cluster
- cluster
- Cluster
- Cluster
- 对象管理
- NDK开发环境搭建_r8
- 第六章 临时工具链的创建
- android 拨号盘Contact模块讲解(四)
- Android避免内存泄露:合理使用getContext()和getApplication()
- 中午梦到女神
- 【对象管理】cluster
- Delphi中关于idtcpserver的使用解答(转)
- 软件项目经理必备素质2
- 搜索时,怎样排除不需要的关键字
- redhat/centos 6.3 搭建git/gitosis/gitweb详细过程(1)
- 闪回事务查询
- POJ 2007 Scrambled Polygon(极角排序)
- jquery easyui的treegrid的级联扩展
- ASCII码表