在 Oracle 中重建分割槽表上的索引

2021-10-08 11:40:34 字數 2239 閱讀 9138

在 oracle中,重建普通表上的索引很簡單。要重建特定索引,只需執行如下sql命令:

alter index index_name rebuild;

這裡,index_name 代表索引的名字,下同。

如果重建某個表上的全部索引,執行如下 pl/sql **:

begin

for c1 in (select t.index_name, t.partitioned from user_indexes t where table_name = 'table_name') loop

if c1.partitioned='no' then

execute immediate 'alter index ' || c1.index_name || ' rebuild';

end if;

end loop;

end;

/

這裡,table_name 代表索引的名字,下同。

而重建分割槽表上的索引的方法和上面的有所不同。

如果這個索引不是分割槽的,那麼重建的方法 和 重建普通表上的索引 相同。

如果這個索引是分割槽的,重建方法是執行如下sql**:

begin

for c2 in (select partition_name from user_ind_partitions where index_name='index_name' and status = 'unusable')

loop

execute immediate 'alter index ' || c1.index_name || ' rebuild partition ' || c2.partition_name;

end loop;

end;

重建一張表上的所有非分割槽索引的方法是執行如下sql**:

begin

for c1 in (select t.index_name, t.partitioned from user_indexes t where table_name = 'table_name')

loop

if c1.partitioned='yes'

-- rebuild every unusable partition for partitioned index

for c2 in (select partition_name from user_ind_partitions where index_name=c1.index_name and status = 'unusable')

loop

execute immediate 'alter index ' || c1.index_name || ' rebuild partition ' || c2.partition_name;

end loop;

end if;

end loop;

end;

而重建這張表上的全部索引的sql **如下:

begin

for c1 in (select t.index_name, t.partitioned from user_indexes t where table_name = 'table_name'))

loop

if c1.partitioned='no' then

-- rebuild global index directly

execute immediate 'alter index ' || c1.index_name || ' rebuild';

else

-- rebuild every unusable partition for partitioned index

for c2 in (select partition_name from user_ind_partitions where index_name=c1.index_name and status = 'unusable')

loop

execute immediate 'alter index ' || c1.index_name || ' rebuild partition ' || c2.partition_name;

end loop;

end if;

end loop;

end;

Oracle分割槽表

1 範圍分割槽 range create table range part tab id number,deal date date,area code number,contents varchar2 4000 partition by range deal date partition p201...

Oracle 分割槽表

我們知道在資料庫中,當一張表的資料量增多時,資料的查詢就會變慢,從而影響應用程式的效能。這時我們應該考慮將表分割槽,表分割槽後在邏輯上仍然屬於一張表,只是在物理上儲存在多個檔案中。範圍分割槽將資料基於範圍對映到每乙個分割槽,這個範圍是你在建立分割槽時指定的分割槽鍵決定的。這種分割槽方式是最為常用的,...

oracle 的分割槽表

今早一來,同事說分割槽表無法分割槽了 先手動分割槽,alter table add partition 分割槽名稱 values less than to date 時間 yyyy mm dd 我們使用的是範圍分割槽表 查後發現分割槽表中有幾個分割槽與我們自己定義的分割槽命名規則有些不同,這樣可能造...