2

我是 Oracle DBMS 的新手,我的任务是更改 Oracle 中的索引表空间,例如从MYDB_DATA_SPACEMYDB_INDX_SPACE

我曾尝试在 Google 上搜索可能的解决方案,并找到了这样的 SQL:

ALTER INDEX idx_city_state
REBUILD TABLESPACE sales_us;

我可以请检查这是否达到目的?

4

1 回答 1

5

是的,这将重建表空间idx_city_state中的索引sales_us。您可以编写一些动态 SQL 来重建所有索引

DECLARE
  l_sql_stmt VARCHAR2(1000);
BEGIN
  FOR i IN (SELECT owner,
                   index_name
              FROM all_indexes
             WHERE tablespace_name = 'MYDB_DATA_SPACE')
  LOOP
    l_sql_stmt := 'ALTER INDEX ' || i.owner || '.' || i.index_name ||
                  '  REBUILD TABLESPACE MYDB_INDX_SPACE';
    EXECUTE IMMEDIATE l_sql_stmt;
  END LOOP;
END;
于 2012-05-02T03:34:25.690 回答