記一次Oracle分區表全局索引重建的過程

1、查詢數據庫各個表空間利用率:

 

SELECT Upper(F.TABLESPACE_NAME) "表空間名",
D.TOT_GROOTTE_MB "表空間大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空間(M)",
To_char(Round((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
2),
'990.99') || '%' "使用比",
F.TOTAL_BYTES "空閒空間(M)",
F.MAX_BYTES "最大塊(M)"
FROM (SELECT TABLESPACE_NAME,
Round(Sum(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
Round(Max(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
Round(Sum(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 1;

2、根據表空間名稱查詢表的大小:

select SEGMENT_NAME, TABLESPACE_NAME,SEGMENT_TYPE, sum(BYTES / 1024 / 1024 ) || 'M'
from dba_segments
where /*SEGMENT_TYPE = 'TABLE'
AND */TABLESPACE_NAME='TEST'
group by SEGMENT_NAME, TABLESPACE_NAME,SEGMENT_TYPE
ORDER BY sum(BYTES / 1024 / 1024) DESC;

3、根據索引查詢所屬表:

select col.table_owner "table_owner",
idx.table_name "table_name",
col.index_owner "index_owner",
idx.index_name "index_name",
uniqueness "uniqueness",
status,
column_name "column_name",
column_position
from dba_ind_columns col, dba_indexes idx
where col.index_name = idx.index_name
and col.table_name = idx.table_name
and col.table_owner = idx.table_owner
/*and col.table_owner = '&owner'
and col.table_name = '&table_name'*/
and idx.index_name='index1'
order by idx.table_type,
idx.table_name,
idx.index_name,
col.table_owner,
column_position;

4、表索引重建,通過並行方式重建表索引,其中10可以根據Oracle物理機cpu個數更改:

alter index INDEX123456 rebuild online parallel 10;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章