Oracle的hash分區

建立hash分區:dom

create table hash_part_tab (id number,deal_date date,area_code number,nbr number,contents varchar2(4000))
partition by hash (deal_date)
PARTITIONS 12 tablespace big01spa

插入數據:3d

insert into hash_part_tab(id,deal_date,area_code,nbr,contents)
select rownum,
to_date( to_char(sysdate-365,'J')+TRUNC(DBMS_RANDOM.VALUE(0,365)),'J'),
ceil(dbms_random.value(590,599)),
ceil(dbms_random.value(18900000001,18999999999)),
rpad('*',400,'*')
from dual
connect by rownum <= 100000;
commit;code

查看分區名稱:blog

select partition_name,
segment_type,
bytes,
'select count(*) from hash_part_tab partition('||partition_name||');'
from user_segments
where segment_name ='HASH_PART_TAB'; 索引

建立索引:hash

create index idx_hash_part_id on hash_part_tab (id) ;
create index idx_hash_part_nbr on hash_part_tab (nbr) local;it

收集統計信息:io

exec dbms_stats.gather_table_stats(ownname => 'SYS',tabname => 'HASH_PART_TAB',estimate_percent => 10,method_opt=> 'for all indexed columns',cascade=>TRUE) ;table

該表是不是分區表,分區表的分區類型是什麼,是否有子分區,分區總數有多少:

select partitioning_type,subpartitioning_type,partition_count from user_part_tables where table_name='HASH_PART_TAB';

該分區表在哪一列上建分區,有無多列聯合建分區:

select column_name,
object_type,
column_position
from user_part_key_columns
where name ='HASH_PART_TAB';

--該分區表有多大:

select sum(bytes) / 1024 / 1024
from user_segments
where segment_name ='HASH_PART_TAB';

該分區表各分區分別有多大,各個分區名是什麼:

select partition_name,
segment_type,
bytes
from user_segments
where segment_name ='HASH_PART_TAB';

 

該分區表的統計信息收集狀況:

select table_name,
partition_name,
last_analyzed,
partition_position,
num_rows
from user_tab_statistics t
where table_name ='HASH_PART_TAB';

 

查該分區表有無索引,分別什麼類型,全局索引是否失效,此外還可看統計信息收集狀況:

select table_name,
index_name,
last_analyzed,
blevel,
num_rows,
leaf_blocks,
distinct_keys,
status
from user_indexes
where table_name ='HASH_PART_TAB';

 

該分區表在哪些列上建了索引:

select index_name,
column_name,
column_position
from user_ind_columns
where table_name = 'HASH_PART_TAB';

該分區表上的各索引分別有多大:

select segment_name,segment_type,sum(bytes)/1024/1024
from user_segments
where segment_name in
(select index_name
from user_indexes
where table_name ='HASH_PART_TAB')
group by segment_name,segment_type ;

 

該分區表的索引段的分配狀況:

select segment_name
partition_name,
segment_type,
bytes
from user_segments
where segment_name in
(select index_name
from user_indexes
where table_name ='HASH_PART_TAB');

 

分區索引相關信息及統計信息、是否失效查看:

select t2.table_name,
t1.index_name,
t1.partition_name,
t1.last_analyzed,
t1.blevel,
t1.num_rows,
t1.leaf_blocks,
t1.status
from user_ind_partitions t1, user_indexes t2
where t1.index_name = t2.index_name
and t2.table_name='HASH_PART_TAB';

相關文章
相關標籤/搜索